System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 423ca7b1cff5f1a82e6d0a8ac3c31c956d953cc7:


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 20 7c 7c 20 4e 45 54 5f 34 37 31 29 20 26 26  7 || NET_471) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0360: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0370: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0380: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0390: 4b 20 7c 7c 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  K || COUNT_HANDL
03a0: 45 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  E..  using Syste
03b0: 6d 2e 54 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65  m.Threading;..#e
03c0: 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20  ndif....  using 
03d0: 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20  System.Xml;.... 
03e0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 44   #region Debug D
03f0: 61 74 61 20 53 74 61 74 69 63 20 43 6c 61 73 73  ata Static Class
0400: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
0410: 4c 45 20 7c 7c 20 44 45 42 55 47 0d 0a 20 20 2f  LE || DEBUG..  /
0420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0430: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 65  /// This class e
0440: 6e 63 61 70 73 75 6c 61 74 65 73 20 73 6f 6d 65  ncapsulates some
0450: 20 74 72 61 63 6b 69 6e 67 20 64 61 74 61 20 74   tracking data t
0460: 68 61 74 20 69 73 20 75 73 65 64 20 66 6f 72 20  hat is used for 
0470: 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 2f 2f 2f  debugging..  ///
0480: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0490: 70 6f 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  poses...  /// </
04a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
04b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
04c0: 73 20 44 65 62 75 67 44 61 74 61 0d 0a 20 20 7b  s DebugData..  {
04d0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
04e0: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69  Private Data..#i
04f0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0500: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0510: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
0520: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
0530: 74 65 63 74 20 73 65 76 65 72 61 6c 20 73 74 61  tect several sta
0540: 74 69 63 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20  tic fields...   
0550: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0560: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0570: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0580: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
0590: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
05a0: 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
05b0: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0610: 6f 6e 20 43 72 69 74 69 63 61 6c 20 48 61 6e 64  on Critical Hand
0620: 6c 65 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  le Counts (Debug
0630: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0640: 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
0650: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0660: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 63  // NOTE: These c
0670: 6f 75 6e 74 73 20 72 65 70 72 65 73 65 6e 74 20  ounts represent 
0680: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
0690: 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 0d   of outstanding.
06a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
06b0: 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64 29 20 43  (non-disposed) C
06c0: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 64 65  riticalHandle de
06d0: 72 69 76 65 64 20 6f 62 6a 65 63 74 20 69 6e 73  rived object ins
06e0: 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 2f 2f  tances..      //
06f0: 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20 62         created b
0700: 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 61  y this library a
0710: 6e 64 20 61 72 65 20 70 72 69 6d 61 72 69 6c 79  nd are primarily
0720: 20 66 6f 72 20 75 73 65 20 62 79 0d 0a 20 20 20   for use by..   
0730: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
0740: 74 65 73 74 20 73 75 69 74 65 2e 20 20 54 68 65  test suite.  The
0750: 73 65 20 63 6f 75 6e 74 73 20 61 72 65 20 69 6e  se counts are in
0760: 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65  cremented by the
0770: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0780: 20 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6e 73   associated cons
0790: 74 72 75 63 74 6f 72 73 20 61 6e 64 20 61 72 65  tructors and are
07a0: 20 64 65 63 72 65 6d 65 6e 74 65 64 20 75 70 6f   decremented upo
07b0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
07c0: 20 20 20 20 20 20 73 75 63 63 65 73 73 66 75 6c        successful
07d0: 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74   completion of t
07e0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 52 65  he associated Re
07f0: 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a 20 20 20  leaseHandle..   
0800: 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 74 68     //       meth
0810: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ods...      //..
0820: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0830: 74 61 74 69 63 20 69 6e 74 20 63 6f 6e 6e 65 63  tatic int connec
0840: 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  tionCount;..    
0850: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0860: 63 20 69 6e 74 20 73 74 61 74 65 6d 65 6e 74 43  c int statementC
0870: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0880: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0890: 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a 20   backupCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 6c 6f 62 43 6f 75  atic int blobCou
08c0: 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  nt;..#endif..   
08d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
08e0: 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0940: 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64 20  n Settings Read 
0950: 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42 75  Counts (Debug Bu
0960: 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44  ild Only)..#if D
0970: 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  EBUG..      /// 
0980: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0990: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
09a0: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
09b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
09c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
09d0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
09e0: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20   /// settings.  
09f0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0a00: 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65   is only recorde
0a10: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0a20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
0a30: 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  / "Debug" build 
0a40: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0a70: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0a80: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0a90: 74 3e 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f  t> settingReadCo
0aa0: 75 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  unts;....      /
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 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0b20: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0b30: 73 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  s the read count
0b40: 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d  s for the runtim
0b50: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
0b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
0b70: 6e 67 73 20 76 69 61 20 74 68 65 20 58 4d 4c 20  ngs via the XML 
0b80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
0b90: 6c 65 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  le.  This inform
0ba0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0d 0a 20  ation is only.. 
0bb0: 20 20 20 20 20 2f 2f 2f 20 72 65 63 6f 72 64 65       /// recorde
0bc0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0bd0: 69 6e 20 74 68 65 20 22 44 65 62 75 67 22 20 62  in the "Debug" b
0be0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0bf0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0c10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0c20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0c30: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 46  g, int> settingF
0c40: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a  ileReadCounts;..
0c50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
0c60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0c70: 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0cc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 74 68       #region Oth
0cd0: 65 72 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  er Counts (Debug
0ce0: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0cf0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0d00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0d10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
0d20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 6d  tionary stores m
0d30: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 63 6f 75  iscellaneous cou
0d40: 6e 74 73 20 75 73 65 64 20 66 6f 72 20 64 65 62  nts used for deb
0d50: 75 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  ugging..      //
0d60: 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 54 68 69  / purposes.  Thi
0d70: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0d80: 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77   only recorded w
0d90: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20  hen compiled in 
0da0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22  the..      /// "
0db0: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0dc0: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0de0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0df0: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0e00: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0e10: 6f 74 68 65 72 43 6f 75 6e 74 73 3b 0d 0a 23 65  otherCounts;..#e
0e20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
0e30: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 23 65  region..      #e
0e40: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0e50: 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0ea0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
0eb0: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  lic Methods..#if
0ec0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f   DEBUG..      //
0ed0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0ee0: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 64     /// Creates d
0ef0: 69 63 74 69 6f 6e 61 72 69 65 73 20 75 73 65 64  ictionaries used
0f00: 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 72 65   to store the re
0f10: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 65 61  ad counts for ea
0f20: 63 68 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ch of..      ///
0f30: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0f40: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
0f50: 6e 67 73 2e 20 20 54 68 65 73 65 20 6e 75 6d 62  ngs.  These numb
0f60: 65 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ers are used for
0f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 65 62 75  ..      /// debu
0f80: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
0f90: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
0fa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0fb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75  mmary>..      pu
0fc0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
0fd0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
0fe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0ff0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1000: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1020: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1030: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
1040: 72 65 61 74 65 20 74 68 65 20 64 69 63 74 69 6f  reate the dictio
1050: 6e 61 72 69 65 73 20 6f 66 20 73 74 61 74 69 73  naries of statis
1060: 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 0d 0a  tics that will..
1070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1080: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 20 74         contain t
1090: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d  he number of tim
10a0: 65 73 20 65 61 63 68 20 73 65 74 74 69 6e 67 20  es each setting 
10b0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
10c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
10d0: 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20  s been read...  
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1100: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
1110: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1140: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1150: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1170: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1180: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d  ileReadCounts ==
1190: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
11a0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
11b0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20  gFileReadCounts 
11c0: 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
11d0: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b  <string, int>();
11e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11f0: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
1200: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  herCounts = new 
1230: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1240: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20 20 20 20  g, int>();..    
1250: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1260: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
12c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12d0: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68    /// Queries th
12e0: 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f  e read counts fo
12f0: 72 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f  r the runtime co
1300: 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74  nfiguration sett
1310: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
1320: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
1330: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
1340: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
1350: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
1360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1380: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1390: 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20  iaFile">..      
13a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
13b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
13c0: 74 74 69 6e 67 73 20 77 65 72 65 20 72 65 61 64  ttings were read
13d0: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20   from the XML.. 
13e0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
13f0: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
1400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1420: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1430: 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20 73   A copy of the s
1440: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
1450: 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e 74  e specified runt
1460: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
1470: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
1480: 74 69 6e 67 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  tings -OR- null 
1490: 69 66 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  if they are not 
14a0: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
14b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
14c0: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73  ..      public s
14d0: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74  tatic object Get
14e0: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
14f0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  s(..          bo
1500: 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20  ol viaFile..    
1510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1520: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1530: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1540: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1560: 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20   (viaFile)..    
1570: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1590: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
15a0: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
15b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15d0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
15e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15f0: 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  n new Dictionary
1600: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 73 65  <string, int>(se
1610: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1620: 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nts);..         
1630: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1640: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1650: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1670: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1680: 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  unts == null).. 
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
16b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
16d0: 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
16e0: 69 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e  ing, int>(settin
16f0: 67 52 65 61 64 43 6f 75 6e 74 73 29 3b 0d 0a 20  gReadCounts);.. 
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1710: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1720: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1780: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1790: 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73        /// Clears
17a0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73   the read counts
17b0: 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65   for the runtime
17c0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
17d0: 65 74 74 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  ettings...      
17e0: 2f 2f 2f 20 54 68 65 73 65 20 6e 75 6d 62 65 72  /// These number
17f0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64  s are used for d
1800: 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73  ebugging and tes
1810: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20 6f 6e  ting purposes on
1820: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
1830: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1840: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1850: 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20  ="viaFile">..   
1860: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1870: 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1880: 20 73 65 74 74 69 6e 67 73 20 77 65 72 65 20 72   settings were r
1890: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
18a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
18b0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
18c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
18d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
18e0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
18f0: 65 61 72 53 65 74 74 69 6e 67 52 65 61 64 43 6f  earSettingReadCo
1900: 75 6e 74 73 28 0d 0a 20 20 20 20 20 20 20 20 20  unts(..         
1910: 20 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20   bool viaFile.. 
1920: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1930: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1940: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1950: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1960: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1970: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a0: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
19b0: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
19c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74              sett
19e0: 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74  ingFileReadCount
19f0: 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20  s.Clear();..    
1a00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a10: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
1a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a40: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
1a50: 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c  eadCounts != nul
1a60: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a70: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1a80: 67 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65 61  gReadCounts.Clea
1a90: 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
1aa0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ab0: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1ac0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1b30: 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68 65 20   Increments the 
1b40: 72 65 61 64 20 63 6f 75 6e 74 20 66 6f 72 20 74  read count for t
1b50: 68 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e  he specified run
1b60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
1b70: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65  on..      /// se
1b80: 74 74 69 6e 67 2e 20 20 54 68 65 73 65 20 6e 75  tting.  These nu
1b90: 6d 62 65 72 73 20 61 72 65 20 75 73 65 64 20 66  mbers are used f
1ba0: 6f 72 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64  or debugging and
1bb0: 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65   testing purpose
1bc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c  s..      /// onl
1bd0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
1be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bf0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c00: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
1c10: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
1c20: 68 65 20 73 65 74 74 69 6e 67 20 62 65 69 6e 67  he setting being
1c30: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   read...      //
1c40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c60: 65 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20  e="viaFile">..  
1c70: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1c80: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
1c90: 64 20 73 65 74 74 69 6e 67 20 69 73 20 62 65 69  d setting is bei
1ca0: 6e 67 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ng read from the
1cb0: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   XML..      /// 
1cc0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
1cd0: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
1ce0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1cf0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1d00: 64 20 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  d IncrementSetti
1d10: 6e 67 52 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20  ngReadCount(..  
1d20: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1d30: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1d40: 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20  bool viaFile..  
1d50: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1d60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f   {..          lo
1d70: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
1d80: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
1d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1da0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1db0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74    // NOTE: Updat
1dc0: 65 20 73 74 61 74 69 73 74 69 63 73 20 66 6f 72  e statistics for
1dd0: 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 76 61   this setting va
1de0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
1df0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1e00: 20 20 20 20 20 20 69 66 20 28 76 69 61 46 69 6c        if (viaFil
1e10: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1e20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e30: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1e40: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1e50: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1e90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ea0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1eb0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1ec0: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
1ed0: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
1ee0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f00: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f10: 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74  ts[name] = count
1f20: 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20   + 1;..         
1f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1f40: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f60: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f70: 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b  ts.Add(name, 1);
1f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fa0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fb0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1fc0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1fe0: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1ff0: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2020: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2030: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2050: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
2060: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
2070: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
2080: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
20a0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e  tingReadCounts[n
20b0: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
20c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20d0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
2100: 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e  ReadCounts.Add(n
2110: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  ame, 1);..      
2120: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2140: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21c0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
21d0: 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73 2e 20  s the counters. 
21e0: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
21f0: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
2200: 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20  gging and..     
2210: 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70 75 72   /// testing pur
2220: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
2230: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2240: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2250: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2260: 2f 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20  / A copy of the 
2270: 63 6f 75 6e 74 65 72 73 20 2d 4f 52 2d 20 6e 75  counters -OR- nu
2280: 6c 6c 20 69 66 20 74 68 65 79 20 61 72 65 20 6e  ll if they are n
2290: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
22a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
22b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ns>..      publi
22c0: 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  c static object 
22d0: 47 65 74 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  GetOtherCounts()
22e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
22f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
2300: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2310: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2320: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2330: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
2340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2350: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
2360: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2370: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63 74   return new Dict
2380: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69  ionary<string, i
2390: 6e 74 3e 28 6f 74 68 65 72 43 6f 75 6e 74 73 29  nt>(otherCounts)
23a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
23b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2410: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65  >..      /// Cle
2430: 61 72 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73  ars the counters
2440: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
2450: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
2460: 62 75 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20  bugging and..   
2470: 20 20 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70     /// testing p
2480: 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20  urposes only... 
2490: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24a0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ry>..      publi
24b0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
24c0: 65 61 72 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  earOtherCounts()
24d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
24e0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
24f0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2510: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2520: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
2530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2540: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 43     otherCounts.C
2550: 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20  lear();..       
2560: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
2570: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
25d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
25e0: 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68  // Increments th
25f0: 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 75 6e  e specified coun
2600: 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
2610: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2620: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2630: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
2640: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
2650: 20 74 68 65 20 63 6f 75 6e 74 65 72 20 62 65 69   the counter bei
2660: 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0d  ng incremented..
2670: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2680: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
2690: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  c static void In
26a0: 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
26b0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  t(..          st
26c0: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
26d0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
26e0: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
26f0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
2700: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2720: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 21 3d 20  (otherCounts != 
2730: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2740: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2750: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2760: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2770: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
2780: 68 65 72 43 6f 75 6e 74 73 2e 54 72 79 47 65 74  herCounts.TryGet
2790: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20  Value(name, out 
27a0: 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20 20  count))..       
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
27c0: 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  therCounts[name]
27d0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2800: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68               oth
2810: 65 72 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d  erCounts.Add(nam
2820: 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  e, 1);..        
2830: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2840: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 23     }..      }..#
2850: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
2860: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65  dregion..  }..#e
2870: 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
2880: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
28e0: 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
28f0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  s Static Class..
2900: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2910: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74  .  /// This stat
2920: 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65  ic class provide
2930: 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74  s some methods t
2940: 68 61 74 20 61 72 65 20 73 68 61 72 65 64 20 62  hat are shared b
2950: 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f  etween the..  //
2960: 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  / native library
2970: 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20   pre-loader and 
2980: 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a  other classes...
2990: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29a0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
29b0: 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72  tic class Helper
29c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20  Methods..  {..  
29d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
29e0: 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
29f0: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a00: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a10: 79 4e 75 6c 6c 4f 62 6a 65 63 74 20 3d 20 22 3c  yNullObject = "<
2a20: 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22 3b 0d 0a 20  nullObject>";.. 
2a30: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a40: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a50: 79 45 6d 70 74 79 53 74 72 69 6e 67 20 3d 20 22  yEmptyString = "
2a60: 3c 65 6d 70 74 79 53 74 72 69 6e 67 3e 22 3b 0d  <emptyString>";.
2a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2a80: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2a90: 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 20  layStringFormat 
2aa0: 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a  = "\"{0}\"";....
2ab0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b00: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
2b10: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
2b20: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 20 3d  splayNullArray =
2b30: 20 22 3c 6e 75 6c 6c 41 72 72 61 79 3e 22 3b 0d   "<nullArray>";.
2b40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2b50: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2b60: 6c 61 79 45 6d 70 74 79 41 72 72 61 79 20 3d 20  layEmptyArray = 
2b70: 22 3c 65 6d 70 74 79 41 72 72 61 79 3e 22 3b 0d  "<emptyArray>";.
2b80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
2be0: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2bf0: 72 72 61 79 4f 70 65 6e 20 3d 20 27 5b 27 3b 0d  rrayOpen = '[';.
2c00: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c10: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 6c 65 6d  onst string Elem
2c20: 65 6e 74 53 65 70 61 72 61 74 6f 72 20 3d 20 22  entSeparator = "
2c30: 2c 20 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76  , ";..      priv
2c40: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2c50: 72 72 61 79 43 6c 6f 73 65 20 3d 20 27 5d 27 3b  rrayClose = ']';
2c60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
2cc0: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
2cd0: 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 70 61 63  only char[] Spac
2ce0: 65 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20 20  eChars = {..    
2cf0: 20 20 20 20 20 20 27 5c 74 27 2c 20 27 5c 6e 27        '\t', '\n'
2d00: 2c 20 27 5c 72 27 2c 20 27 5c 76 27 2c 20 27 5c  , '\r', '\v', '\
2d10: 66 27 2c 20 27 20 27 0d 0a 20 20 20 20 20 20 7d  f', ' '..      }
2d20: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
2d30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d90: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2da0: 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
2db0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2dc0: 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69   /// This lock i
2dd0: 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63  s used to protec
2de0: 74 20 74 68 65 20 73 74 61 74 69 63 20 3c 73 65  t the static <se
2df0: 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e 6f 22 20  e cref="isMono" 
2e00: 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20 20 20 20  /> field...     
2e10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e20: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
2e30: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
2e40: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
2e50: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2e60: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
2e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
2ec0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2ed0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 74 79 70      /// This typ
2ee0: 65 20 69 73 20 6f 6e 6c 79 20 70 72 65 73 65 6e  e is only presen
2ef0: 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  t when running o
2f00: 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f  n Mono...      /
2f10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2f20: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2f30: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
2f40: 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54  ing MonoRuntimeT
2f50: 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74  ype = "Mono.Runt
2f60: 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ime";....      /
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2fc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fd0: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
2fe0: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
2ff0: 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
3000: 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61 6c  n Mono.  Initial
3010: 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d 0a  ly null, it is..
3020: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62 79        /// set by
3030: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
3040: 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f  IsMono" /> metho
3050: 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20 63  d on its first c
3060: 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74 0d  all.  Later, it.
3070: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65  .      /// is re
3080: 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d 20  turned verbatim 
3090: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
30a0: 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74  ="IsMono" /> met
30b0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
30c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30d0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
30e0: 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20   bool? isMono = 
30f0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  null;....      /
3100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3140: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3150: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3160: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
3170: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
3180: 77 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20  we successfully 
3190: 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a 20 20 20  invoked the..   
31a0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
31b0: 3d 22 44 65 62 75 67 67 65 72 2e 42 72 65 61 6b  ="Debugger.Break
31c0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 49 6e  " /> method.  In
31d0: 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74  itially null, it
31e0: 20 69 73 20 73 65 74 20 62 79 0d 0a 20 20 20 20   is set by..    
31f0: 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
3200: 72 65 66 3d 22 4d 61 79 62 65 42 72 65 61 6b 49  ref="MaybeBreakI
3210: 6e 74 6f 44 65 62 75 67 67 65 72 22 20 2f 3e 20  ntoDebugger" /> 
3220: 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69  method on its fi
3230: 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20  rst call...     
3240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3250: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
3260: 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64 65 62 75  tatic bool? debu
3270: 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75 6c 6c  ggerBreak = null
3280: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
3290: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
32a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32f0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
3300: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f  Methods..      /
3310: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3320: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
3330: 65 73 20 74 68 65 20 49 44 20 6f 66 20 74 68 65  es the ID of the
3340: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
3350: 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66 6f 72  .  Only used for
3360: 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20 20 20   debugging...   
3370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3390: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
33a0: 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68 65 20  / The ID of the 
33b0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
33c0: 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74 20  -OR- zero if it 
33d0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
33e0: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
33f0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3400: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3410: 63 20 69 6e 74 20 47 65 74 50 72 6f 63 65 73 73  c int GetProcess
3420: 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  Id()..      {.. 
3430: 20 20 20 20 20 20 20 20 20 50 72 6f 63 65 73 73           Process
3440: 20 70 72 6f 63 65 73 73 20 3d 20 50 72 6f 63 65   process = Proce
3450: 73 73 2e 47 65 74 43 75 72 72 65 6e 74 50 72 6f  ss.GetCurrentPro
3460: 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  cess();....     
3470: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3480: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
3490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34a0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
34b0: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 2e 49  return process.I
34c0: 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  d;..      }.... 
34d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3520: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3530: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3540: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3550: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3560: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3570: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
3580: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
35a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
35b0: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
35c0: 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75  s assembly is ru
35d0: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
35e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
35f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
3600: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
3610: 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20  IsMono()..      
3620: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
3630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
3650: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
3660: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
3670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3680: 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e         if (isMon
3690: 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  o == null)..    
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b0: 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65    isMono = (Type
36c0: 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e  .GetType(MonoRun
36d0: 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c  timeType) != nul
36e0: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
36f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3700: 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20  (bool)isMono;.. 
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3720: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3730: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3740: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3750: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
3760: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
3770: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3780: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
3790: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
37a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3800: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49  .      #region I
3810: 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
3820: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3840: 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65  Resets the cache
3850: 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  d value for the 
3860: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
3870: 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72  reakIntoDebugger
3880: 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  "..      /// con
3890: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
38a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
38b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
38c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
38d0: 20 76 6f 69 64 20 52 65 73 65 74 42 72 65 61 6b   void ResetBreak
38e0: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a  IntoDebugger()..
38f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3900: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3910: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3920: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3930: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
3940: 61 6b 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ak = null;..    
3950: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
3960: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
39c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
39d0: 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 22 50 72    /// If the "Pr
39e0: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65 61  eLoadSQLite_Brea
39f0: 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20 63  kIntoDebugger" c
3a00: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
3a10: 74 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 2f  ting is..      /
3a20: 2f 2f 20 70 72 65 73 65 6e 74 20 28 65 2e 67 2e  // present (e.g.
3a30: 20 76 69 61 20 74 68 65 20 65 6e 76 69 72 6f 6e   via the environ
3a40: 6d 65 6e 74 29 2c 20 67 69 76 65 20 74 68 65 20  ment), give the 
3a50: 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72  interactive user
3a60: 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f   an..      /// o
3a70: 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 61 74  pportunity to at
3a80: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
3a90: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  to the current p
3aa0: 72 6f 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73  rocess; otherwis
3ab0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  e,..      /// do
3ac0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
3ad0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3ae0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
3af0: 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
3b00: 65 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67  eBreakIntoDebugg
3b10: 65 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  er()..      {.. 
3b20: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
3b30: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
3b40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3b50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
3b60: 65 62 75 67 67 65 72 42 72 65 61 6b 20 21 3d 20  ebuggerBreak != 
3b70: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3b80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
3b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55  .          if (U
3bb0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
3bc0: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
3bd0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
3be0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
3bf0: 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65 62  ite_BreakIntoDeb
3c00: 75 67 67 65 72 22 2c 20 6e 75 6c 6c 29 20 21 3d  ugger", null) !=
3c10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3c20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3c30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3c40: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
3c50: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
3c60: 20 43 6f 6e 73 6f 6c 65 20 69 6e 20 6f 72 64 65   Console in orde
3c70: 72 20 74 6f 20 70 72 6f 6d 70 74 20 74 68 65 0d  r to prompt the.
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3c90: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 61 63 74  /       interact
3ca0: 69 76 65 20 75 73 65 72 20 28 69 66 20 61 6e 79  ive user (if any
3cb0: 29 2e 20 20 54 68 69 73 20 6d 61 79 20 66 61 69  ).  This may fai
3cc0: 6c 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 20  l for any..     
3cd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3ce0: 20 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 61 73    number of reas
3cf0: 6f 6e 73 2e 20 20 45 76 65 6e 20 69 6e 20 74 68  ons.  Even in th
3d00: 6f 73 65 20 63 61 73 65 73 2c 20 77 65 20 73 74  ose cases, we st
3d10: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
3d20: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 61 6e 74     //       want
3d30: 20 74 6f 20 69 73 73 75 65 20 74 68 65 20 61 63   to issue the ac
3d40: 74 75 61 6c 20 72 65 71 75 65 73 74 20 74 6f 20  tual request to 
3d50: 62 72 65 61 6b 20 69 6e 74 6f 20 74 68 65 0d 0a  break into the..
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3d70: 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72 2e         debugger.
3d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3d90: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
3da0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
3db0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3dc0: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c            Consol
3dd0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
3de0: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e00: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
3e10: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e30: 20 20 20 20 22 41 74 74 61 63 68 20 61 20 64 65      "Attach a de
3e40: 62 75 67 67 65 72 20 74 6f 20 70 72 6f 63 65 73  bugger to proces
3e50: 73 20 7b 30 7d 20 22 20 2b 0d 0a 20 20 20 20 20  s {0} " +..     
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 20 22 61 6e 64 20 70 72 65 73 73 20 61 6e 79 20   "and press any 
3e80: 6b 65 79 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2e  key to continue.
3e90: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
3ea0: 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f            GetPro
3eb0: 63 65 73 73 49 64 28 29 29 29 3b 0d 0a 0d 0a 23  cessId()));....#
3ec0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
3ed0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4c 69 6e 65  Console.ReadLine
3f00: 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ();..#else..    
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f                Co
3f20: 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 29 3b  nsole.ReadKey();
3f30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
3f40: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
3f50: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
3f60: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
3f80: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3f90: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3fa0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
3fb0: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
3fc0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
3fd0: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
3fe0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
3ff0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
4000: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4030: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4040: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
4050: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
4060: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4080: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
4090: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65 64           "Failed
40c0: 20 74 6f 20 69 73 73 75 65 20 64 65 62 75 67 67   to issue debugg
40d0: 65 72 20 70 72 6f 6d 70 74 2c 20 22 20 2b 0d 0a  er prompt, " +..
40e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40f0: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 20 6d            "{0} m
4100: 61 79 20 62 65 20 75 6e 75 73 61 62 6c 65 3a 20  ay be unusable: 
4110: 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4130: 20 74 79 70 65 6f 66 28 43 6f 6e 73 6f 6c 65 29   typeof(Console)
4140: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
4150: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
4160: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4170: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
4180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
41b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
41d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
41e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
41f0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4220: 20 20 20 44 65 62 75 67 67 65 72 2e 42 72 65 61     Debugger.Brea
4230: 6b 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  k();....        
4240: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4250: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4270: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4280: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4290: 67 67 65 72 42 72 65 61 6b 20 3d 20 74 72 75 65  ggerBreak = true
42a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
42b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
42c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
42d0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
4310: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
4320: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4340: 20 20 20 64 65 62 75 67 67 65 72 42 72 65 61 6b     debuggerBreak
4350: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4380: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 20 20 20 20      throw;..    
4390: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
43a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
43b0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
43c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
43d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
43e0: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58         // BUGFIX
43f0: 3a 20 54 68 65 72 65 20 69 73 20 28 61 6c 6d 6f  : There is (almo
4400: 73 74 29 20 6e 6f 20 70 6f 69 6e 74 20 69 6e 20  st) no point in 
4410: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
4420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4430: 2f 2f 20 20 20 20 20 20 20 20 20 61 73 73 6f 63  //         assoc
4440: 69 61 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74  iated configurat
4450: 69 6f 6e 20 73 65 74 74 69 6e 67 20 72 65 70 65  ion setting repe
4460: 61 74 65 64 6c 79 2e 0d 0a 20 20 20 20 20 20 20  atedly...       
4470: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4480: 20 20 50 72 65 76 65 6e 74 20 74 68 61 74 20 68    Prevent that h
4490: 65 72 65 20 62 79 20 73 65 74 74 69 6e 67 20 74  ere by setting t
44a0: 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65 0d  he cached value.
44b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
44c0: 2f 20 20 20 20 20 20 20 20 20 74 6f 20 66 61 6c  /         to fal
44d0: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se...           
44e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
44f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
4500: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
4510: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
4530: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 66  ebuggerBreak = f
4540: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
4550: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4560: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
4570: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
45c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
45d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
45e0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
45f0: 20 49 44 20 6f 66 20 74 68 65 20 63 75 72 72 65   ID of the curre
4600: 6e 74 20 74 68 72 65 61 64 2e 20 20 4f 6e 6c 79  nt thread.  Only
4610: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
4620: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
4630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4640: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4650: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 49  .      /// The I
4660: 44 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  D of the current
4670: 20 74 68 72 65 61 64 20 2d 4f 52 2d 20 7a 65 72   thread -OR- zer
4680: 6f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  o if it cannot b
4690: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
46a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
46b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
46c0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 47  nal static int G
46d0: 65 74 54 68 72 65 61 64 49 64 28 29 0d 0a 20 20  etThreadId()..  
46e0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
46f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4700: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4710: 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69   return AppDomai
4720: 6e 2e 47 65 74 43 75 72 72 65 6e 74 54 68 72 65  n.GetCurrentThre
4730: 61 64 49 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a  adId();..#else..
4740: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4750: 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20   0;..#endif..   
4760: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
47c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
47d0: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
47e0: 69 6e 65 73 20 69 66 20 70 72 65 70 61 72 69 6e  ines if preparin
47f0: 67 20 61 20 71 75 65 72 79 20 73 68 6f 75 6c 64  g a query should
4800: 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20   be logged...   
4810: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4830: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
4840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
4850: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
4860: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
4870: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
4880: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
4890: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
48a0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
48b0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
48c0: 6f 20 69 66 20 74 68 65 20 71 75 65 72 79 20 70  o if the query p
48d0: 72 65 70 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  reparation shoul
48e0: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
48f0: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
4900: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
4910: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
4920: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
4930: 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a 20 20 20  LogPrepare(..   
4940: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4950: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4960: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4970: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4980: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4990: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
49a0: 67 73 2e 4c 6f 67 50 72 65 70 61 72 65 3b 0d 0a  gs.LogPrepare;..
49b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
49c0: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
49d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
49e0: 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b 0d 0a 20  .LogPrepare);.. 
49f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
4a50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4a60: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
4a70: 69 6e 65 73 20 69 66 20 70 72 65 2d 70 61 72 61  ines if pre-para
4a80: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4a90: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
4aa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4ab0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4ac0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
4ad0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
4ae0: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
4af0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
4b00: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
4b10: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
4b20: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4b30: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4b40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
4b50: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70 72 65  -zero if the pre
4b60: 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  -parameter bindi
4b70: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ng should be log
4b80: 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  ged; otherwise,.
4b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
4ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4bb0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4bc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4bd0: 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64 28 0d 0a  ol LogPreBind(..
4be0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
4bf0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
4c00: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
4c10: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
4c20: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
4c30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4c40: 46 6c 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64  Flags.LogPreBind
4c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
4c60: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
4c70: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
4c80: 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64 29 3b  ags.LogPreBind);
4c90: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
4ca0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
4cf0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4d00: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
4d10: 65 72 6d 69 6e 65 73 20 69 66 20 70 61 72 61 6d  ermines if param
4d20: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f  eter binding sho
4d30: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
4d40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4d50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4d60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
4d70: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
4d80: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
4da0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
4db0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
4dc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4dd0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
4df0: 7a 65 72 6f 20 69 66 20 74 68 65 20 70 61 72 61  zero if the para
4e00: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4e10: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
4e20: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
4e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4e40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4e50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4e60: 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a 20 20 20  ol LogBind(..   
4e70: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4e80: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4e90: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4ea0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4eb0: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4ec0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
4ed0: 67 73 2e 4c 6f 67 42 69 6e 64 3b 0d 0a 20 20 20  gs.LogBind;..   
4ee0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66         return (f
4ef0: 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f  lags == SQLiteCo
4f00: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4f10: 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  gBind);..      }
4f20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
4f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f70: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
4f80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4f90: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
4fa0: 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  f an exception i
4fb0: 6e 20 61 20 6e 61 74 69 76 65 20 63 61 6c 6c 62  n a native callb
4fc0: 61 63 6b 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ack should be lo
4fd0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
4fe0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ff0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5000: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
5010: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
5020: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5030: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5040: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5050: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5060: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5070: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5080: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5090: 68 65 20 65 78 63 65 70 74 69 6f 6e 20 73 68 6f  he exception sho
50a0: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f  uld be logged; o
50b0: 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d  therwise, zero..
50c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
50d0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
50e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
50f0: 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63  l LogCallbackExc
5100: 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20 20 20 20  eptions(..      
5110: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
5120: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
5130: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
5140: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5150: 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65   flags &= SQLite
5160: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
5170: 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70  LogCallbackExcep
5180: 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  tion;..         
5190: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
51a0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
51b0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62  onFlags.LogCallb
51c0: 61 63 6b 45 78 63 65 70 74 69 6f 6e 29 3b 0d 0a  ackException);..
51d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
51e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
51f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5230: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5240: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
5250: 6d 69 6e 65 73 20 69 66 20 62 61 63 6b 75 70 20  mines if backup 
5260: 41 50 49 20 65 72 72 6f 72 73 20 73 68 6f 75 6c  API errors shoul
5270: 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20  d be logged...  
5280: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5290: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
52a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
52b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
52c0: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
52d0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
52e0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
52f0: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
5300: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5310: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5320: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
5330: 72 6f 20 69 66 20 74 68 65 20 62 61 63 6b 75 70  ro if the backup
5340: 20 41 50 49 20 65 72 72 6f 72 20 73 68 6f 75 6c   API error shoul
5350: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
5360: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5370: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5380: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5390: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
53a0: 4c 6f 67 42 61 63 6b 75 70 28 0d 0a 20 20 20 20  LogBackup(..    
53b0: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
53c0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
53d0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69     flags &= SQLi
5400: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
5410: 73 2e 4c 6f 67 42 61 63 6b 75 70 3b 0d 0a 20 20  s.LogBackup;..  
5420: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
5430: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
5440: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5450: 6f 67 42 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  ogBackup);..    
5460: 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52    }....#if INTER
5470: 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
5480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
54e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
54f0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
5500: 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74 68 65 20  logging for the 
5510: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
5520: 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
5530: 73 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s is..      /// 
5540: 64 69 73 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20  disabled...     
5550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
5570: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
5580: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
5590: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
55a0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
55b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
55c0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
55d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
55e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
55f0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
5600: 69 66 20 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74  if logging for t
5610: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
5620: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
5630: 6c 61 73 73 20 69 73 0d 0a 20 20 20 20 20 20 2f  lass is..      /
5640: 2f 2f 20 64 69 73 61 62 6c 65 64 3b 20 6f 74 68  // disabled; oth
5650: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5660: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5670: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5680: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
5690: 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 28 0d 0a 20 20  NoLogModule(..  
56a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
56b0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
56c0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ags..          )
56d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
56e0: 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51       flags &= SQ
56f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5700: 61 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 3b  ags.NoLogModule;
5710: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5720: 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c  rn (flags == SQL
5730: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5740: 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 29 3b  gs.NoLogModule);
5750: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5760: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
57b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
57c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
57d0: 65 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65 20  ermines if <see 
57e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
57f0: 6c 65 22 20 2f 3e 20 65 72 72 6f 72 73 20 73 68  le" /> errors sh
5800: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
5810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5820: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5830: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
5840: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
5850: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
5860: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
5870: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
5880: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
5890: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
58a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
58b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
58c0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
58d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
58e0: 64 75 6c 65 22 20 2f 3e 20 65 72 72 6f 72 20 73  dule" /> error s
58f0: 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b  hould be logged;
5900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65  ..      /// othe
5910: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
5920: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5930: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
5940: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
5950: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 28 0d 0a  ogModuleError(..
5960: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5970: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5980: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
5990: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
59a0: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
59b0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
59c0: 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45  Flags.LogModuleE
59d0: 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
59e0: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
59f0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
5a00: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
5a10: 65 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  eError);..      
5a20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
5a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5a80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5a90: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
5aa0: 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  if <see cref="SQ
5ab0: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65  LiteModule" /> e
5ac0: 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64  xceptions should
5ad0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5ae0: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
5af0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5b00: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5b10: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
5b20: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
5b30: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
5b40: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
5b50: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
5b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
5b70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
5b80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5b90: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
5ba0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
5bb0: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
5bc0: 65 78 63 65 70 74 69 6f 6e 20 73 68 6f 75 6c 64  exception should
5bd0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5be0: 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65  ogged; otherwise
5bf0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
5c00: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5c10: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
5c20: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64  atic bool LogMod
5c30: 75 6c 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  uleException(.. 
5c40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
5c50: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
5c60: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
5c70: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
5c80: 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53        flags &= S
5c90: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
5ca0: 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78  lags.LogModuleEx
5cb0: 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  ception;..      
5cc0: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
5cd0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
5ce0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f  ctionFlags.LogMo
5cf0: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 29 3b 0d  duleException);.
5d00: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
5d10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5d80: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5d90: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
5da0: 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67  ocess is running
5db0: 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57   on one of the W
5dc0: 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f  indows..      //
5dd0: 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d  / [sub-]platform
5de0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
5df0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5e00: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5e10: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
5e20: 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  o when running o
5e30: 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72  n Windows; other
5e40: 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20  wise, zero...   
5e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5e60: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
5e70: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
5e80: 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20  Windows()..     
5e90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c   {..          Pl
5ea0: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
5eb0: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
5ec0: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
5ed0: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
5ee0: 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d     if ((platform
5ef0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
5f00: 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20  .Win32S) ||..   
5f10: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
5f20: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
5f30: 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77  rmID.Win32Window
5f40: 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  s) ||..         
5f50: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
5f60: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
5f70: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
5f80: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
5f90: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
5fa0: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
5fb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
5fd0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
5fe0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
5ff0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
6000: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6060: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6070: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
6080: 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e   a wrapper aroun
6090: 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  d the..      ///
60a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69   <see cref="Stri
60b0: 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61  ng.Format(IForma
60c0: 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e 67  tProvider,String
60d0: 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d  ,Object[])" /> m
60e0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
60f0: 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61  / On Mono, it ha
6100: 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65  s to call the me
6110: 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77 69  thod overload wi
6120: 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20  thout the..     
6130: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
6140: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 22  IFormatProvider"
6150: 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 64   /> parameter, d
6160: 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20 4d  ue to a bug in M
6170: 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ono...      /// 
6180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6190: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
61a0: 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20  e="provider">.. 
61b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
61c0: 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75 72   used for cultur
61d0: 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61  e-specific forma
61e0: 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tting...      //
61f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6200: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6210: 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20  e="format">..   
6220: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61     /// The forma
6230: 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  t string...     
6240: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6250: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6260: 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20  name="args">..  
6270: 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
6280: 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f 20   the objects to 
6290: 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f  format...      /
62a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
62b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
62c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
62d0: 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67  resulting string
62e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
62f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
6300: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
6310: 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d  tring StringForm
6320: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49  at(..          I
6330: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70  FormatProvider p
6340: 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20  rovider,..      
6350: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
6360: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70 61  t,..          pa
6370: 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72  rams object[] ar
6380: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
6390: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
63a0: 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29      if (IsMono()
63b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
63c0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
63d0: 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61 72  ormat(format, ar
63e0: 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
63f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
6400: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
6410: 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64 65  g.Format(provide
6420: 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  r, format, args)
6430: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
6440: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6450: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
64a0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
64b0: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
64c0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
64d0: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
64e0: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
64f0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
6500: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
6510: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
6520: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
6530: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6540: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
6550: 69 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74  isplayNullObject
6560: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
6570: 74 72 69 6e 67 20 73 74 72 69 6e 67 56 61 6c 75  tring stringValu
6580: 65 20 3d 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  e = value.ToStri
6590: 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng();....       
65a0: 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61 6c     if (stringVal
65b0: 75 65 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  ue.Length == 0).
65c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
65d0: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
65e0: 74 79 53 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20  tyString;....   
65f0: 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e         if (strin
6600: 67 56 61 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e  gValue.IndexOfAn
6610: 79 28 53 70 61 63 65 43 68 61 72 73 29 20 3c 20  y(SpaceChars) < 
6620: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
6630: 20 20 72 65 74 75 72 6e 20 73 74 72 69 6e 67 56    return stringV
6640: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
6650: 20 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72     return Helper
6660: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
6670: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
6680: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
6690: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
66a0: 65 2c 20 44 69 73 70 6c 61 79 53 74 72 69 6e 67  e, DisplayString
66b0: 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
66c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 56 61 6c         stringVal
66d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ue);..      }...
66e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
66f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
6740: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
6750: 6f 44 69 73 70 6c 61 79 53 74 72 69 6e 67 28 0d  oDisplayString(.
6760: 0a 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79  .          Array
6770: 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20   array..        
6780: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
6790: 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72 61          if (arra
67a0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
67b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
67c0: 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61   DisplayNullArra
67d0: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
67e0: 69 66 20 28 61 72 72 61 79 2e 4c 65 6e 67 74 68  if (array.Length
67f0: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
6800: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73        return Dis
6810: 70 6c 61 79 45 6d 70 74 79 41 72 72 61 79 3b 0d  playEmptyArray;.
6820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72  ...          Str
6830: 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c  ingBuilder resul
6840: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
6850: 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
6860: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 6f        foreach (o
6870: 62 6a 65 63 74 20 76 61 6c 75 65 20 69 6e 20 61  bject value in a
6880: 72 72 61 79 29 0d 0a 20 20 20 20 20 20 20 20 20  rray)..         
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
68b0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
68d0: 6c 74 2e 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e  lt.Append(Elemen
68e0: 74 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a  tSeparator);....
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6900: 73 75 6c 74 2e 41 70 70 65 6e 64 28 54 6f 44 69  sult.Append(ToDi
6910: 73 70 6c 61 79 53 74 72 69 6e 67 28 76 61 6c 75  splayString(valu
6920: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
6930: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
6940: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
6950: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
6960: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
6970: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6980: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
6990: 20 72 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30   result.Insert(0
69a0: 2c 20 41 72 72 61 79 4f 70 65 6e 2e 54 6f 53 74  , ArrayOpen.ToSt
69b0: 72 69 6e 67 28 29 29 3b 0d 0a 23 65 6c 73 65 0d  ring());..#else.
69c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
69d0: 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20  esult.Insert(0, 
69e0: 41 72 72 61 79 4f 70 65 6e 29 3b 0d 0a 23 65 6e  ArrayOpen);..#en
69f0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
6a00: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
6a10: 6e 64 28 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d  nd(ArrayClose);.
6a20: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
6a30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6a40: 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
6a50: 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ();..      }..  
6a60: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6a70: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
6a80: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
6ae0: 6e 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79  n Native Library
6af0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
6b00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6b10: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
6b20: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
6b30: 20 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20   a thin wrapper 
6b40: 61 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76  around the nativ
6b50: 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f  e library..  ///
6b60: 20 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65   loading feature
6b70: 73 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  s of the underly
6b80: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  ing platform... 
6b90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ba0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
6bb0: 69 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c  ic class NativeL
6bc0: 69 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20  ibraryHelper..  
6bd0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
6be0: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
6bf0: 74 73 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ts..#if !PLATFOR
6c00: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
6c10: 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
6c20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6c30: 2f 2f 20 54 68 65 20 6c 69 73 74 20 6f 66 20 63  // The list of c
6c40: 68 61 72 61 63 74 65 72 73 20 75 73 65 64 20 61  haracters used a
6c50: 73 20 70 61 74 68 20 64 65 6c 69 6d 69 74 65 72  s path delimiter
6c60: 73 20 66 6f 72 20 74 68 69 73 20 70 6c 61 74 66  s for this platf
6c70: 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  orm...      /// 
6c80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6c90: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
6ca0: 20 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d   readonly char[]
6cb0: 20 50 61 74 68 53 65 70 61 72 61 74 6f 72 73 20   PathSeparators 
6cc0: 3d 20 7b 20 50 61 74 68 2e 50 61 74 68 53 65 70  = { Path.PathSep
6cd0: 61 72 61 74 6f 72 20 7d 3b 0d 0a 0d 0a 20 20 20  arator };....   
6ce0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
6d30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6d40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
6d50: 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20  his is the name 
6d60: 6f 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  of the environme
6d70: 6e 74 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74  nt variable cont
6d80: 61 69 6e 69 6e 67 20 74 68 65 20 50 4f 53 49 58  aining the POSIX
6d90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 61 72  ..      /// shar
6da0: 65 64 20 6c 69 62 72 61 72 79 20 73 65 61 72 63  ed library searc
6db0: 68 20 70 61 74 68 2e 20 20 54 68 65 20 76 61 6c  h path.  The val
6dc0: 75 65 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f  ue is assumed to
6dd0: 20 62 65 20 61 20 6c 69 73 74 20 6f 66 0d 0a 20   be a list of.. 
6de0: 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f       /// directo
6df0: 72 69 65 73 2c 20 64 65 6c 69 6d 69 74 65 64 20  ries, delimited 
6e00: 62 79 20 3c 73 65 65 20 63 72 65 66 3d 22 50 61  by <see cref="Pa
6e10: 74 68 2e 50 61 74 68 53 65 70 61 72 61 74 6f 72  th.PathSeparator
6e20: 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  " />...      ///
6e30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6e40: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
6e50: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
6e60: 67 20 4c 64 4c 69 62 72 61 72 79 50 61 74 68 20  g LdLibraryPath 
6e70: 3d 20 22 4c 44 5f 4c 49 42 52 41 52 59 5f 50 41  = "LD_LIBRARY_PA
6e80: 54 48 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  TH";..#endif..  
6e90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6ea0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ef0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
6f00: 6f 6e 20 50 72 69 76 61 74 65 20 44 65 6c 65 67  on Private Deleg
6f10: 61 74 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ates..      /// 
6f20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6f30: 20 2f 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61   /// This delega
6f40: 74 65 20 69 73 20 75 73 65 64 20 74 6f 20 77 72  te is used to wr
6f50: 61 70 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f  ap the concept o
6f60: 66 20 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69  f loading a nati
6f70: 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ve..      /// li
6f80: 62 72 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20  brary, based on 
6f90: 61 20 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64  a file name, and
6fa0: 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c   returning the l
6fb0: 6f 61 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20  oaded module..  
6fc0: 20 20 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d      /// handle..
6fd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6fe0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6ff0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
7000: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
7010: 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d  /// The file nam
7020: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  e of the native 
7030: 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e  library to load.
7040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
7050: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
7060: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
7070: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
7080: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70  module handle up
7090: 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20  on success -OR- 
70a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66  IntPtr.Zero on f
70b0: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
70c0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
70d0: 20 20 20 20 20 70 72 69 76 61 74 65 20 64 65 6c       private del
70e0: 65 67 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61  egate IntPtr Loa
70f0: 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b  dLibraryCallback
7100: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
7110: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
7120: 20 20 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65      );..      #e
7130: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7140: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7190: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
71a0: 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20  vate Methods..  
71b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
71c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
71d0: 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68  empts to load th
71e0: 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
71f0: 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  ve library file 
7200: 75 73 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d  using the Win32.
7210: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d  .      /// API..
7220: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
7230: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7240: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
7250: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
7260: 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d  /// The file nam
7270: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  e of the native 
7280: 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e  library to load.
7290: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
72a0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
72b0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
72c0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
72d0: 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70  module handle up
72e0: 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20  on success -OR- 
72f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66  IntPtr.Zero on f
7300: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
7310: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
7320: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
7330: 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  tic IntPtr LoadL
7340: 69 62 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20  ibraryWin32(..  
7350: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
7360: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
7370: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
7380: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7390: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
73a0: 6f 64 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62  odsWin32.LoadLib
73b0: 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  rary(fileName);.
73c0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
73d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
73e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
7420: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7430: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7440: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7450: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
7460: 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d  tempts to determ
7470: 69 6e 65 20 69 66 20 61 20 64 69 72 65 63 74 6f  ine if a directo
7480: 72 79 20 65 78 69 73 74 73 20 69 6e 20 61 20 73  ry exists in a s
7490: 65 61 72 63 68 20 70 61 74 68 2e 0d 0a 20 20 20  earch path...   
74a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
74b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
74c0: 72 61 6d 20 6e 61 6d 65 3d 22 64 69 72 65 63 74  ram name="direct
74d0: 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ory">..      ///
74e0: 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 74   The directory t
74f0: 6f 20 73 65 61 72 63 68 20 66 6f 72 2e 20 20 54  o search for.  T
7500: 68 69 73 20 69 73 20 63 61 73 65 2d 73 65 6e 73  his is case-sens
7510: 69 74 69 76 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  itive...      //
7520: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7530: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7540: 65 3d 22 70 61 74 68 22 3e 0d 0a 20 20 20 20 20  e="path">..     
7550: 20 2f 2f 2f 20 54 68 65 20 73 65 61 72 63 68 20   /// The search 
7560: 70 61 74 68 20 74 6f 20 69 6e 73 70 65 63 74 2e  path to inspect.
7570: 20 20 54 68 69 73 20 69 73 20 63 61 73 65 2d 73    This is case-s
7580: 65 6e 73 69 74 69 76 65 2e 0d 0a 20 20 20 20 20  ensitive...     
7590: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
75a0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
75b0: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
75c0: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 64 69  n-zero if the di
75d0: 72 65 63 74 6f 72 79 20 65 78 69 73 74 73 20 69  rectory exists i
75e0: 6e 20 74 68 65 20 73 65 61 72 63 68 20 70 61 74  n the search pat
75f0: 68 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  h; otherwise,.. 
7600: 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a       /// zero...
7610: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
7620: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
7630: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
7640: 49 73 44 69 72 65 63 74 6f 72 79 49 6e 50 61 74  IsDirectoryInPat
7650: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  h(..          st
7660: 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d  ring directory,.
7670: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
7680: 67 20 70 61 74 68 0d 0a 20 20 20 20 20 20 20 20  g path..        
7690: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
76a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
76b0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e        // NOTE: N
76c0: 6f 74 68 69 6e 67 20 6d 65 61 6e 69 6e 67 66 75  othing meaningfu
76d0: 6c 20 63 61 6e 20 62 65 20 64 6f 6e 65 20 69 66  l can be done if
76e0: 20 65 69 74 68 65 72 20 6f 66 20 74 68 65 20 70   either of the p
76f0: 61 72 61 6d 65 74 65 72 73 0d 0a 20 20 20 20 20  arameters..     
7700: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
7710: 65 20 6e 75 6c 6c 20 28 6f 72 20 61 6e 20 65 6d  e null (or an em
7720: 70 74 79 20 73 74 72 69 6e 67 29 2e 20 20 54 68  pty string).  Th
7730: 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 20  erefore, return 
7740: 66 61 6c 73 65 20 69 6e 0d 0a 20 20 20 20 20 20  false in..      
7750: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 61      //       tha
7760: 74 20 63 61 73 65 2e 0d 0a 20 20 20 20 20 20 20  t case...       
7770: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
7780: 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
7790: 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
77a0: 6f 72 79 29 20 7c 7c 20 53 74 72 69 6e 67 2e 49  ory) || String.I
77b0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 61 74  sNullOrEmpty(pat
77c0: 68 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h))..           
77d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
77e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  ....          st
77f0: 72 69 6e 67 5b 5d 20 70 61 74 68 44 69 72 65 63  ring[] pathDirec
7800: 74 6f 72 69 65 73 20 3d 20 70 61 74 68 2e 53 70  tories = path.Sp
7810: 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lit(..          
7820: 20 20 20 20 50 61 74 68 53 65 70 61 72 61 74 6f      PathSeparato
7830: 72 73 2c 20 53 74 72 69 6e 67 53 70 6c 69 74 4f  rs, StringSplitO
7840: 70 74 69 6f 6e 73 2e 52 65 6d 6f 76 65 45 6d 70  ptions.RemoveEmp
7850: 74 79 45 6e 74 72 69 65 73 29 3b 0d 0a 0d 0a 20  tyEntries);.... 
7860: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7870: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
7880: 4e 6f 20 73 65 61 72 63 68 20 63 61 6e 20 62 65  No search can be
7890: 20 70 65 72 66 6f 72 6d 65 64 20 69 66 20 74 68   performed if th
78a0: 65 20 6c 69 73 74 20 6f 66 20 70 61 74 68 20 64  e list of path d
78b0: 69 72 65 63 74 6f 72 69 65 73 0d 0a 20 20 20 20  irectories..    
78c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
78d0: 73 20 69 6e 76 61 6c 69 64 20 28 6f 72 20 65 6d  s invalid (or em
78e0: 70 74 79 29 2e 20 20 54 68 65 72 65 66 6f 72 65  pty).  Therefore
78f0: 2c 20 6a 75 73 74 20 72 65 74 75 72 6e 20 66 61  , just return fa
7900: 6c 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lse...          
7910: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
7920: 20 28 28 70 61 74 68 44 69 72 65 63 74 6f 72 69   ((pathDirectori
7930: 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  es == null) || (
7940: 70 61 74 68 44 69 72 65 63 74 6f 72 69 65 73 2e  pathDirectories.
7950: 4c 65 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a 20  Length == 0)).. 
7960: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7970: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
7980: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
7990: 28 73 74 72 69 6e 67 20 70 61 74 68 44 69 72 65  (string pathDire
79a0: 63 74 6f 72 79 20 69 6e 20 70 61 74 68 44 69 72  ctory in pathDir
79b0: 65 63 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20  ectories)..     
79c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
79d0: 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
79e0: 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  .Equals(..      
79f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                pa
7a00: 74 68 44 69 72 65 63 74 6f 72 79 2c 20 64 69 72  thDirectory, dir
7a10: 65 63 74 6f 72 79 2c 20 53 74 72 69 6e 67 43 6f  ectory, StringCo
7a20: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
7a30: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7a40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7a50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
7a60: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
7a70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
7a80: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
7a90: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
7aa0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
7ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 73 75 72  .      /// Ensur
7b20: 65 73 20 74 68 61 74 20 74 68 65 20 64 69 72 65  es that the dire
7b30: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
7b40: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
7b50: 69 6c 65 20 69 73 20 69 6e 63 6c 75 64 65 64 0d  ile is included.
7b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 74 68  .      /// in th
7b70: 65 20 50 4f 53 49 58 20 73 68 61 72 65 64 20 6c  e POSIX shared l
7b80: 69 62 72 61 72 79 20 73 65 61 72 63 68 20 70 61  ibrary search pa
7b90: 74 68 20 76 69 61 20 74 68 65 20 65 6e 76 69 72  th via the envir
7ba0: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
7bb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 4c 44 5f 4c 49  .      /// LD_LI
7bc0: 42 52 41 52 59 5f 50 41 54 48 2e 0d 0a 20 20 20  BRARY_PATH...   
7bd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7be0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
7bf0: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
7c00: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
7c10: 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66  The file name of
7c20: 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72   the native libr
7c30: 61 72 79 20 74 68 61 74 20 77 61 73 20 73 75 63  ary that was suc
7c40: 63 65 73 73 66 75 6c 6c 79 20 6c 6f 61 64 65 64  cessfully loaded
7c50: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
7c60: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
7c70: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
7c80: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
7c90: 66 20 74 68 65 20 50 4f 53 49 58 20 73 68 61 72  f the POSIX shar
7ca0: 65 64 20 6c 69 62 72 61 72 79 20 70 61 74 68 20  ed library path 
7cb0: 77 61 73 20 75 70 64 61 74 65 64 3b 20 6f 74 68  was updated; oth
7cc0: 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
7cd0: 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  // zero...      
7ce0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
7cf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
7d00: 61 74 69 63 20 62 6f 6f 6c 20 4d 61 79 62 65 55  atic bool MaybeU
7d10: 70 64 61 74 65 4c 64 4c 69 62 72 61 72 79 50 61  pdateLdLibraryPa
7d20: 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  th(..          s
7d30: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
7d40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
7d50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7d60: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
7d70: 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
7d80: 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
7d90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
7da0: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
7db0: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
7dc0: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
7dd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7de0: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 20 3d     string path =
7df0: 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74   Environment.Get
7e00: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
7e10: 62 6c 65 28 4c 64 4c 69 62 72 61 72 79 50 61 74  ble(LdLibraryPat
7e20: 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
7e30: 20 20 20 20 20 69 66 20 28 21 49 73 44 69 72 65       if (!IsDire
7e40: 63 74 6f 72 79 49 6e 50 61 74 68 28 64 69 72 65  ctoryInPath(dire
7e50: 63 74 6f 72 79 2c 20 70 61 74 68 29 29 0d 0a 20  ctory, path)).. 
7e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
7e90: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 61 74 68  NullOrEmpty(path
7ea0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
7eb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
7ed0: 61 74 68 20 3d 20 48 65 6c 70 65 72 4d 65 74 68  ath = HelperMeth
7ee0: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
7ef0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
7f10: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
7f20: 6e 74 43 75 6c 74 75 72 65 2c 20 22 7b 30 7d 7b  ntCulture, "{0}{
7f30: 31 7d 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  1}{2}",..       
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f50: 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 50 61     directory, Pa
7f60: 74 68 2e 50 61 74 68 53 65 70 61 72 61 74 6f 72  th.PathSeparator
7f70: 2c 20 70 61 74 68 29 3b 0d 0a 20 20 20 20 20 20  , path);..      
7f80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fa0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
7fb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fd0: 20 20 70 61 74 68 20 3d 20 64 69 72 65 63 74 6f    path = directo
7fe0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
7ff0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6e                En
8010: 76 69 72 6f 6e 6d 65 6e 74 2e 53 65 74 45 6e 76  vironment.SetEnv
8020: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
8030: 28 4c 64 4c 69 62 72 61 72 79 50 61 74 68 2c 20  (LdLibraryPath, 
8040: 70 61 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20  path);..        
8050: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8060: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
8070: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8080: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8090: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
80a0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
80b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
80c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
80f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8100: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8110: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
8120: 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
8130: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
8140: 69 76 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65  ive library file
8150: 20 75 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58   using the POSIX
8160: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e  ..      /// API.
8170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8180: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
8190: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
81a0: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
81b0: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61   /// The file na
81c0: 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  me of the native
81d0: 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64   library to load
81e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
81f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
8200: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8210: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
8220: 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75   module handle u
8230: 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d  pon success -OR-
8240: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20   IntPtr.Zero on 
8250: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
8260: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8270: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
8280: 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64  atic IntPtr Load
8290: 4c 69 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20  LibraryPosix(.. 
82a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
82b0: 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  fileName..      
82c0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
82d0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
82e0: 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
82f0: 64 6c 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  dle = UnsafeNati
8300: 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 64  veMethodsPosix.d
8310: 6c 6f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  lopen(..        
8320: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
8330: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
8340: 6f 64 73 50 6f 73 69 78 2e 52 54 4c 44 5f 44 45  odsPosix.RTLD_DE
8350: 46 41 55 4c 54 29 3b 0d 0a 0d 0a 20 20 20 20 20  FAULT);....     
8360: 20 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 4d       if (nativeM
8370: 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49  oduleHandle != I
8380: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
8390: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
83a0: 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 79 62          if (Mayb
83b0: 65 55 70 64 61 74 65 4c 64 4c 69 62 72 61 72 79  eUpdateLdLibrary
83c0: 50 61 74 68 28 66 69 6c 65 4e 61 6d 65 29 29 0d  Path(fileName)).
83d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
83e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83f0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
8400: 4d 65 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c 63  MethodsPosix.dlc
8410: 6c 6f 73 65 28 6e 61 74 69 76 65 4d 6f 64 75 6c  lose(nativeModul
8420: 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20  eHandle);..     
8430: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
8440: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
8450: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
8460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8470: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
8480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8490: 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
84a0: 64 6c 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  dle;..      }..#
84b0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
84c0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
84d0: 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8520: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
8530: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
8540: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8550: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
8560: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
8570: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
8580: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 2e 0d 0a   library file...
8590: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
85a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
85b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
85c0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
85d0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
85e0: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
85f0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
8600: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
8610: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
8620: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8630: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
8640: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
8650: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
8660: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
8670: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
8680: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
8690: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
86a0: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
86b0: 72 61 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  rary(..         
86c0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
86d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
86e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
86f0: 20 20 4c 6f 61 64 4c 69 62 72 61 72 79 43 61 6c    LoadLibraryCal
8700: 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 20 3d  lback callback =
8710: 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33   LoadLibraryWin3
8720: 32 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  2;....#if !PLATF
8730: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8740: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8750: 69 66 20 28 21 48 65 6c 70 65 72 4d 65 74 68 6f  if (!HelperMetho
8760: 64 73 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d  ds.IsWindows()).
8770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
8780: 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69  allback = LoadLi
8790: 62 72 61 72 79 50 6f 73 69 78 3b 0d 0a 23 65 6e  braryPosix;..#en
87a0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
87b0: 20 72 65 74 75 72 6e 20 63 61 6c 6c 62 61 63 6b   return callback
87c0: 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20  (fileName);..   
87d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
87e0: 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23  region..  }..  #
87f0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
8800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8850: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
8860: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
8870: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
8880: 20 28 50 4f 53 49 58 29 0d 0a 23 69 66 20 21 50   (POSIX)..#if !P
8890: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
88a0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20  RAMEWORK..  /// 
88b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
88c0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
88d0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
88e0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
88f0: 74 69 76 65 20 50 4f 53 49 58 20 41 50 49 73 2e  tive POSIX APIs.
8900: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
8910: 79 3e 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  y>..  [SuppressU
8920: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
8930: 72 69 74 79 5d 0d 0a 20 20 69 6e 74 65 72 6e 61  rity]..  interna
8940: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
8950: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8960: 64 73 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a 20 20  dsPosix..  {..  
8970: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8980: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
8990: 73 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  s structure is u
89a0: 73 65 64 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  sed when running
89b0: 20 6f 6e 20 50 4f 53 49 58 20 6f 70 65 72 61 74   on POSIX operat
89c0: 69 6e 67 20 73 79 73 74 65 6d 73 0d 0a 20 20 20  ing systems..   
89d0: 20 20 20 2f 2f 2f 20 74 6f 20 73 74 6f 72 65 20     /// to store 
89e0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
89f0: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 61  t the current ma
8a00: 63 68 69 6e 65 2c 20 69 6e 63 6c 75 64 69 6e 67  chine, including
8a10: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
8a20: 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 6e  human readable n
8a30: 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  ame of the opera
8a40: 74 69 6e 67 20 73 79 73 74 65 6d 20 61 73 20 77  ting system as w
8a50: 65 6c 6c 20 61 73 20 74 68 61 74 20 6f 66 0d 0a  ell as that of..
8a60: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 75 6e        /// the un
8a70: 64 65 72 6c 79 69 6e 67 20 68 61 72 64 77 61 72  derlying hardwar
8a80: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
8a90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8aa0: 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
8ab0: 75 74 73 6e 61 6d 65 0d 0a 20 20 20 20 20 20 7b  utsname..      {
8ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
8ad0: 69 63 20 73 74 72 69 6e 67 20 73 79 73 6e 61 6d  ic string sysnam
8ae0: 65 3b 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74  e;  /* Name of t
8af0: 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  his implementati
8b00: 6f 6e 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  on of..         
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b20: 20 20 20 20 20 20 20 20 20 20 2a 20 74 68 65 20            * the 
8b30: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
8b40: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  . */..          
8b50: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 6e 6f  public string no
8b60: 64 65 6e 61 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20  dename; /* Name 
8b70: 6f 66 20 74 68 69 73 20 6e 6f 64 65 20 77 69 74  of this node wit
8b80: 68 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hin the..       
8b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ba0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
8bb0: 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 20 6e 65 74  mmunications net
8bc0: 77 6f 72 6b 20 74 6f 20 77 68 69 63 68 0d 0a 20  work to which.. 
8bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bf0: 20 20 2a 20 74 68 69 73 20 6e 6f 64 65 20 69 73    * this node is
8c00: 20 61 74 74 61 63 68 65 64 2c 20 69 66 20 61 6e   attached, if an
8c10: 79 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  y. */..         
8c20: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 72   public string r
8c30: 65 6c 65 61 73 65 3b 20 20 2f 2a 20 43 75 72 72  elease;  /* Curr
8c40: 65 6e 74 20 72 65 6c 65 61 73 65 20 6c 65 76 65  ent release leve
8c50: 6c 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20  l of this..     
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
8c80: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
8c90: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
8ca0: 62 6c 69 63 20 73 74 72 69 6e 67 20 76 65 72 73  blic string vers
8cb0: 69 6f 6e 3b 20 20 2f 2a 20 43 75 72 72 65 6e 74  ion;  /* Current
8cc0: 20 76 65 72 73 69 6f 6e 20 6c 65 76 65 6c 20 6f   version level o
8cd0: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  f this..        
8ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cf0: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 6c             * rel
8d00: 65 61 73 65 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ease. */..      
8d10: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
8d20: 67 20 6d 61 63 68 69 6e 65 3b 20 20 2f 2a 20 4e  g machine;  /* N
8d30: 61 6d 65 20 6f 66 20 74 68 65 20 68 61 72 64 77  ame of the hardw
8d40: 61 72 65 20 74 79 70 65 20 6f 6e 0d 0a 20 20 20  are type on..   
8d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d70: 2a 20 77 68 69 63 68 20 74 68 65 20 73 79 73 74  * which the syst
8d80: 65 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 2a  em is running. *
8d90: 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  /..      }....  
8da0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8df0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8e00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8e10: 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20 69  This structure i
8e20: 73 20 70 61 73 73 65 64 20 64 69 72 65 63 74 6c  s passed directl
8e30: 79 20 74 6f 20 74 68 65 20 50 2f 49 6e 76 6f 6b  y to the P/Invok
8e40: 65 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  e method to..   
8e50: 20 20 20 2f 2f 2f 20 6f 62 74 61 69 6e 20 74 68     /// obtain th
8e60: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  e information ab
8e70: 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20  out the current 
8e80: 6d 61 63 68 69 6e 65 2c 20 69 6e 63 6c 75 64 69  machine, includi
8e90: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
8ea0: 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65  e human readable
8eb0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65   name of the ope
8ec0: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 73  rating system as
8ed0: 20 77 65 6c 6c 20 61 73 0d 0a 20 20 20 20 20 20   well as..      
8ee0: 2f 2f 2f 20 74 68 61 74 20 6f 66 20 74 68 65 20  /// that of the 
8ef0: 75 6e 64 65 72 6c 79 69 6e 67 20 68 61 72 64 77  underlying hardw
8f00: 61 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  are...      /// 
8f10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8f20: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
8f30: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
8f40: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70  ntial)]..      p
8f50: 72 69 76 61 74 65 20 73 74 72 75 63 74 20 75 74  rivate struct ut
8f60: 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 0d 0a 20  sname_interop.. 
8f70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8f80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8f90: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 66 6f 6c  // NOTE: The fol
8fa0: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 66 69  lowing string fi
8fb0: 65 6c 64 73 20 73 68 6f 75 6c 64 20 62 65 20 70  elds should be p
8fc0: 72 65 73 65 6e 74 20 69 6e 0d 0a 20 20 20 20 20  resent in..     
8fd0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
8fe0: 69 73 20 62 75 66 66 65 72 2c 20 61 6c 6c 20 6f  is buffer, all o
8ff0: 66 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20  f which will be 
9000: 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 3a  zero-terminated:
9010: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
9020: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9040: 20 20 73 79 73 6e 61 6d 65 0d 0a 20 20 20 20 20    sysname..     
9050: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
9060: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64               nod
9070: 65 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  ename..         
9080: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20   //             
9090: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
90a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
90b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90c0: 20 20 20 20 76 65 72 73 69 6f 6e 0d 0a 20 20 20      version..   
90d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
90e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
90f0: 61 63 68 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  achine..        
9100: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9110: 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
9120: 61 67 65 64 54 79 70 65 2e 42 79 56 61 6c 41 72  agedType.ByValAr
9130: 72 61 79 2c 20 53 69 7a 65 43 6f 6e 73 74 20 3d  ray, SizeConst =
9140: 20 34 30 39 36 29 5d 0d 0a 20 20 20 20 20 20 20   4096)]..       
9150: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d     public byte[]
9160: 20 62 75 66 66 65 72 3b 0d 0a 20 20 20 20 20 20   buffer;..      
9170: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
9180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
91d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
91e0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
91f0: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
9200: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
9210: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 75 6e  e native Unix un
9220: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ame..      /// f
9230: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
9240: 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74  e POSIX document
9250: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
9260: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
9270: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
9280: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9290: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
92a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
92b0: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
92c0: 2f 2f 20 53 74 72 75 63 74 75 72 65 20 63 6f 6e  // Structure con
92d0: 74 61 69 6e 69 6e 67 20 61 20 70 72 65 61 6c 6c  taining a preall
92e0: 6f 63 61 74 65 64 20 62 79 74 65 20 62 75 66 66  ocated byte buff
92f0: 65 72 20 74 6f 20 66 69 6c 6c 20 77 69 74 68 20  er to fill with 
9300: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72  the..      /// r
9310: 65 71 75 65 73 74 65 64 20 69 6e 66 6f 72 6d 61  equested informa
9320: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
9330: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
9340: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9350: 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 20 66        /// Zero f
9360: 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 6c  or success and l
9370: 65 73 73 20 74 68 61 6e 20 7a 65 72 6f 20 75 70  ess than zero up
9380: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9390: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
93a0: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
93b0: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
93c0: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 63 22 2c  llImport("libc",
93d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
93e0: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
93f0: 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  ernal",..#endif.
9400: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
9410: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
9420: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9430: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 20 20  .Cdecl)]..      
9440: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
9450: 78 74 65 72 6e 20 69 6e 74 20 75 6e 61 6d 65 28  xtern int uname(
9460: 6f 75 74 20 75 74 73 6e 61 6d 65 5f 69 6e 74 65  out utsname_inte
9470: 72 6f 70 20 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  rop name);....  
9480: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
94d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
94e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
94f0: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
9500: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
9510: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
9520: 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20 20 20  Unix dlopen..   
9530: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
9540: 20 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20    See the POSIX 
9550: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
9560: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
9570: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
9580: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
9590: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
95a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
95b0: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
95c0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
95d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
95e0: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
95f0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
9600: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
9610: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
9620: 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ode">..      ///
9630: 20 54 68 69 73 20 6d 75 73 74 20 62 65 20 61 20   This must be a 
9640: 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74  combination of t
9650: 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 62 69  he individual bi
9660: 74 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c 41 5a  t flags RTLD_LAZ
9670: 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 54  Y,..      /// RT
9680: 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f  LD_NOW, RTLD_GLO
9690: 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54 4c 44  BAL, and/or RTLD
96a0: 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20 20 2f  _LOCAL...      /
96b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
96c0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
96d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
96e0: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
96f0: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
9700: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
9710: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
9720: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
9730: 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54  rns>..#if NET_ST
9740: 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20 20  ANDARD_20..     
9750: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62   [DllImport("lib
9760: 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  dl",..#else..   
9770: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
9780: 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e  _Internal",..#en
9790: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 45  dif..          E
97a0: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f  ntryPoint = "dlo
97b0: 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  pen",..         
97c0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
97d0: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
97e0: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
97f0: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
9800: 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20  Ansi,..         
9810: 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20   BestFitMapping 
9820: 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e  = false, ThrowOn
9830: 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d  UnmappableChar =
9840: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
9850: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
9860: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69   true)]..      i
9870: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9880: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f  xtern IntPtr dlo
9890: 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  pen(string fileN
98a0: 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d  ame, int mode);.
98b0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
98c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9910: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9920: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
9930: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
9940: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
9950: 74 69 76 65 20 55 6e 69 78 20 64 6c 63 6c 6f 73  tive Unix dlclos
9960: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  e..      /// fun
9970: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
9980: 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74  POSIX documentat
9990: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
99a0: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
99b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
99c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
99d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
99e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
99f0: 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  odule">..      /
9a00: 2f 2f 20 54 68 65 20 68 61 6e 64 6c 65 20 74 6f  // The handle to
9a10: 20 74 68 65 20 6c 6f 61 64 65 64 20 6e 61 74 69   the loaded nati
9a20: 76 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  ve library...   
9a30: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9a40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9a50: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9a60: 5a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  Zero upon succes
9a70: 73 20 2d 4f 52 2d 20 6e 6f 6e 2d 7a 65 72 6f 20  s -OR- non-zero 
9a80: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9a90: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
9aa0: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
9ab0: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
9ac0: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22  llImport("libdl"
9ad0: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
9ae0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e  [DllImport("__In
9af0: 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66  ternal",..#endif
9b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 45 6e 74 72  ..          Entr
9b10: 79 50 6f 69 6e 74 20 3d 20 22 64 6c 63 6c 6f 73  yPoint = "dlclos
9b20: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43  e",..          C
9b30: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9b40: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9b50: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 53 65 74 4c  tion.Cdecl, SetL
9b60: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
9b70: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
9b80: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9b90: 69 6e 74 20 64 6c 63 6c 6f 73 65 28 49 6e 74 50  int dlclose(IntP
9ba0: 74 72 20 6d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  tr module);.... 
9bb0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9c00: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
9c10: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
9c20: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
9c30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9c40: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
9c50: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
9c60: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a  nction calls laz
9c70: 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ily...      /// 
9c80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9c90: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
9ca0: 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d   int RTLD_LAZY =
9cb0: 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x1;....      /
9cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
9d10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9d20: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
9d30: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
9d40: 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61  bind function ca
9d50: 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  lls immediately.
9d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9d70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
9d80: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
9d90: 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b   RTLD_NOW = 0x2;
9da0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9df0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9e00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9e10: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
9e20: 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20   dlopen(), make 
9e30: 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79  symbols globally
9e40: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
9e50: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9e60: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
9e70: 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  l const int RTLD
9e80: 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b  _GLOBAL = 0x100;
9e90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9ef0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9f00: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
9f10: 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73   dlopen(), oppos
9f20: 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42  ite of RTLD_GLOB
9f30: 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  AL, and the defa
9f40: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
9f50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9f60: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
9f70: 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20   int RTLD_LOCAL 
9f80: 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20  = 0x000;....    
9f90: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
9fe0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9ff0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
a000: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
a010: 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20  ), the defaults 
a020: 75 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  used by this cla
a030: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
a040: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a050: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
a060: 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54  int RTLD_DEFAULT
a070: 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54   = RTLD_NOW | RT
a080: 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 20 20  LD_GLOBAL;..    
a090: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a0a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a0f0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a100: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
a110: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a120: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
a130: 65 73 65 20 61 72 65 20 74 68 65 20 63 68 61 72  ese are the char
a140: 61 63 74 65 72 73 20 75 73 65 64 20 74 6f 20 73  acters used to s
a150: 65 70 61 72 61 74 65 20 74 68 65 20 73 74 72 69  eparate the stri
a160: 6e 67 20 66 69 65 6c 64 73 20 77 69 74 68 69 6e  ng fields within
a170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
a180: 72 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72  raw buffer retur
a190: 6e 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20  ned by the <see 
a1a0: 63 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20  cref="uname" /> 
a1b0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e  P/Invoke method.
a1c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a1d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
a1e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
a1f0: 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 75 74 73  donly char[] uts
a200: 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73 20 3d  NameSeparators =
a210: 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a 20 20 20 20   { '\0' };..    
a220: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a230: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a280: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a290: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
a2a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a2b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a2c0: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
a2d0: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
a2e0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
a2f0: 75 6e 61 6d 65 22 20 2f 3e 20 50 2f 49 6e 76 6f  uname" /> P/Invo
a300: 6b 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ke..      /// me
a310: 74 68 6f 64 20 74 68 61 74 20 65 78 74 72 61 63  thod that extrac
a320: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
a330: 68 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  he human readabl
a340: 65 20 73 74 72 69 6e 67 73 20 66 72 6f 6d 0d 0a  e strings from..
a350: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 61        /// the ra
a360: 77 20 62 75 66 66 65 72 2e 0d 0a 20 20 20 20 20  w buffer...     
a370: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a380: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
a390: 6d 20 6e 61 6d 65 3d 22 75 74 73 4e 61 6d 65 22  m name="utsName"
a3a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
a3b0: 73 20 73 74 72 75 63 74 75 72 65 2c 20 77 68 69  s structure, whi
a3c0: 63 68 20 63 6f 6e 74 61 69 6e 73 20 73 74 72 69  ch contains stri
a3d0: 6e 67 73 2c 20 77 69 6c 6c 20 62 65 20 66 69 6c  ngs, will be fil
a3e0: 6c 65 64 20 62 61 73 65 64 20 6f 6e 20 74 68 65  led based on the
a3f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
a400: 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 72   placed in the r
a410: 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72 6e  aw buffer return
a420: 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  ed by the <see c
a430: 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 0d 0a  ref="uname" />..
a440: 20 20 20 20 20 20 2f 2f 2f 20 50 2f 49 6e 76 6f        /// P/Invo
a450: 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ke method...    
a460: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a470: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
a480: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
a490: 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
a4a0: 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  cess; otherwise,
a4b0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
a4c0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a4d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a4e0: 74 69 63 20 62 6f 6f 6c 20 47 65 74 4f 73 56 65  tic bool GetOsVe
a4f0: 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20  rsionInfo(..    
a500: 20 20 20 20 20 20 72 65 66 20 75 74 73 6e 61 6d        ref utsnam
a510: 65 20 75 74 73 4e 61 6d 65 0d 0a 20 20 20 20 20  e utsName..     
a520: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
a530: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
a540: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a550: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
a560: 6d 65 5f 69 6e 74 65 72 6f 70 20 75 74 66 4e 61  me_interop utfNa
a570: 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a 0d 0a 20 20  meInterop;....  
a580: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a590: 75 6e 61 6d 65 28 6f 75 74 20 75 74 66 4e 61 6d  uname(out utfNam
a5a0: 65 49 6e 74 65 72 6f 70 29 20 3c 20 30 29 0d 0a  eInterop) < 0)..
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5c0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a5d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a5e0: 20 69 66 20 28 75 74 66 4e 61 6d 65 49 6e 74 65   if (utfNameInte
a5f0: 72 6f 70 2e 62 75 66 66 65 72 20 3d 3d 20 6e 75  rop.buffer == nu
a600: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a610: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a620: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a630: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 75 66        string buf
a640: 66 65 72 41 73 53 74 72 69 6e 67 20 3d 20 45 6e  ferAsString = En
a650: 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65 74 53  coding.UTF8.GetS
a660: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
a670: 20 20 20 20 20 20 20 20 20 20 75 74 66 4e 61 6d            utfNam
a680: 65 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 29  eInterop.buffer)
a690: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a6a0: 20 20 20 69 66 20 28 28 62 75 66 66 65 72 41 73     if ((bufferAs
a6b0: 53 74 72 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 20  String == null) 
a6c0: 7c 7c 20 28 75 74 73 4e 61 6d 65 53 65 70 61 72  || (utsNameSepar
a6d0: 61 74 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ators == null)).
a6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a6f0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a700: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a710: 20 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67    bufferAsString
a720: 20 3d 20 62 75 66 66 65 72 41 73 53 74 72 69 6e   = bufferAsStrin
a730: 67 2e 54 72 69 6d 28 75 74 73 4e 61 6d 65 53 65  g.Trim(utsNameSe
a740: 70 61 72 61 74 6f 72 73 29 3b 0d 0a 0d 0a 20 20  parators);....  
a750: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a760: 6e 67 5b 5d 20 70 61 72 74 73 20 3d 20 62 75 66  ng[] parts = buf
a770: 66 65 72 41 73 53 74 72 69 6e 67 2e 53 70 6c 69  ferAsString.Spli
a780: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
a790: 20 20 20 20 20 20 75 74 73 4e 61 6d 65 53 65 70        utsNameSep
a7a0: 61 72 61 74 6f 72 73 2c 20 53 74 72 69 6e 67 53  arators, StringS
a7b0: 70 6c 69 74 4f 70 74 69 6f 6e 73 2e 52 65 6d 6f  plitOptions.Remo
a7c0: 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 29 3b  veEmptyEntries);
a7d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a7e0: 20 20 69 66 20 28 70 61 72 74 73 20 3d 3d 20 6e    if (parts == n
a7f0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
a800: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
a810: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
a820: 20 20 20 20 20 20 20 75 74 73 6e 61 6d 65 20 6c         utsname l
a830: 6f 63 61 6c 55 74 73 4e 61 6d 65 20 3d 20 6e 65  ocalUtsName = ne
a840: 77 20 75 74 73 6e 61 6d 65 28 29 3b 0d 0a 0d 0a  w utsname();....
a850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a860: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
a870: 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1)..          
a880: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
a890: 4e 61 6d 65 2e 73 79 73 6e 61 6d 65 20 3d 20 70  Name.sysname = p
a8a0: 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  arts[0];....    
a8b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
a8c0: 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 32 29  rts.Length >= 2)
a8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8e0: 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65      localUtsName
a8f0: 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20 70 61 72 74  .nodename = part
a900: 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[1];....       
a910: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
a920: 2e 4c 65 6e 67 74 68 20 3e 3d 20 33 29 0d 0a 20  .Length >= 3).. 
a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a940: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 72 65   localUtsName.re
a950: 6c 65 61 73 65 20 3d 20 70 61 72 74 73 5b 32 5d  lease = parts[2]
a960: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a970: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
a980: 67 74 68 20 3e 3d 20 34 29 0d 0a 20 20 20 20 20  gth >= 4)..     
a990: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
a9a0: 61 6c 55 74 73 4e 61 6d 65 2e 76 65 72 73 69 6f  alUtsName.versio
a9b0: 6e 20 3d 20 70 61 72 74 73 5b 33 5d 3b 0d 0a 0d  n = parts[3];...
a9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
a9d0: 66 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20  f (parts.Length 
a9e0: 3e 3d 20 35 29 0d 0a 20 20 20 20 20 20 20 20 20  >= 5)..         
a9f0: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74           localUt
aa00: 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 20 3d 20  sName.machine = 
aa10: 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d 0a 20 20 20  parts[4];....   
aa20: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61             utsNa
aa30: 6d 65 20 3d 20 6c 6f 63 61 6c 55 74 73 4e 61 6d  me = localUtsNam
aa40: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
aa50: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
aa60: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
aa70: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
aa80: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
aa90: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
aaa0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
aab0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
aac0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
aad0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
aae0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
aaf0: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
ab00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
ab60: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
ab70: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
ab80: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69  Static Class (Wi
ab90: 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  n32)..  /// <sum
aba0: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
abb0: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
abc0: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
abd0: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
abe0: 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20   Win32 APIs...  
abf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ac00: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
ac10: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
ac20: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
ac30: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
ac40: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
ac50: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
ac60: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
ac70: 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b  ethodsWin32..  {
ac80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
ac90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
ace0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
acf0: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
ad00: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
ad10: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
ad20: 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69  ive Win32 LoadLi
ad30: 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
ad40: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
ad50: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
ad60: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
ad70: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
ad80: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
ad90: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
ada0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
adb0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
adc0: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
add0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
ade0: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
adf0: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
ae00: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
ae10: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
ae20: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
ae30: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
ae40: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
ae50: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
ae60: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
ae70: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
ae80: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50  returns>..#if !P
ae90: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
aea0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
aeb0: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e  [DllImport("kern
aec0: 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20  el32",..#else.. 
aed0: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
aee0: 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64  "coredll",..#end
aef0: 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  if.. CallingConv
af00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
af10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70  Convention.Winap
af20: 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  i, CharSet = Cha
af30: 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20  rSet.Auto,..#if 
af40: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
af50: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
af60: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
af70: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
af80: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
af90: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e  har = true,..#en
afa0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53  dif..          S
afb0: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
afc0: 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  ue)]..      inte
afd0: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
afe0: 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  rn IntPtr LoadLi
aff0: 62 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c  brary(string fil
b000: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
b010: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
b060: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
b070: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
b080: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
b0a0: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
b0b0: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
b0c0: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
b0d0: 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66  n32 GetSystemInf
b0e0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  o..      /// fun
b0f0: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
b100: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
b110: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
b120: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
b130: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
b140: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b150: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b160: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79   <param name="sy
b170: 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20  stemInfo">..    
b180: 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d    /// The system
b190: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72   information str
b1a0: 75 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c  ucture to be fil
b1b0: 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75  led in by the fu
b1c0: 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  nction...      /
b1d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
b1e0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
b1f0: 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67  oredll", Calling
b200: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
b210: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
b220: 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69  inapi)]..      i
b230: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
b240: 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79  xtern void GetSy
b250: 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53  stemInfo(out SYS
b260: 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49  TEM_INFO systemI
b270: 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  nfo);....      /
b280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
b2d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b2e0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e       /// This en
b2f0: 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69  umeration contai
b300: 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20  ns the possible 
b310: 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70  values for the p
b320: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
b330: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
b340: 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79   field of the sy
b350: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
b360: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
b370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b380: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
b390: 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72  l enum Processor
b3a0: 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75  Architecture : u
b3b0: 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a  short /* COMPAT:
b3c0: 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20   Win32. */..    
b3d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
b3e0: 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20  ntel = 0,..     
b3f0: 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a       MIPS = 1,..
b400: 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20            Alpha 
b410: 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2,..          
b420: 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20  PowerPC = 3,..  
b430: 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c          SHx = 4,
b440: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20  ..          ARM 
b450: 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 5,..          
b460: 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20  IA64 = 6,..     
b470: 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37       Alpha64 = 7
b480: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49  ,..          MSI
b490: 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20  L = 8,..        
b4a0: 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20    AMD64 = 9,..  
b4b0: 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f          IA32_on_
b4c0: 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20  Win64 = 10,..   
b4d0: 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d         Unknown =
b4e0: 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d   0xFFFF..      }
b4f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b540: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b550: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b560: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
b570: 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f  re contains info
b580: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
b590: 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74  e current comput
b5a0: 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  er. This..      
b5b0: 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65  /// includes the
b5c0: 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c   processor type,
b5d0: 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f   page size, memo
b5e0: 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74  ry addresses, et
b5f0: 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  c...      /// </
b600: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b610: 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
b620: 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
b630: 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  ial)]..      int
b640: 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53  ernal struct SYS
b650: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
b660: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
b670: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
b680: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
b690: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
b6a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
b6b0: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
b6c0: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
b6d0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
b6e0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
b6f0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
b700: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
b710: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
b720: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
b730: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
b740: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
b750: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
b760: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
b770: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
b780: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
b790: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
b7a0: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
b7b0: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
b7c0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
b7d0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
b7e0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
b7f0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
b800: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
b810: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
b820: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
b830: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
b840: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
b850: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
b860: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
b870: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
b880: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
b890: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
b8a0: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
b8b0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
b8c0: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
b8d0: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
b8e0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
b8f0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
b900: 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65  endif..  }..  #e
b910: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
b920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b970: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
b980: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
b990: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
b9a0: 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20  (SQLite)..  /// 
b9b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
b9c0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
b9d0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
b9e0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
b9f0: 74 69 76 65 20 53 51 4c 69 74 65 20 41 50 49 73  tive SQLite APIs
ba00: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
ba10: 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
ba20: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
ba30: 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73  ORK..  [Suppress
ba40: 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63  UnmanagedCodeSec
ba50: 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a  urity]..#endif..
ba60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
ba70: 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61  c class UnsafeNa
ba80: 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  tiveMethods..  {
ba90: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 63  ..      public c
baa0: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 78 63 65  onst string Exce
bab0: 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d  ptionMessageForm
bac0: 61 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  at =..          
bad0: 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
bae0: 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74  n in \"{0}\" met
baf0: 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20  hod: {1}";....  
bb00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bb50: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53  .      #region S
bb60: 68 61 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c  hared Native SQL
bb70: 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d  ite Library Pre-
bb80: 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20  Loading Code..  
bb90: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
bba0: 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
bbb0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
bbc0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
bbd0: 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e  e file extension
bbe0: 20 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69   used for dynami
bbf0: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73  c link libraries
bc00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
bc10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
bc20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
bc30: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c  adonly string Dl
bc40: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  lFileExtension =
bc50: 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20   ".dll";....    
bc60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
bc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
bcb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bcc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
bcd0: 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75  file extension u
bce0: 73 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20  sed for the XML 
bcf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
bd00: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
bd10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
bd20: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
bd30: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
bd40: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
bd50: 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b  ion = ".config";
bd60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdb0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
bdc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bdd0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
bde0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20  name of the XML 
bdf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
be00: 6c 65 20 73 70 65 63 69 66 69 63 20 74 6f 20 74  le specific to t
be10: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79  he..      /// Sy
be20: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
be30: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
be40: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
be50: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
be60: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
be70: 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67  string XmlConfig
be80: 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20  FileName =..    
be90: 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73        typeof(Uns
bea0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
beb0: 29 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c  ).Namespace + Dl
bec0: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b  lFileExtension +
bed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66  ..          Conf
bee0: 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b  igFileExtension;
bef0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf40: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
bf50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bf60: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
bf70: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 72 69  XML configuratri
bf80: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74 68  on file token th
bf90: 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61  at will be repla
bfa0: 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ced with..      
bfb0: 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65  /// the qualifie
bfc0: 64 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69  d path to the di
bfd0: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
bfe0: 6e 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ng the XML confi
bff0: 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  guration..      
c000: 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  /// file...     
c010: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c020: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
c030: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
c040: 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 44  tring XmlConfigD
c050: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d  irectoryToken =.
c060: 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72 65  .          "%Pre
c070: 4c 6f 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43 6f  LoadSQLite_XmlCo
c080: 6e 66 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b  nfigDirectory%";
c090: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
c0a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
c0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
c100: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
c110: 6f 6e 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f  onstants (Deskto
c120: 70 20 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79  p Framework Only
c130: 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  )..#if !PLATFORM
c140: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
c150: 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  K..      /// <su
c160: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
c170: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 65 6e  / This is the en
c180: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
c190: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
c1a0: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
c1b0: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
c1c0: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
c1d0: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
c1e0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
c1f0: 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  is assembly...  
c200: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c210: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
c220: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
c230: 79 20 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c  y string Assembl
c240: 79 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20  yDirectoryToken 
c250: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
c260: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73 73  reLoadSQLite_Ass
c270: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 25 22  emblyDirectory%"
c280: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
c290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2d0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
c2e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c2f0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
c300: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
c310: 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74  iable token that
c320: 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65   will be replace
c330: 64 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  d with an..     
c340: 20 2f 2f 2f 20 61 62 62 72 65 76 69 61 74 69 6f   /// abbreviatio
c350: 6e 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20  n of the target 
c360: 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
c370: 75 74 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69  ute value associ
c380: 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
c390: 20 2f 2f 2f 20 74 68 69 73 20 61 73 73 65 6d 62   /// this assemb
c3a0: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
c3b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c3c0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
c3d0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
c3e0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54  TargetFrameworkT
c3f0: 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  oken =..        
c400: 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74    "%PreLoadSQLit
c410: 65 5f 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  e_TargetFramewor
c420: 6b 25 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  k%";..#endif..  
c430: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
c440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
c450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c490: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
c4a0: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
c4b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c4c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c4d0: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
c4e0: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65  d to protect the
c4f0: 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e   static _SQLiteN
c500: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
c510: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame,..      /// 
c520: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
c530: 75 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70  uleHandle, and p
c540: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
c550: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69  turePlatforms fi
c560: 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  elds...      ///
c570: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c580: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c590: 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  c readonly objec
c5a0: 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74  t staticSyncRoot
c5b0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
c5c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c610: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
c620: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c630: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
c640: 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 61  re is used to ca
c650: 63 68 65 20 74 68 65 20 68 75 6d 61 6e 20 72 65  che the human re
c660: 61 64 61 62 6c 65 20 73 74 72 69 6e 67 73 20 65  adable strings e
c670: 78 74 72 61 63 74 65 64 0d 0a 20 20 20 20 20 20  xtracted..      
c680: 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 72 61 77  /// from the raw
c690: 20 62 75 66 66 65 72 20 70 61 73 73 65 64 20 74   buffer passed t
c6a0: 6f 20 74 68 65 20 75 6e 61 6d 65 20 50 2f 49 6e  o the uname P/In
c6b0: 76 6f 6b 65 20 6d 65 74 68 6f 64 2e 20 20 49 74  voke method.  It
c6c0: 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
c6d0: 2f 2f 2f 20 75 73 65 64 20 6f 6e 20 50 4f 53 49  /// used on POSI
c6e0: 58 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  X operating syst
c6f0: 65 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ems...      /// 
c700: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c710: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c720: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
c730: 68 6f 64 73 50 6f 73 69 78 2e 75 74 73 6e 61 6d  hodsPosix.utsnam
c740: 65 20 75 74 73 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  e utsName;....  
c750: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
c7a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c7b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
c7c0: 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74  is dictionary st
c7d0: 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e 67  ores the mapping
c7e0: 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65 73  s between proces
c7f0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
c800: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
c810: 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e  s and platform n
c820: 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61 70  ames.  These map
c830: 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75 73  pings are now us
c840: 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20  ed for two..    
c850: 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20    /// purposes. 
c860: 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72 65   First, they are
c870: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
c880: 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d 62  ne if the assemb
c890: 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ly code..      /
c8a0: 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20 62  // base should b
c8b0: 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f  e used instead o
c8c0: 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20  f the location, 
c8d0: 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74 68  based upon wheth
c8e0: 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f  er one..      //
c8f0: 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65  / or more of the
c900: 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65 63   named sub-direc
c910: 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69 74  tories exist wit
c920: 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79  hin the assembly
c930: 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   code..      ///
c940: 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20   base.  Second, 
c950: 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f  they are used to
c960: 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64 69   assist in loadi
c970: 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  ng the appropria
c980: 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51  te..      /// SQ
c990: 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73  Lite interop ass
c9a0: 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20 63  embly into the c
c9b0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d  urrent process..
c9c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
c9d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
c9e0: 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74  vate static Dict
c9f0: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
ca00: 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72  tring> processor
ca10: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
ca20: 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  forms;....      
ca30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
ca80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ca90: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
caa0: 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65 74  s the cached ret
cab0: 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74  urn value from t
cac0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
cad0: 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65  ee cref="GetAsse
cae0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
caf0: 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75  > method -OR- nu
cb00: 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  ll if that metho
cb10: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 73  d..      /// has
cb20: 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64 20   never returned 
cb30: 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a  a valid value...
cb40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
cb50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
cb60: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
cb70: 67 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79  g cachedAssembly
cb80: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20  Directory;....  
cb90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
cba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
cbe0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cbf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
cc00: 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69 73  en this field is
cc10: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e   non-zero, it in
cc20: 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20 20  dicates the..   
cc30: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
cc40: 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
cc50: 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
cc60: 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20 74  d was not able t
cc70: 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20 20  o locate a..    
cc80: 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20 61    /// suitable a
cc90: 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
cca0: 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  y.  The..      /
ccb0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  // <see cref="Ge
ccc0: 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
ccd0: 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
cce0: 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74  hod will check t
ccf0: 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  his..      /// f
cd00: 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63  ield and skips c
cd10: 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73  alls into the <s
cd20: 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65  ee cref="GetAsse
cd30: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
cd40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  >..      /// met
cd50: 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20  hod whenever it 
cd60: 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20  is non-zero...  
cd70: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
cd80: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
cd90: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f  e static bool no
cda0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
cdb0: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  y;....      ////
cdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce00: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
ce10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ce20: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
ce30: 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e 20  e cached return 
ce40: 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a  value from the..
ce50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
ce60: 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69  ref="GetXmlConfi
ce70: 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65  gFileName" /> me
ce80: 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  thod -OR- null i
ce90: 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20  f that method.. 
cea0: 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76       /// has nev
ceb0: 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76 61  er returned a va
cec0: 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  lid value...    
ced0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
cee0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
cef0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63 61  static string ca
cf00: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
cf10: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
cf70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
cf80: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74        /// When t
cf90: 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e  his field is non
cfa0: 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61  -zero, it indica
cfb0: 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  tes the..      /
cfc0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  // <see cref="Ge
cfd0: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
cfe0: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61  me" /> method wa
cff0: 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f  s not able to lo
d000: 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f  cate a..      //
d010: 2f 20 73 75 69 74 61 62 6c 65 20 58 4d 4c 20 63  / suitable XML c
d020: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
d030: 65 20 6e 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20  e name.  The..  
d040: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
d050: 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43  f="GetCachedXmlC
d060: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
d070: 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 68  > method will ch
d080: 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20 20  eck this..      
d090: 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73 6b  /// field and sk
d0a0: 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74  ips calls into t
d0b0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
d0c0: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
d0d0: 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  me" />..      //
d0e0: 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76 65  / method wheneve
d0f0: 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  r it is non-zero
d100: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
d110: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
d120: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
d130: 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69  ol noXmlConfigFi
d140: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23  leName;..      #
d150: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
d160: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
d1b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d1c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
d1d0: 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f   now, this metho
d1e0: 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74  d simply calls t
d1f0: 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65  he Initialize me
d200: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
d210: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d220: 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66 65     static Unsafe
d230: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d  NativeMethods().
d240: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
d250: 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29      Initialize()
d260: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
d270: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
d2c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d2d0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
d2e0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61  tempts to initia
d2f0: 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20  lize this class 
d300: 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74  by pre-loading t
d310: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
d320: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
d330: 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63  ary for the proc
d340: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
d350: 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
d360: 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  t process...    
d370: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d380: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
d390: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69   static void Ini
d3a0: 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20  tialize()..     
d3b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
d3c0: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
d3d0: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
d3e0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
d3f0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
d400: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
d410: 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74 69  ists of statisti
d420: 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e  cs that will con
d430: 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tain..          
d440: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 6f 75 73  //       various
d450: 20 63 6f 75 6e 74 73 20 75 73 65 64 20 69 6e 20   counts used in 
d460: 64 65 62 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75  debugging, inclu
d470: 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ding the..      
d480: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d      //       num
d490: 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63  ber of times eac
d4a0: 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  h setting value 
d4b0: 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a  has been read...
d4c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d4d0: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
d4e0: 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d  a.Initialize();.
d4f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
d500: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
d510: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d520: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
d530: 3a 20 43 68 65 63 6b 20 69 66 20 61 20 64 65 62  : Check if a deb
d540: 75 67 67 65 72 20 6e 65 65 64 73 20 74 6f 20 62  ugger needs to b
d550: 65 20 61 74 74 61 63 68 65 64 20 62 65 66 6f 72  e attached befor
d560: 65 20 64 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20  e doing any..   
d570: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d580: 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20  real work...    
d590: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d5a0: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
d5b0: 73 2e 4d 61 79 62 65 42 72 65 61 6b 49 6e 74 6f  s.MaybeBreakInto
d5c0: 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23  Debugger();....#
d5d0: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
d5e0: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
d5f0: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
d600: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d610: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
d620: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
d630: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d640: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
d650: 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c   If the "No_PreL
d660: 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72  oadSQLite" envir
d670: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
d680: 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20  is set (to..    
d690: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
d6a0: 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61  nything), skip a
d6b0: 6c 6c 20 6f 66 20 6f 75 72 20 73 70 65 63 69 61  ll of our specia
d6c0: 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c  l code and simpl
d6d0: 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20  y return...     
d6e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d6f0: 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
d700: 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f  gValue("No_PreLo
d710: 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29  adSQLite", null)
d720: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d730: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
d740: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
d750: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
d760: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
d770: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
d780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d790: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
d7a0: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
d7b0: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
d7c0: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
d7d0: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
d7e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
d7f0: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
d800: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
d810: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
d820: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
d830: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
d840: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
d850: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d860: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
d870: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
d880: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
d890: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
d8a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d8b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d8d0: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
d8e0: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
d8f0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
d900: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
d910: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
d920: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
d930: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
d940: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
d950: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
d960: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d970: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
d980: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
d990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d9a0: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
d9b0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
d9c0: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
d9d0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
d9e0: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
d9f0: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
da00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da10: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
da20: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
da30: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
da50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da60: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
da70: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
da80: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
da90: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
dac0: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
dad0: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
dae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
daf0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
db00: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
db10: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
db20: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
db30: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db50: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
db60: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
db70: 41 64 64 28 22 78 38 36 5f 36 34 22 2c 20 22 78  Add("x86_64", "x
db80: 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64");..         
db90: 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
dba0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
dbb0: 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44  atforms.Add("AMD
dbc0: 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20  64", "x64");..  
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbe0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
dbf0: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
dc00: 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61 6e  dd("IA64", "Itan
dc10: 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ium");..        
dc20: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
dc30: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
dc40: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 52  latforms.Add("AR
dc50: 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20  M", "WinCE");.. 
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
dc70: 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41  ..#if SQLITE_STA
dc80: 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
dc90: 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
dca0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dcb0: 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f  EWORK..#if PRELO
dcc0: 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52  AD_NATIVE_LIBRAR
dcd0: 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  Y..             
dce0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dcf0: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 68     // BUGBUG: Wh
dd00: 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20 61  at about other a
dd10: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
dd20: 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns?..           
dd30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
dd40: 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74 65       if (_SQLite
dd50: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
dd60: 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
dd70: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
dd80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dd90: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
dda0: 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  seDirectory = nu
ddb0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
ddc0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
ddd0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
dde0: 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ure = null;.... 
ddf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de00: 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a   /* IGNORED */..
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 20 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63    SearchForDirec
de30: 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  tory(..         
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
de50: 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
de60: 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ref processorArc
de70: 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20  hitecture);.... 
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dea0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
deb0: 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65 2d 6c  Attempt to pre-l
dec0: 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65 20 63  oad the SQLite c
ded0: 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 0d  ore library (or.
dee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
def0: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 74 65     //       inte
df00: 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 61 6e  rop assembly) an
df10: 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74 68 65  d store both the
df20: 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20   file name..    
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
df40: 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74 69 76         and nativ
df50: 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
df60: 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67 65 2e  for later usage.
df70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
df80: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
df90: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e            /* IGN
dfa0: 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ORED */..       
dfb0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 4c 6f             PreLo
dfc0: 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
dfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfe0: 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
dff0: 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  y, processorArch
e000: 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20  itecture,..     
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e020: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
e030: 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
e040: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
e050: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
e060: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
e070: 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  Handle);..      
e080: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
e090: 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
e0a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
e0b0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
e0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e100: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
e110: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
e120: 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20  // Combines two 
e130: 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20  path strings... 
e140: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e150: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
e160: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68  param name="path
e170: 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  1">..      /// T
e180: 68 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f  he first path -O
e190: 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  R- null...      
e1a0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
e1b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
e1c0: 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20  ame="path2">..  
e1d0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f      /// The seco
e1e0: 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c  nd path -OR- nul
e1f0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
e200: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
e210: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
e220: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69     /// The combi
e230: 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20  ned path string 
e240: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74  -OR- null if bot
e250: 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61  h of the origina
e260: 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f  l path..      //
e270: 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75  / strings are nu
e280: 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ll...      /// <
e290: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
e2a0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e2b0: 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62  string MaybeComb
e2c0: 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
e2d0: 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31      string path1
e2e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ,..          str
e2f0: 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20  ing path2..     
e300: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
e310: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70  .          if (p
e320: 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ath1 != null).. 
e330: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e340: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
e350: 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th2 != null)..  
e360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e370: 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62  return Path.Comb
e380: 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32  ine(path1, path2
e390: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e3a0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
e3b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e3c0: 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20   path1;..       
e3d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e3e0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
e3f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e400: 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75   if (path2 != nu
e410: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
e420: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61         return pa
e430: 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  th2;..          
e440: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
e450: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e460: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
e470: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
e480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4d0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
e4e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
e4f0: 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61 63  / Resets the cac
e500: 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  hed XML configur
e510: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
e520: 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72 63  value, thus forc
e530: 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ing the..      /
e540: 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f 20  // next call to 
e550: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
e560: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
e570: 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  eName" /> method
e580: 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20 20   to rely..      
e590: 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73 65  /// upon the <se
e5a0: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
e5b0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
e5c0: 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63 68   method to fetch
e5d0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
e5e0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
e5f0: 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20  n file name...  
e600: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e610: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
e620: 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52 65  e static void Re
e630: 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  setCachedXmlConf
e640: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
e650: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e660: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
e670: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
e680: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
e690: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
e6a0: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
e6b0: 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68 65  ethod_ResetCache
e6c0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
e6d0: 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  me");..#endif.. 
e6e0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
e6f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
e700: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
e710: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
e720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e730: 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66     cachedXmlConf
e740: 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c  igFileName = nul
e750: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
e760: 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c    noXmlConfigFil
e770: 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  eName = false;..
e780: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
e790: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
e7f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e800: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
e810: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
e820: 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69  cached XML confi
e830: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
e840: 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  me for the..    
e850: 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 63    /// assembly c
e860: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61  ontaining the ma
e870: 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74  naged System.Dat
e880: 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65  a.SQLite compone
e890: 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20 2f  nts, if..      /
e8a0: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49  // available.  I
e8b0: 66 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c  f the cached XML
e8c0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
e8d0: 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20 69  ile name value i
e8e0: 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  s not..      ///
e8f0: 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20   available, the 
e900: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
e910: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
e920: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d   /> method will.
e930: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73  .      /// be us
e940: 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  ed to obtain the
e950: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
e960: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  on file name... 
e970: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e980: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
e990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e9a0: 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66  /// The XML conf
e9b0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
e9c0: 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ame -OR- null if
e9d0: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
e9e0: 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20  termined..      
e9f0: 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20  /// or does not 
ea00: 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  exist...      //
ea10: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
ea20: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
ea30: 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63  ic string GetCac
ea40: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
ea50: 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  Name()..      {.
ea60: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
ea70: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
ea80: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
ea90: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
eaa0: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
eab0: 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
eac0: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
ead0: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
eae0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
eaf0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
eb00: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
eb10: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
eb20: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
eb30: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
eb40: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
eb50: 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d  leName != null).
eb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb70: 20 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64     return cached
eb80: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
eb90: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
eba0: 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f 6e      if (noXmlCon
ebb0: 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20 20  figFileName)..  
ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebd0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
ebe0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ebf0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
ec00: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
ec10: 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  me();..      }..
ec20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
ec30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
ec80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ec90: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
eca0: 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f  turns the XML co
ecb0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
ecc0: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73   name for the as
ecd0: 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  sembly..      //
ece0: 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  / containing the
ecf0: 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e   managed System.
ed00: 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70  Data.SQLite comp
ed10: 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f  onents...      /
ed20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ed30: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
ed40: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
ed50: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
ed60: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f  ion file name -O
ed70: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
ed80: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
ed90: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ed..      /// or
eda0: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e   does not exist.
edb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
edc0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
edd0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
ede0: 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67  ing GetXmlConfig
edf0: 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20  FileName()..    
ee00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
ee10: 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
ee20: 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
ee30: 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  UG..          De
ee40: 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
ee50: 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74  tOtherCount("Met
ee60: 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69 67  hod_GetXmlConfig
ee70: 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e  FileName");..#en
ee80: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
ee90: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
eea0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
eeb0: 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
eec0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
eed0: 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ame;....#if !PLA
eee0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
eef0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
ef00: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70    directory = Ap
ef10: 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
ef20: 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
ef30: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
ef40: 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65  fileName = Maybe
ef50: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
ef60: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
ef70: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
ef80: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
ef90: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
efa0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
efb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
efc0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
efd0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
efe0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
eff0: 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58           cachedX
f000: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
f010: 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
f020: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
f040: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
f050: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
f060: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
f070: 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65    directory = Ge
f080: 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
f090: 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
f0a0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
f0b0: 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  = MaybeCombinePa
f0c0: 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d  th(directory, Xm
f0d0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29  lConfigFileName)
f0e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
f0f0: 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66  f (File.Exists(f
f100: 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
f110: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f120: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
f130: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
f140: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f160: 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  cachedXmlConfigF
f170: 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61  ileName = fileNa
f180: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
f190: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
f1a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c        return fil
f1b0: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
f1c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
f1d0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
f1e0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
f1f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f200: 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69     noXmlConfigFi
f210: 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d 0a  leName = true;..
f220: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
f230: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f240: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
f250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
f260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2a0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
f2b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f2c0: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
f2d0: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
f2e0: 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f 6e  upported XML con
f2f0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
f300: 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f  tokens..      //
f310: 2f 20 77 69 74 68 20 74 68 65 69 72 20 61 73 73  / with their ass
f320: 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d  ociated values..
f330: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
f340: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
f350: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
f360: 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
f370: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
f380: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
f390: 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e 67  ation file being
f3a0: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   read...      //
f3b0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
f3c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
f3d0: 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
f3e0: 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20    /// A setting 
f3f0: 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20  value read from 
f400: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
f410: 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20  ation file...   
f420: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
f430: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
f440: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
f450: 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
f460: 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
f470: 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20  "value" /> will 
f480: 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58 4d  all supported XM
f490: 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
f4a0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
f4b0: 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e  tokens replaced.
f4c0: 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75    No return valu
f4d0: 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20  e is reserved.. 
f4e0: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69       /// to indi
f4f0: 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20  cate an error.  
f500: 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e  This method cann
f510: 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20  ot fail...      
f520: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
f530: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
f540: 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c  atic string Repl
f550: 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  aceXmlConfigFile
f560: 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20  Tokens(..       
f570: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
f580: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  me,..          s
f590: 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20  tring value..   
f5a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
f5b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
f5c0: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
f5d0: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
f5e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f5f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
f600: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
f610: 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d  mpty(fileName)).
f620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
f630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f640: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
f650: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f670: 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
f680: 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
f690: 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c  irectoryName(fil
f6a0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6c0: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
f6d0: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
f6e0: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f700: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f710: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
f720: 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65   = value.Replace
f730: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f750: 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74   XmlConfigDirect
f760: 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74  oryToken, direct
f770: 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
f780: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7a0: 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
f7b0: 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
f7c0: 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
f7e0: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
f7f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
f800: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
f810: 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
f820: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
f830: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
f840: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
f850: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
f860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f870: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f890: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
f8b0: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
f8c0: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
f8d0: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8f0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
f900: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
f910: 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
f920: 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
f930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f940: 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
f950: 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70  er failed to rep
f960: 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20 20  lace XML " +..  
f970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f980: 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e              "con
f990: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
f9a0: 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20  \"{0}\" tokens: 
f9b0: 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9d0: 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65       fileName, e
f9e0: 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
f9f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fa00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
fa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
fa60: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa80: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
fa90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
fab0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
fac0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fad0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d   value;..      }
fae0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
fb40: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
fb50: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
fb60: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  d returns the va
fb70: 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  lue of the speci
fb80: 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73  fied setting, us
fb90: 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ing the..      /
fba0: 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d 4c  // specified XML
fbb0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
fbc0: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
fbd0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fbe0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
fbf0: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
fc00: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
fc10: 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e  e of the XML con
fc20: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
fc30: 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  to read...      
fc40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
fc50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
fc60: 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
fc70: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
fc80: 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d  of the setting..
fc90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
fca0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
fcb0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61  param name="defa
fcc0: 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ult">..      ///
fcd0: 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
fce0: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
fcf0: 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74   setting has not
fd00: 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
fd10: 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  itly..      /// 
fd20: 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  or cannot be det
fd30: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
fd40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
fd50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
fd60: 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a 20  ame="expand">.. 
fd70: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
fd80: 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79 20  o to expand any 
fd90: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
fda0: 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73 20  able references 
fdb0: 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20  contained in..  
fdc0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74 74      /// the sett
fdd0: 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65 20  ing value to be 
fde0: 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73 20  returned.  This 
fdf0: 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e  has no effect on
fe00: 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20   the .NET..     
fe10: 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72 61   /// Compact Fra
fe20: 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f  mework...      /
fe30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fe40: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
fe50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
fe60: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74  value of the set
fe70: 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65  ting -OR- the de
fe80: 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63  fault value spec
fe90: 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20  ified by..      
fea0: 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61  /// <paramref na
feb0: 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20  me="default" /> 
fec0: 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65  if it has not be
fed0: 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  en set explicitl
fee0: 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y or..      /// 
fef0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
ff00: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
ff10: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
ff20: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
ff30: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
ff40: 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f  ingValueViaXmlCo
ff50: 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20  nfigFile(..     
ff60: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
ff70: 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  Name, /* in */..
ff80: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
ff90: 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69 6e   name,     /* in
ffa0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
ffb0: 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c 20  tring @default, 
ffc0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
ffd0: 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20      bool expand 
ffe0: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
fff0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
10000 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
10010 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
10020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
10030 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20  f ((fileName == 
10040 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20 3d  null) || (name =
10050 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
10060 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10070 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a  rn @default;....
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
10090 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65  lDocument docume
100a0 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75  nt = new XmlDocu
100b0 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ment();....     
100c0 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e           documen
100d0 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29  t.Load(fileName)
100e0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d  ; /* throw */...
100f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58  .              X
10100 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e  mlElement elemen
10110 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c  t = document.Sel
10120 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a  ectSingleNode(..
10130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10140 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e    HelperMethods.
10150 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
10160 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
10170 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f                "/
10190 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70  configuration/ap
101a0 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b  pSettings/add[@k
101b0 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65  ey='{0}']", name
101c0 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20  )) as..         
101d0 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d           XmlElem
101e0 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ent; /* throw */
101f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10200 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d    if (element !=
10210 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
10220 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10230 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
10240 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d  g value = null;.
10250 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10260 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
10270 2e 48 61 73 41 74 74 72 69 62 75 74 65 28 22 76  .HasAttribute("v
10280 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20 20  alue"))..       
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
102a0 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47  alue = element.G
102b0 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61 6c  etAttribute("val
102c0 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ue");....       
102d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
102e0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
102f0 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
10300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10310 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
10320 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
10330 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
10340 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70           if (exp
10350 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  and)..          
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10370 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
10380 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f  ent.ExpandEnviro
10390 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76  nmentVariables(v
103a0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
103b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103c0 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45  value = ReplaceE
103d0 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
103e0 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b  leTokens(value);
103f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
10400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10410 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
10420 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f  eXmlConfigFileTo
10430 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20 76  kens(fileName, v
10440 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
10450 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
10480 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
10490 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
104a0 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
104b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
104c0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
104d0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
104e0 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
104f0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
10500 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
10510 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  e..          cat
10520 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
10530 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
10540 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
10550 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
10560 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
10570 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10580 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105a0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
105b0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
105c0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105e0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
105f0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22  urrentCulture, "
10600 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22  Native library "
10610 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
10620 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
10630 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
10640 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b 30  get setting \"{0
10650 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a 20  }\" value " +.. 
10660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10670 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20 63       "from XML c
10680 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
10690 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c  e \"{1}\": {2}",
106a0 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
106c0 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20  leName, e)); /* 
106d0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
106e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
106f0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
10700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10720 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
10730 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10740 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
10750 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10760 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
10770 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ault;..      }..
10780 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107d0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
107e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
107f0 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ORK..      /// <
10800 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10810 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
10820 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 61  determine the ta
10830 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
10840 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 74  ttribute value t
10850 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f  hat is..      //
10860 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
10870 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  h the specified 
10880 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79  managed assembly
10890 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e  , if applicable.
108a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
108b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
108c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
108d0 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20 20  ssembly">..     
108e0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
108f0 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65 61   assembly to rea
10900 64 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61  d the target fra
10910 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65  mework attribute
10920 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f   value..      //
10930 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f  / from...      /
10940 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
10950 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
10960 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
10970 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61 72  value of the tar
10980 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
10990 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 66 6f  tribute value fo
109a0 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  r the specified.
109b0 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67  .      /// manag
109c0 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52 2d  ed assembly -OR-
109d0 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
109e0 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
109f0 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20 20  .  If this..    
10a00 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 77    /// assembly w
10a10 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  as compiled with
10a20 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68   a version of th
10a30 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
10a40 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20   prior to..     
10a50 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e 30   /// version 4.0
10a60 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  , the value retu
10a70 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63 74  rned MAY reflect
10a80 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f 66   that version of
10a90 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20   the .NET..     
10aa0 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20 69   /// Framework i
10ab0 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f 6e  nstead of the on
10ac0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
10ad0 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  h the specified 
10ae0 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20 2f  managed..      /
10af0 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  // assembly...  
10b00 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
10b10 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
10b20 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
10b30 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65  GetAssemblyTarge
10b40 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
10b50 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
10b60 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
10b70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
10b80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
10b90 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  sembly != null).
10ba0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
10bb0 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f  f NET_40 || NET_
10bc0 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c  45 || NET_451 ||
10bd0 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f   NET_452 || NET_
10be0 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c  46 || NET_461 ||
10bf0 20 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f   NET_462 || NET_
10c00 34 37 20 7c 7c 20 4e 45 54 5f 34 37 31 0d 0a 20  47 || NET_471.. 
10c10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
10c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10c40 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
10c50 79 2e 49 73 44 65 66 69 6e 65 64 28 0d 0a 20 20  y.IsDefined(..  
10c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c70 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54          typeof(T
10c80 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74  argetFrameworkAt
10c90 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29  tribute), false)
10ca0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10cb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 61                Ta
10cd0 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74  rgetFrameworkAtt
10ce0 72 69 62 75 74 65 20 74 61 72 67 65 74 46 72 61  ribute targetFra
10cf0 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20 20 20 20  mework =..      
10d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d10 20 20 20 20 28 54 61 72 67 65 74 46 72 61 6d 65      (TargetFrame
10d20 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 0d 0a  workAttribute)..
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d40 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
10d50 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74 74 72  ly.GetCustomAttr
10d60 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20 20 20  ibutes(..       
10d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d80 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54 61         typeof(Ta
10d90 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74  rgetFrameworkAtt
10da0 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29 5b  ribute), false)[
10db0 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  0];....         
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
10dd0 75 72 6e 20 74 61 72 67 65 74 46 72 61 6d 65 77  urn targetFramew
10de0 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b 4e 61 6d  ork.FrameworkNam
10df0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
10e00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10e10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10e20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
10e30 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e50 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
10e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10e70 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 33 35 0d  }..#elif NET_35.
10e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
10e90 65 74 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65  eturn ".NETFrame
10ea0 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 33 2e  work,Version=v3.
10eb0 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 32  5";..#elif NET_2
10ec0 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  0..             
10ed0 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72 61   return ".NETFra
10ee0 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
10ef0 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  2.0";..#endif.. 
10f00 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10f10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
10f20 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
10f30 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
10f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f80 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
10f90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10fa0 2f 2f 20 41 63 63 65 70 74 73 20 61 20 6c 6f 6e  // Accepts a lon
10fb0 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f  g target framewo
10fc0 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61 6c  rk attribute val
10fd0 75 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20  ue and makes it 
10fe0 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20 20 2f 2f  into a..      //
10ff0 2f 20 6d 75 63 68 20 73 68 6f 72 74 65 72 20 76  / much shorter v
11000 65 72 73 69 6f 6e 2c 20 73 75 69 74 61 62 6c 65  ersion, suitable
11010 20 66 6f 72 20 75 73 65 20 77 69 74 68 20 4e 75   for use with Nu
11020 47 65 74 20 70 61 63 6b 61 67 65 73 2e 0d 0a 20  Get packages... 
11030 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11040 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
11050 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
11060 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
11070 68 65 20 6c 6f 6e 67 20 74 61 72 67 65 74 20 66  he long target f
11080 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
11090 74 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  te value to conv
110a0 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ert...      /// 
110b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
110c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
110d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 68 6f       /// The sho
110e0 72 74 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  rt target framew
110f0 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
11100 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  lue -OR- null if
11110 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20   it cannot..    
11120 20 20 2f 2f 2f 20 62 65 20 64 65 74 65 72 6d 69    /// be determi
11130 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72 74 65 64  ned or converted
11140 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
11150 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
11160 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
11170 72 69 6e 67 20 41 62 62 72 65 76 69 61 74 65 54  ring AbbreviateT
11180 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d  argetFramework(.
11190 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
111a0 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
111b0 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
111c0 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
111d0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
111e0 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  y(value))..     
111f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11200 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
11210 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
11220 65 2e 52 65 70 6c 61 63 65 28 22 2e 4e 45 54 46  e.Replace(".NETF
11230 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e  ramework,Version
11240 3d 76 22 2c 20 22 6e 65 74 22 29 3b 0d 0a 20 20  =v", "net");..  
11250 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
11260 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 22 2e  value.Replace(".
11270 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 29  ", String.Empty)
11280 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
11290 6e 74 20 69 6e 64 65 78 20 3d 20 76 61 6c 75 65  nt index = value
112a0 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29 3b 0d 0a  .IndexOf(',');..
112b0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
112c0 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a 20 20  index != -1)..  
112d0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
112e0 65 20 3d 20 76 61 6c 75 65 2e 53 75 62 73 74 72  e = value.Substr
112f0 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 3b 0d 0a  ing(0, index);..
11300 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
11310 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
11320 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
11330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11370 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
11380 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11390 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73      /// If neces
113a0 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61  sary, replaces a
113b0 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 65 6e 76  ll supported env
113c0 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
113d0 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20  e tokens..      
113e0 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61  /// with their a
113f0 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73  ssociated values
11400 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
11410 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11420 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
11430 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f  value">..      /
11440 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61 6c  // A setting val
11450 75 65 20 72 65 61 64 20 66 72 6f 6d 20 61 6e 20  ue read from an 
11460 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
11470 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
11480 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
11490 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
114a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
114b0 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61  lue of the <para
114c0 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65  mref name="value
114d0 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75  " /> will all su
114e0 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 2f  pported..      /
114f0 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  // environment v
11500 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 20 72  ariable tokens r
11510 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74  eplaced.  No ret
11520 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73  urn value is res
11530 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  erved..      ///
11540 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20   to indicate an 
11550 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74  error.  This met
11560 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e  hod cannot fail.
11570 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
11580 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
11590 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
115a0 69 6e 67 20 52 65 70 6c 61 63 65 45 6e 76 69 72  ing ReplaceEnvir
115b0 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f  onmentVariableTo
115c0 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20  kens(..         
115d0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
115e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
115f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
11600 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
11610 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
11620 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
11630 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
11640 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
11650 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
11660 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  yDirectory();...
11670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
11680 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
11690 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
116a0 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry))..          
116b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
116c0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
116d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
116f0 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11700 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d   value.Replace(.
11710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11720 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
11730 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  blyDirectoryToke
11740 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a  n, directory);..
11750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11760 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
11770 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
11780 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
11790 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
117a0 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
117b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
117c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
117d0 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
117e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
117f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
11800 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
11810 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11830 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11850 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
11870 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
11880 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
11890 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118b0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
118c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
118d0 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
118e0 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
118f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11900 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
11910 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70  er failed to rep
11920 6c 61 63 65 20 61 73 73 65 6d 62 6c 79 20 22 20  lace assembly " 
11930 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
11940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11950 20 22 64 69 72 65 63 74 6f 72 79 20 74 6f 6b 65   "directory toke
11960 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  n: {0}", e)); /*
11970 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11990 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
119a0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
119b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
119c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119e0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
119f0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
11a00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
11a10 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
11a20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11a30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11a40 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
11a50 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 6e  bly assembly = n
11a60 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
11a70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11a80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73                as
11aa0 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
11ab0 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
11ac0 73 65 6d 62 6c 79 28 29 3b 0d 0a 20 20 20 20 20  sembly();..     
11ad0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
11ae0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
11af0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
11b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
11b10 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
11b20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
11b30 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
11b40 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
11b50 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
11b60 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
11b70 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
11b80 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
11b90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
11ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11bc0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
11bd0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
11be0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
11bf0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
11c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c10 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11c20 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22  urrentCulture, "
11c30 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22  Native library "
11c40 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
11c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70                "p
11c60 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64  re-loader failed
11c70 20 74 6f 20 6f 62 74 61 69 6e 20 65 78 65 63 75   to obtain execu
11c80 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20  ting " +..      
11c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ca0 20 20 20 20 22 61 73 73 65 6d 62 6c 79 3a 20 7b      "assembly: {
11cb0 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
11cc0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
11cd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
11cf0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
11d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
11d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d40 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
11d50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11d70 72 69 6e 67 20 74 61 72 67 65 74 46 72 61 6d 65  ring targetFrame
11d80 77 6f 72 6b 20 3d 20 41 62 62 72 65 76 69 61 74  work = Abbreviat
11d90 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  eTargetFramework
11da0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11db0 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c 79       GetAssembly
11dc0 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28  TargetFramework(
11dd0 61 73 73 65 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20  assembly));.... 
11de0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11df0 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
11e00 72 45 6d 70 74 79 28 74 61 72 67 65 74 46 72 61  rEmpty(targetFra
11e10 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20 20 20 20  mework))..      
11e20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11e30 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
11e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11e60 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
11e70 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
11e80 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
11e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
11ea0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f  argetFrameworkTo
11eb0 6b 65 6e 2c 20 74 61 72 67 65 74 46 72 61 6d 65  ken, targetFrame
11ec0 77 6f 72 6b 29 3b 0d 0a 20 20 20 20 20 20 20 20  work);..        
11ed0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
11ee0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
11ef0 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
11f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f10 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
11f20 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
11f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f40 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
11f50 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
11f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11f70 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11f80 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
11f90 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
11fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
11fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11fc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
11ff0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
12000 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
12010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12030 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
12040 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
12050 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
12060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
12080 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
12090 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74 61 72  d to replace tar
120a0 67 65 74 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  get " +..       
120b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120c0 20 20 20 20 20 20 20 22 66 72 61 6d 65 77 6f 72         "framewor
120d0 6b 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65  k token: {0}", e
120e0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
120f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12100 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12120 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12150 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
12160 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
12170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12180 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
121b0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
121c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
121d0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d   value;..      }
121e0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
121f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
12240 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12250 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
12260 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
12270 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
12280 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69   specified setti
12290 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20 58 4d  ng, using the XM
122a0 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  L..      /// con
122b0 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
122c0 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69 72  and/or the envir
122d0 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73  onment variables
122e0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
122f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63  ..      /// proc
12300 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20 63  ess and/or the c
12310 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20 77  urrent system, w
12320 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  hen available...
12330 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12340 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
12350 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
12360 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
12370 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73  he name of the s
12380 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  etting...      /
12390 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
123a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
123b0 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20  me="default">.. 
123c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
123d0 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
123e0 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e 67  d if the setting
123f0 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
12400 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20  t explicitly..  
12410 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f      /// or canno
12420 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
12430 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
12440 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
12450 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
12460 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
12470 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f  f the setting -O
12480 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  R- the default v
12490 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62  alue specified b
124a0 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  y..      /// <pa
124b0 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66  ramref name="def
124c0 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68  ault" /> if it h
124d0 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
124e0 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20  explicitly or.. 
124f0 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
12500 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20  be determined.  
12510 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c 20  By default, all 
12520 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 65 78  references to ex
12530 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  isting..      //
12540 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  / environment va
12550 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62 65 20  riables will be 
12560 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68 65 69  expanded to thei
12570 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  r corresponding 
12580 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f 2f  values..      //
12590 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76 61 6c  / within the val
125a0 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
125b0 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65 72 20  d unless either 
125c0 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22 20  the "No_Expand" 
125d0 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 4e  or..      /// "N
125e0 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d 72  o_Expand_<paramr
125f0 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f  ef name="name" /
12600 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  >" environment v
12610 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 5b  ariable is set [
12620 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  to..      /// an
12630 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20 20  ything]...      
12640 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
12650 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
12660 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
12670 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
12680 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
12690 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a  name,    /* in *
126a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
126b0 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f 2a 20  ing @default /* 
126c0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
126d0 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66   )..      {..#if
126e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
126f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
12700 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
12710 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
12720 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 4e 6f   the special "No
12730 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e  _SQLiteGetSettin
12740 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f 6e 6d  gValue" environm
12750 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
12760 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65  /       variable
12770 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e 79 74   is set [to anyt
12780 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74 68  hing], this meth
12790 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d 0a  od will always..
127a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
127b0 20 20 20 72 65 74 75 72 6e 20 74 68 65 20 64 65     return the de
127c0 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a 20 20  fault value...  
127d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
127e0 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72 6f        if (Enviro
127f0 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
12800 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
12820 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74  No_SQLiteGetSett
12830 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20 6e 75  ingValue") != nu
12840 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
12850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12860 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
12870 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
12880 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
12890 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
128a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
128e0 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d        if (name =
128f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12900 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
12910 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20  efault;....     
12920 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12970 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
12980 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
12990 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
129a0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
129b0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
129c0 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65   are about to re
129d0 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c  ad a setting val
129e0 75 65 20 66 72 6f 6d 20 74 68 65 20 65 6e 76 69  ue from the envi
129f0 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ronment..       
12a00 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 70     //       or p
12a10 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20 74 68 65  ossibly from the
12a20 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
12a30 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20  on file; create 
12a40 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  or..          //
12a50 20 20 20 20 20 20 20 69 6e 63 72 65 6d 65 6e 74         increment
12a60 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
12a70 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d   statistic now..
12a80 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
12a90 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
12aa0 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74  ta.IncrementSett
12ab0 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d  ingReadCount(nam
12ac0 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64  e, false);..#end
12ad0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
12ae0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
12af0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12b40 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78           bool ex
12b50 70 61 6e 64 20 3d 20 74 72 75 65 3b 20 2f 2a 20  pand = true; /* 
12b60 53 48 41 52 45 44 3a 20 45 6e 76 69 72 6f 6e 6d  SHARED: Environm
12b70 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f  ent -AND- XML co
12b80 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d  nfig file. */...
12b90 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
12ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12be0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12bf0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12c00 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  RK..          st
12c10 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c  ring value = nul
12c20 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
12c30 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
12c40 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
12c50 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70 61 6e  riable("No_Expan
12c60 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  d") != null)..  
12c70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12c80 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64 20           expand 
12c90 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
12ca0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12cb0 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69 72 6f   else if (Enviro
12cc0 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e  nment.GetEnviron
12cd0 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a 20  mentVariable(.. 
12ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cf0 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
12d00 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
12d10 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
12d20 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f               "No
12d40 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61  _Expand_{0}", na
12d50 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  me)) != null).. 
12d60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12d70 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64            expand
12d80 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
12d90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12da0 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69      value = Envi
12db0 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
12dc0 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 6e  onmentVariable(n
12dd0 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
12de0 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
12df0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
12e00 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
12e10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12e20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a 20 20   if (expand)..  
12e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e40 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
12e50 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f  ent.ExpandEnviro
12e60 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76  nmentVariables(v
12e70 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
12e80 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
12e90 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
12ea0 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
12eb0 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
12ec0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12ed0 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
12ee0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12ef0 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
12f00 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
12f10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
12f20 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e   NOTE: If the "N
12f30 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69  o_SQLiteXmlConfi
12f40 67 46 69 6c 65 22 20 65 6e 76 69 72 6f 6e 6d 65  gFile" environme
12f50 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 0d 0a  nt variable is..
12f60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
12f70 20 20 20 73 65 74 20 5b 74 6f 20 61 6e 79 74 68     set [to anyth
12f80 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f  ing], this metho
12f90 64 20 77 69 6c 6c 20 4e 45 56 45 52 20 72 65 61  d will NEVER rea
12fa0 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
12fb0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 58        //       X
12fc0 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
12fd0 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20   file...        
12fe0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12ff0 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
13000 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
13010 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
13020 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c           "No_SQL
13030 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  iteXmlConfigFile
13040 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ") != null)..   
13050 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13060 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
13070 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
13080 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
13090 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
130a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72  ....          #r
130f0 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
13100 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
13110 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
13120 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
13130 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75 74  TE: We are about
13140 20 74 6f 20 72 65 61 64 20 61 20 73 65 74 74 69   to read a setti
13150 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  ng value from th
13160 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20 20 20  e XML..         
13170 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66 69 67   //       config
13180 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72  uration file; cr
13190 65 61 74 65 20 6f 72 20 69 6e 63 72 65 6d 65 6e  eate or incremen
131a0 74 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  t the appropriat
131b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
131c0 20 20 20 20 20 20 73 74 61 74 69 73 74 69 63 20        statistic 
131d0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
131e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  //..          De
131f0 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
13200 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e  tSettingReadCoun
13210 74 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0d 0a  t(name, true);..
13220 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13230 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13240 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13290 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
132a0 75 72 6e 20 47 65 74 53 65 74 74 69 6e 67 56 61  urn GetSettingVa
132b0 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46  lueViaXmlConfigF
132c0 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ile(..          
132d0 20 20 20 20 47 65 74 43 61 63 68 65 64 58 6d 6c      GetCachedXml
132e0 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29  ConfigFileName()
132f0 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  , name, @default
13300 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20 20 20  , expand);..    
13310 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
13320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
13370 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13380 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13390 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
133a0 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72 69  tring ListToStri
133b0 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67 3e  ng(IList<string>
133c0 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b 0d   list)..      {.
133d0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c  .          if (l
133e0 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ist == null)..  
133f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13400 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
13410 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c        StringBuil
13420 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  der result = new
13430 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
13440 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
13450 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 65  oreach (string e
13460 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29 0d  lement in list).
13470 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
13480 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13490 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29  element == null)
134a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
134b0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
134c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
134d0 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
134e0 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
134f0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
13500 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a  Append(' ');....
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13520 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65 6d  sult.Append(elem
13530 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ent);..         
13540 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13550 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54 6f  return result.To
13560 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
13570 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
13580 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
135d0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
135e0 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74  t CheckForArchit
135f0 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f  ecturesAndPlatfo
13600 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rms(..          
13610 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
13620 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
13630 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61   List<string> ma
13640 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20 20  tches..         
13650 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
13660 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c         int resul
13670 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
13680 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73 20      if (matches 
13690 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
136a0 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 20          matches 
136b0 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e  = new List<strin
136c0 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  g>();....       
136d0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
136e0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
136f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13700 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
13710 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64  .IsNullOrEmpty(d
13720 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20 20  irectory) &&..  
13730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13740 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
13750 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
13760 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
13770 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
13790 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65 50  reach (KeyValueP
137a0 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  air<string, stri
137b0 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20 20  ng> pair..      
137c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137d0 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73 73        in process
137e0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
137f0 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20 20  atforms)..      
13800 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13820 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
13830 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
13840 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
13850 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29 29  tory, pair.Key))
13860 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13870 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13890 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41 64        matches.Ad
138a0 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20 20  d(pair.Key);..  
138b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138c0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b          result++
138d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
138e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
138f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13900 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
13910 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a   = pair.Value;..
13920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13930 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
13940 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13960 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
13970 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13980 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69 72           if (Dir
13990 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61  ectory.Exists(Ma
139a0 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
139b0 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75 65 29  irectory, value)
139c0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
139d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
139e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139f0 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41         matches.A
13a00 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  dd(value);..    
13a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d        result++;.
13a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13a50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13a60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13a70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13a80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13a90 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  result;..      }
13aa0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
13ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13af0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
13b00 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
13b10 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43 6f   CheckAssemblyCo
13b20 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20 20 20  deBase(..       
13b30 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
13b40 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  mbly,..         
13b50 20 72 65 66 20 73 74 72 69 6e 67 20 66 69 6c 65   ref string file
13b60 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
13b70 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
13b80 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
13b90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13ba0 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
13bb0 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
13bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13bd0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
13bf0 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20 3d 20  ring codeBase = 
13c00 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61 73  assembly.CodeBas
13c10 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
13c20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
13c30 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 64  sNullOrEmpty(cod
13c40 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eBase))..       
13c50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13c60 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
13c70 20 20 20 20 20 20 20 20 20 20 55 72 69 20 75 72            Uri ur
13c80 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f 64 65  i = new Uri(code
13c90 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Base);..        
13ca0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63        string loc
13cb0 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72 69  alFileName = uri
13cc0 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20  .LocalPath;.... 
13cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13ce0 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 6c 6f  (!File.Exists(lo
13cf0 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  calFileName)).. 
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
13d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d30 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
13d40 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
13d50 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20  toryName(..     
13d60 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
13d70 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20  alFileName); /* 
13d80 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
13d90 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13da0 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
13db0 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e  me = MaybeCombin
13dc0 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
13dd0 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
13de0 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ory, XmlConfigFi
13df0 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
13e00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
13e10 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f 6e  le.Exists(xmlCon
13e20 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  figFileName)).. 
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13e40 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
13e50 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
13e60 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
13e70 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
13e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13ea0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
13eb0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
13ec0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
13ed0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ef0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
13f00 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
13f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
13f30 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
13f40 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e  er found XML con
13f50 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
13f60 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
13f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13f80 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f  via code base fo
13f90 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
13fa0 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
13fb0 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20  \"{0}\"",..     
13fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fd0 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46 69       xmlConfigFi
13fe0 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68 72  leName)); /* thr
13ff0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
14000 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
14010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
14020 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
14030 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14050 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
14060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14070 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
14080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14090 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
140a0 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
140b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
140c0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
140d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
140e0 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73               Lis
140f0 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
14100 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  s = null;....   
14110 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 43             if (C
14120 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74  heckForArchitect
14130 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73  uresAndPlatforms
14140 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20  (directory, ref 
14150 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d 0a 20  matches) > 0).. 
14160 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14170 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
14180 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
14190 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
141a0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
141b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
141d0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
141e0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
141f0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
14200 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
14210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14220 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
14230 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
14240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14250 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
14260 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
14270 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20  er found native 
14280 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 20  sub-directories 
14290 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
142a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
142b0 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66 6f  via code base fo
142c0 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
142d0 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
142e0 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20  \"{0}\"",..     
142f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14300 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72 69 6e       ListToStrin
14310 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20 2f 2a  g(matches))); /*
14320 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
14330 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14350 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
14360 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14380 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
14390 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
143a0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
143b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
143c0 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
143d0 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a  localFileName;..
143e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143f0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
14400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14420 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
14430 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
14440 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
14450 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
14460 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
14470 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
14480 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
14490 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
144a0 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
144b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
144c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
144d0 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
144f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14500 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14510 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
14520 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
14530 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
14540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14550 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
14560 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
14570 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
14580 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
14590 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
145a0 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
145b0 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73 65 20  check code base 
145c0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
145d0 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72 20             "for 
145e0 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
145f0 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b 30  ing assembly: {0
14600 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  }", e)); /* thro
14610 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
14620 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14630 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
14640 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14660 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
14670 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14680 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14690 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
146a0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
146b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
146c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
146d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
14720 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14730 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63 61  // Resets the ca
14740 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64 69  ched assembly di
14750 72 65 63 74 6f 72 79 20 76 61 6c 75 65 2c 20 74  rectory value, t
14760 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65 20  hus forcing the 
14770 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  next..      /// 
14780 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72 65  call to <see cre
14790 66 3d 22 47 65 74 43 61 63 68 65 64 41 73 73 65  f="GetCachedAsse
147a0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
147b0 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c 79  > method to rely
147c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e  ..      /// upon
147d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
147e0 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
147f0 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20  tory" /> method 
14800 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20 20  to fetch the..  
14810 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
14820 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
14830 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14840 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
14850 20 73 74 61 74 69 63 20 76 6f 69 64 20 52 65 73   static void Res
14860 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
14870 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20  Directory()..   
14880 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14890 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
148a0 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
148b0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
148c0 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
148d0 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
148e0 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68 65 64  thod_ResetCached
148f0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14900 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y");..#endif..  
14910 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
14920 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
14930 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
14940 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
14950 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14960 20 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79    cachedAssembly
14970 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c  Directory = null
14980 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14990 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63   noAssemblyDirec
149a0 74 6f 72 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  tory = false;.. 
149b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
149c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a10 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
14a20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14a30 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
14a40 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 63  nd returns the c
14a50 61 63 68 65 64 20 64 69 72 65 63 74 6f 72 79 20  ached directory 
14a60 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
14a70 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 20 20 20   currently..    
14a80 20 20 2f 2f 2f 20 62 65 69 6e 67 20 65 78 65 63    /// being exec
14a90 75 74 65 64 2c 20 69 66 20 61 76 61 69 6c 61 62  uted, if availab
14aa0 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61 63 68  le.  If the cach
14ab0 65 64 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65  ed assembly dire
14ac0 63 74 6f 72 79 20 76 61 6c 75 65 0d 0a 20 20 20  ctory value..   
14ad0 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 74 20 61 76     /// is not av
14ae0 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c 73 65  ailable, the <se
14af0 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d  e cref="GetAssem
14b00 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e  blyDirectory" />
14b10 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
14b20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20      /// be used 
14b30 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 61 73  to obtain the as
14b40 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79  sembly directory
14b50 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
14b60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14b70 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
14b80 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65      /// The dire
14b90 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
14ba0 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
14bb0 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 20   being executed 
14bc0 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20  -OR- null if..  
14bd0 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f      /// it canno
14be0 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
14bf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
14c00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
14c10 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
14c20 69 6e 67 20 47 65 74 43 61 63 68 65 64 41 73 73  ing GetCachedAss
14c30 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
14c40 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
14c50 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62       #region Deb
14c60 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23  ug Build Only..#
14c70 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
14c80 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e      DebugData.In
14c90 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
14ca0 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43 61 63  t("Method_GetCac
14cb0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
14cc0 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory");..#endif.
14cd0 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
14ce0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14cf0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
14d00 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
14d10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14d20 20 20 20 20 20 69 66 20 28 63 61 63 68 65 64 41       if (cachedA
14d30 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
14d40 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
14d50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
14d60 75 72 6e 20 63 61 63 68 65 64 41 73 73 65 6d 62  urn cachedAssemb
14d70 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
14d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14d90 20 28 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65   (noAssemblyDire
14da0 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 20 20  ctory)..        
14db0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14dc0 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
14dd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
14de0 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d   return GetAssem
14df0 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
14e00 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
14e10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
14e60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14e70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72  ..      /// Quer
14e80 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
14e90 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  the directory fo
14ea0 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  r the assembly c
14eb0 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d 0a  urrently being..
14ec0 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63 75 74        /// execut
14ed0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
14ee0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14ef0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
14f00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69        /// The di
14f10 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
14f20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
14f30 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
14f40 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a  d -OR- null if..
14f50 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e        /// it can
14f60 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
14f70 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
14f80 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14f90 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
14fa0 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62 6c  tring GetAssembl
14fb0 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
14fc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14fd0 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
14fe0 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
14ff0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
15000 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
15010 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
15020 65 74 68 6f 64 5f 47 65 74 41 73 73 65 6d 62 6c  ethod_GetAssembl
15030 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23  yDirectory");..#
15040 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
15050 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
15060 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
15070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15080 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
15090 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73  y assembly = Ass
150a0 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69  embly.GetExecuti
150b0 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d  ngAssembly();...
150c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
150d0 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  f (assembly == n
150e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
150f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15100 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
15110 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
15120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15130 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15140 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
15150 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
15160 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
15170 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
15180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15190 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
151b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151c0 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
151d0 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50  = null;....#if P
151e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
151f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
15200 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
15210 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d  Name assemblyNam
15220 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65 74  e = assembly.Get
15230 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Name();....     
15240 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
15250 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c  emblyName == nul
15260 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
15270 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15280 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
15290 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
152a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
152c0 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
152d0 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
152e0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
152f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15310 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
15320 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
15330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
15340 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  leName = assembl
15350 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b 0d  yName.CodeBase;.
15360 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
15370 20 20 20 20 20 20 69 66 20 28 21 43 68 65 63 6b        if (!Check
15380 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
15390 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66 20 66  (assembly, ref f
153a0 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
153b0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
153c0 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79  eName = assembly
153d0 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64  .Location;..#end
153e0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
153f0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
15400 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
15410 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
15420 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15430 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
15440 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
15450 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
15480 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
15490 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
154b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
154c0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
154d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
154e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
154f0 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
15500 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
15510 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65  rectoryName(file
15520 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
15530 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
15540 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
15550 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
15560 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15580 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
15590 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
155a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
155b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155c0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
155d0 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
155e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15600 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15610 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
15620 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15630 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
15640 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
15650 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15670 20 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79    cachedAssembly
15680 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65  Directory = dire
15690 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
156a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
156b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
156c0 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
156d0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
156e0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
156f0 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
15700 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
15710 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
15720 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
15730 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
15740 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
15750 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
15760 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
15770 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
15780 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
15790 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
157a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
157b0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
157c0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
157d0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
157e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
157f0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
15800 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
15810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15820 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
15830 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
15840 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20  r failed to get 
15850 64 69 72 65 63 74 6f 72 79 20 22 20 2b 0d 0a 20  directory " +.. 
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15870 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e       "for curren
15880 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
15890 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29  sembly: {0}", e)
158a0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
158b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
158c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
158d0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
158e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
158f0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
15900 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
15910 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
15920 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
15930 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
15940 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
15950 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
15960 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
15970 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
15980 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
15990 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
159a0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
159b0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
159c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
159d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
15a20 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f  .      #region O
15a30 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20 53  ptional Native S
15a40 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50 72  QLite Library Pr
15a50 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a  e-Loading Code..
15a60 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15a70 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61  // NOTE: If we a
15a80 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74  re looking for t
15a90 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
15aa0 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65 33  te DLL ("sqlite3
15ab0 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20 2f  .dll"),..      /
15ac0 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74 65  /       the inte
15ad0 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74 65  rop DLL ("SQLite
15ae0 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c 20  .Interop.dll"), 
15af0 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e  or we are runnin
15b00 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g on the..      
15b10 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43 6f  //       .NET Co
15b20 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
15b30 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75   we should inclu
15b40 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f 6e  de this code (on
15b50 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20 20  ly if the..     
15b60 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75 72   //       featur
15b70 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20 62  e has actually b
15b80 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20 54  een enabled).  T
15b90 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 62  his code would b
15ba0 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20 20  e totally..     
15bb0 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e 64   //       redund
15bc0 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64 75  ant if this modu
15bd0 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e 64  le has been bund
15be0 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69 78  led into the mix
15bf0 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ed-mode..      /
15c00 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
15c10 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66  ...      //..#if
15c20 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
15c30 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f   || USE_INTEROP_
15c40 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f  DLL || PLATFORM_
15c50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
15c60 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ....      //..  
15c70 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c      // NOTE: Onl
15c80 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68 65  y compile in the
15c90 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
15ca0 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69 66  pre-load code if
15cb0 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20 20   the feature..  
15cc0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 73      //       has
15cd0 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66 6f   been enabled fo
15ce0 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a 20  r this build... 
15cf0 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52 45       //..#if PRE
15d00 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
15d10 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ARY..      /// <
15d20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15d30 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
15d40 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  the environment 
15d50 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e  variable contain
15d60 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ing the processo
15d70 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 63  r..      /// arc
15d80 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65  hitecture of the
15d90 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
15da0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
15db0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
15dc0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
15dd0 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50 52  adonly string PR
15de0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
15df0 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20 20  TURE =..        
15e00 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52 43    "PROCESSOR_ARC
15e10 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a 20  HITECTURE";.... 
15e20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
15e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15e70 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
15e80 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
15e90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15ea0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
15eb0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66   native module f
15ec0 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
15ed0 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
15ee0 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d  ibrary or null..
15ef0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15f00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
15f10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
15f20 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ing _SQLiteNativ
15f30 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20  eModuleFileName 
15f40 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
15f50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
15fa0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15fb0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
15fc0 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
15fd0 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  dle for the nati
15fe0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
15ff0 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d 0a  y or the value..
16000 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74 72        /// IntPtr
16010 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  .Zero...      //
16020 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16030 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
16040 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69 74  ic IntPtr _SQLit
16050 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
16060 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  dle = IntPtr.Zer
16070 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  o;..      #endre
16080 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
16090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
160e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
160f0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
16100 65 73 20 74 68 65 20 62 61 73 65 20 66 69 6c 65  es the base file
16110 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20 61   name (without a
16120 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e 66  ny directory inf
16130 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20 20  ormation)..     
16140 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61 74   /// for the nat
16150 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
16160 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61  ry to be pre-loa
16170 64 65 64 20 62 79 20 74 68 69 73 20 63 6c 61 73  ded by this clas
16180 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
16190 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
161a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
161b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61 73       /// The bas
161c0 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  e file name for 
161d0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
161e0 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65 20  e library to be 
161f0 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a 20  pre-loaded by.. 
16200 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c       /// this cl
16210 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ass -OR- null if
16220 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e 6f   its value canno
16230 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
16240 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
16250 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
16260 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
16270 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c 69  ring GetNativeLi
16280 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
16290 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
162a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
162b0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65  ileNameOnly = Ge
162c0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
162d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
162e0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69 62  reLoadSQLite_Lib
162f0 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
16300 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  ", null);....   
16310 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e         if (fileN
16320 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29  ameOnly != null)
16330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16340 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 4f  return fileNameO
16350 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nly;....        
16360 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f    return SQLITE_
16370 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20 2a  DLL; /* COMPAT *
16380 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  /..      }....  
16390 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
163e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
163f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 65  y>..      /// Se
16400 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20 6e  arches for the n
16410 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
16420 72 61 72 79 20 69 6e 20 74 68 65 20 64 69 72 65  rary in the dire
16430 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
16440 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
16450 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
16460 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
16470 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68 65  d as well as the
16480 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d   base directory.
16490 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74  .      /// for t
164a0 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
164b0 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a  cation domain...
164c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
164d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
164e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73  <param name="bas
164f0 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20  eDirectory">..  
16500 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
16510 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
16520 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64  eter will be mod
16530 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74  ified to refer t
16540 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  o the base..    
16550 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20    /// directory 
16560 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
16570 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
16580 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rary...      ///
16590 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
165a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
165b0 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  ="processorArchi
165c0 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20  tecture">..     
165d0 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
165e0 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
165f0 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69  r will be modifi
16600 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74  ed to refer to t
16610 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f  he name..      /
16620 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64 69  // of the immedi
16630 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 28 69  ate directory (i
16640 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20 66  .e. the offset f
16650 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69 72  rom the base dir
16660 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 2f  ectory)..      /
16670 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  // containing th
16680 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
16690 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
166a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
166b0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
166c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
166d0 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73 29 20  -zero (success) 
166e0 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  if the native SQ
166f0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 61 73  Lite library was
16700 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73   found; otherwis
16710 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
16720 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20  ro (failure)... 
16730 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
16740 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
16750 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53  te static bool S
16760 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72  earchForDirector
16770 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y(..          re
16780 66 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72  f string baseDir
16790 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 2f  ectory,        /
167a0 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
167b0 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70      ref string p
167c0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
167d0 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ture /* out */..
167e0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
167f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16800 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
16810 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
16820 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51        "PreLoadSQ
16830 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72  Lite_NoSearchFor
16840 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c  Directory", null
16850 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
16860 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16870 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
16880 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44  lse; /* DISABLED
16890 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d   */..          }
168a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
168b0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
168c0 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74  OTE: Determine t
168d0 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
168e0 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
168f0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
16900 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
16910 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20       If this is 
16920 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69  not known by thi
16930 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e  s class, we cann
16940 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20  ot continue...  
16950 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16960 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
16970 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e  eNameOnly = GetN
16980 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65  ativeLibraryFile
16990 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20  NameOnly();.... 
169a0 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
169b0 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c  eNameOnly == nul
169c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
169d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
169e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
169f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
16a00 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69  TE: Build the li
16a10 73 74 20 6f 66 20 62 61 73 65 20 64 69 72 65 63  st of base direc
16a20 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65  tories and proce
16a30 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20  ssor/platform.. 
16a40 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16a50 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20    names.  These 
16a60 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73  lists will be us
16a70 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74  ed to help locat
16a80 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
16a90 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16aa0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
16ab0 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70  rary (or interop
16ac0 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72   assembly) to pr
16ad0 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20  e-load into..   
16ae0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16af0 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20  this process... 
16b00 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16b10 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
16b20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d  directories = {.
16b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
16b40 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
16b50 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41  ory(),..#if !PLA
16b60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
16b70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
16b80 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e        AppDomain.
16b90 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
16ba0 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65  seDirectory,..#e
16bb0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
16bc0 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  };....          
16bd0 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69 72 65  string[] subDire
16be0 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
16bf0 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72             GetPr
16c00 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16c10 75 72 65 28 29 2c 20 2f 2a 20 65 2e 67 2e 20 22  ure(), /* e.g. "
16c20 78 38 36 22 20 2a 2f 0d 0a 20 20 20 20 20 20 20  x86" */..       
16c30 20 20 20 20 20 20 20 47 65 74 50 6c 61 74 66 6f         GetPlatfo
16c40 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 2c 20 20 20  rmName(null),   
16c50 20 20 20 2f 2a 20 65 2e 67 2e 20 22 57 69 6e 33     /* e.g. "Win3
16c60 32 22 20 2a 2f 0d 0a 23 69 66 20 4e 45 54 5f 53  2" */..#if NET_S
16c70 54 41 4e 44 41 52 44 5f 32 30 20 26 26 20 21 57  TANDARD_20 && !W
16c80 49 4e 44 4f 57 53 20 20 20 20 20 20 20 20 20 20  INDOWS          
16c90 20 2f 2f 20 2e 4e 45 54 20 43 6f 72 65 20 6f 6e   // .NET Core on
16ca0 20 50 4f 53 49 58 0d 0a 20 20 20 20 20 20 20 20   POSIX..        
16cb0 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45 6d 70        String.Emp
16cc0 74 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  ty,             
16cd0 20 20 2f 2a 20 65 2e 67 2e 20 62 61 73 65 20 64    /* e.g. base d
16ce0 69 72 65 63 74 6f 72 79 20 6f 6e 6c 79 20 2a 2f  irectory only */
16cf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
16d00 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
16d10 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
16d20 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
16d30 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
16d40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16d50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
16d60 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
16d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16d80 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
16d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
16da0 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
16db0 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
16dc0 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
16dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16df0 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
16e00 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
16e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
16e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16e40 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
16e50 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
16e60 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
16e70 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
16e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
16e90 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
16ea0 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
16eb0 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
16ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16ed0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
16ee0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16ef0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16f00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
16f10 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
16f20 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
16f30 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
16f40 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
16f50 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16f60 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
16f70 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
16f80 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
16f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16fa0 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
16fb0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
16fc0 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
16fd0 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
16fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16ff0 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
17000 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
17010 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17030 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
17040 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
17050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17060 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
17070 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
17080 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
17090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
170a0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
170b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
170c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
170d0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
170e0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
170f0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
17100 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
17110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17120 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
17130 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
17140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17160 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
17170 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
17180 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
17190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
171a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
171b0 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
171c0 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
171d0 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
171e0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
171f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17200 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
17210 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
17220 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
17230 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
17240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17250 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
17260 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
17270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17280 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
17290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
172a0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
172b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
172c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
172d0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
172e0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
172f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17300 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
17310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17320 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
17330 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
17340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17350 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
17360 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
17370 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
17380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17390 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
173a0 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
173b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
173c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
173d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
173e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
173f0 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
17400 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
17410 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
17420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17460 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
17470 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17480 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
17490 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
174a0 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
174b0 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
174c0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
174d0 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
174e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
174f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
17500 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
17510 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17520 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
17530 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
17540 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
17550 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
17560 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
17570 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
17580 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
17590 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
175a0 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
175b0 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
175c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
175d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
175e0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
175f0 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
17600 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
17610 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
17620 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
17630 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
17640 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
17650 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
17660 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
17670 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
17680 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
17690 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
176a0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
176b0 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
176c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
176d0 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
176e0 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
176f0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
17700 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
17710 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
17720 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
17730 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
17740 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17750 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
17760 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
17770 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
17780 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
17790 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
177a0 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
177b0 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
177c0 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
177d0 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
177e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
177f0 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
17800 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
17810 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
17820 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
17830 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
17840 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
17850 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
17860 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
17870 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
17880 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
17890 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
178a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
178b0 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
178c0 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
178d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
178e0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
178f0 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
17900 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
17910 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17920 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17930 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
17940 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
17950 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
17960 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
17970 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
17980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17990 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
179a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
179b0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
179c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
179d0 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
179e0 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
179f0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
17a00 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
17a10 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
17a20 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
17a30 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
17a40 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
17a50 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
17a60 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
17a70 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
17a80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
17a90 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17aa0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
17ab0 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
17ac0 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
17ad0 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
17ae0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
17af0 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
17b00 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
17b10 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
17b20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
17b30 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
17b40 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
17b50 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
17b60 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
17b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
17bc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17bd0 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
17be0 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
17bf0 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
17c00 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
17c10 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
17c20 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
17c30 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
17c40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17c50 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
17c60 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
17c70 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
17c80 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
17c90 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
17ca0 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
17cb0 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
17cc0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17cd0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
17ce0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
17cf0 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
17d00 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
17d10 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
17d20 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
17d30 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
17d40 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
17d50 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
17d60 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
17d70 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
17d80 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
17d90 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
17da0 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
17db0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
17dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
17dd0 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
17de0 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
17df0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
17e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
17e10 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
17e20 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
17e30 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
17e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e50 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
17e60 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
17e70 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
17e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e90 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
17ea0 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
17eb0 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
17ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17ee0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
17ef0 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
17f00 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
17f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
17f30 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
17f40 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
17f50 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
17f60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
17fc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17fd0 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
17fe0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
17ff0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
18000 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
18010 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
18020 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
18030 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18040 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
18050 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
18060 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
18070 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
18080 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
18090 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
180a0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
180b0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
180c0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
180d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
180e0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
180f0 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
18100 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
18110 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18120 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18130 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
18140 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
18150 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
18160 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
18170 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
18180 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
18190 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
181a0 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
181b0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
181c0 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
181d0 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
181e0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
181f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
18200 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
18210 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
18220 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
18230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
18240 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
18250 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18260 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
18270 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
18280 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18290 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
182a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
182b0 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
182c0 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
182d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
182e0 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
182f0 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
18300 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
18310 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18320 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
18330 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
18340 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
18350 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
18360 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
18370 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
183c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
183d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
183e0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
183f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
18400 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
18410 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
18420 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
18430 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
18440 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
18450 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
18460 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
18470 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
18480 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
18490 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
184a0 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
184b0 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
184c0 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
184d0 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
184e0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
184f0 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
18500 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
18510 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
18520 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
18530 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
18540 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
18550 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
18560 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
18570 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
18580 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
18590 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
185a0 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
185b0 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
185c0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
185d0 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
185e0 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
185f0 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
18600 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18610 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
18620 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
18630 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
18640 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
18650 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
18660 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
18670 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
18680 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
18690 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
186a0 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
186b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
186c0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
186d0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
186e0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
186f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
18700 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
18710 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
18720 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
18730 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
18740 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
18750 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
18760 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
18770 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
18780 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
18790 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
187a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
187b0 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
187c0 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
187d0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
187e0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
187f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
18800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18810 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
18820 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
18830 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
18840 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
18850 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
18860 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
18870 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
18880 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
18890 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
188a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
188b0 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
188c0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
188d0 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
188e0 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
188f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
18900 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
18910 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
18920 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
18930 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18940 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
18950 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
18960 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
18970 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
18980 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
18990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
189a0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
189b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
189c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
189d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
189e0 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
189f0 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
18a00 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
18a10 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
18a20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
18a30 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
18a40 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
18a50 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
18a60 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
18a70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a90 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
18aa0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
18ab0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
18ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ad0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
18ae0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
18af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b00 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
18b10 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
18b20 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
18b30 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
18b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b50 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
18b60 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
18b70 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
18b80 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
18b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ba0 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
18bb0 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
18bc0 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
18bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18be0 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
18bf0 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
18c00 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
18c10 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
18c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c30 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
18c40 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
18c50 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
18c60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18c70 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
18c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
18c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ca0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
18cb0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18cc0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
18cd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
18ce0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18cf0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e     // NOTE: When
18d00 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 50 4f 53 49   running on POSI
18d10 58 20 28 6e 6f 6e 2d 57 69 6e 64 6f 77 73 29 2c  X (non-Windows),
18d20 20 61 74 74 65 6d 70 74 20 74 6f 20 71 75 65 72   attempt to quer
18d30 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  y the..         
18d40 20 2f 2f 20 20 20 20 20 20 20 6d 61 63 68 69 6e   //       machin
18d50 65 20 66 72 6f 6d 20 74 68 65 20 6f 70 65 72 61  e from the opera
18d60 74 69 6e 67 20 73 79 73 74 65 6d 20 76 69 61 20  ting system via 
18d70 75 6e 61 6d 65 28 29 2e 0d 0a 20 20 20 20 20 20  uname()...      
18d80 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18d90 20 20 69 66 20 28 28 70 72 6f 63 65 73 73 6f 72    if ((processor
18da0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
18db0 6e 75 6c 6c 29 20 26 26 20 21 48 65 6c 70 65 72  null) && !Helper
18dc0 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
18dd0 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
18de0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18df0 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
18e00 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
18e10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18e20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
18e30 75 74 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 20  utsName.machine 
18e40 21 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20  != null) ||..   
18e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e60 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
18e70 65 74 68 6f 64 73 50 6f 73 69 78 2e 47 65 74 4f  ethodsPosix.GetO
18e80 73 56 65 72 73 69 6f 6e 49 6e 66 6f 28 72 65 66  sVersionInfo(ref
18e90 20 75 74 73 4e 61 6d 65 29 29 0d 0a 20 20 20 20   utsName))..    
18ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
18eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ec0 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
18ed0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 75  Architecture = u
18ee0 74 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 3b 0d  tsName.machine;.
18ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18f00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
18f10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18f20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20   }..#else..     
18f30 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
18f40 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
18f50 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18f60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18f70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18f80 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
18f90 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
18fa0 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 61 74  ct Framework, at
18fb0 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
18fc0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
18fd0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
18fe0 57 69 6e 33 32 20 41 50 49 20 66 75 6e 63 74 69  Win32 API functi
18ff0 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65  on (via P/Invoke
19000 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69  ) that can provi
19010 64 65 20 75 73 0d 0a 20 20 20 20 20 20 20 20 20  de us..         
19020 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69       //       wi
19030 74 68 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  th the processor
19040 20 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a   architecture...
19050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19070 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
19080 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19090 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
190a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
190b0 20 4e 4f 54 45 3a 20 54 68 65 20 6f 75 74 70 75   NOTE: The outpu
190c0 74 20 6f 66 20 74 68 65 20 47 65 74 53 79 73 74  t of the GetSyst
190d0 65 6d 49 6e 66 6f 20 66 75 6e 63 74 69 6f 6e 20  emInfo function 
190e0 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20  will be..       
190f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
19100 20 20 20 20 70 6c 61 63 65 64 20 68 65 72 65 2e      placed here.
19110 20 20 4f 6e 6c 79 20 74 68 65 20 70 72 6f 63 65    Only the proce
19120 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
19130 65 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20  e field..       
19140 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
19150 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20 74      is used by t
19160 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  his method...   
19170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19180 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19190 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
191a0 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 53 59  eMethodsWin32.SY
191b0 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d  STEM_INFO system
191c0 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Info;....       
191d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
191e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
191f0 20 2f 2f 20 4e 4f 54 45 3a 20 51 75 65 72 79 20   // NOTE: Query 
19200 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  the system infor
19210 6d 61 74 69 6f 6e 20 76 69 61 20 50 2f 49 6e 76  mation via P/Inv
19220 6f 6b 65 2c 20 74 68 75 73 0d 0a 20 20 20 20 20  oke, thus..     
19230 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19240 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74 68        filling th
19250 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  e structure...  
19260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19270 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
19280 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
19290 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 47  veMethodsWin32.G
192a0 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
192b0 20 73 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d   systemInfo);...
192c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
192d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
192e0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
192f0 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72 6f  : Return the pro
19300 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
19310 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20 73  ure value as a s
19320 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
19330 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
19340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19350 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
19360 63 74 75 72 65 20 3d 0d 0a 20 20 20 20 20 20 20  cture =..       
19370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
19380 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63 65  ystemInfo.wProce
19390 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
193a0 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
193b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
193c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
193d0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
193e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
193f0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
19400 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
19410 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19420 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
19430 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
19440 45 3a 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  E: Upon failure,
19450 20 72 65 74 75 72 6e 20 61 6e 20 65 6d 70 74 79   return an empty
19460 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20 77   string.  This w
19470 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20 20  ill prevent..   
19480 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
19490 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67 20      the calling 
194a0 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e 73  method from cons
194b0 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65 74  idering this met
194c0 68 6f 64 20 63 61 6c 6c 20 61 0d 0a 20 20 20 20  hod call a..    
194d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
194e0 20 20 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a 20     "failure"... 
194f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
19510 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
19520 74 75 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d  ture = String.Em
19530 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  pty;..          
19540 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
19550 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
195a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
195b0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
195c0 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d  ecture;..      }
195d0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19620 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
19630 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19640 2f 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72  /// Given the pr
19650 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
19660 74 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68  ture, returns th
19670 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c  e name of the pl
19680 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f  atform...      /
19690 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
196a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
196b0 6e 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41  name="processorA
196c0 72 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20  rchitecture">.. 
196d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f       /// The pro
196e0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
196f0 75 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c  ure to be transl
19700 61 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f  ated to a platfo
19710 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
19720 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19730 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
19740 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
19750 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66   platform name f
19760 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
19770 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
19780 74 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c  tecture -OR- nul
19790 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  l..      /// if 
197a0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
197b0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
197c0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
197d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
197e0 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
197f0 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20  latformName(..  
19800 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
19810 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
19820 74 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ture /* in */.. 
19830 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
19840 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
19850 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
19860 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
19870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19880 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
19890 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63  ecture = GetProc
198a0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
198b0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
198c0 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
198d0 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65  ullOrEmpty(proce
198e0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
198f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
19900 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
19910 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
19920 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
19930 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
19940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
19950 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
19960 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
19970 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
19980 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
19990 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
199a0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
199b0 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  g platformName;.
199c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
199d0 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
199e0 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
199f0 72 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  rms.TryGetValue(
19a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a10 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
19a20 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f  rArchitecture, o
19a30 75 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  ut platformName)
19a40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19a50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19a60 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61        return pla
19a70 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20  tformName;..    
19a80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
19a90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19aa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
19ab0 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  l;..      }.... 
19ac0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19b10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19b20 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
19b30 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20  ttempts to load 
19b40 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
19b50 65 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20  e library based 
19b60 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64  on the specified
19b70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65  ..      /// dire
19b80 63 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73  ctory and proces
19b90 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
19ba0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
19bb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
19bc0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19bd0 62 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d  baseDirectory">.
19be0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
19bf0 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f  ase directory to
19c00 20 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64   use, null for d
19c10 65 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65  efault (the base
19c20 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20   directory of.. 
19c30 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72       /// the cur
19c40 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
19c50 20 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20   domain).  This 
19c60 64 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64  directory should
19c70 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
19c80 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f      /// processo
19c90 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73  r architecture s
19ca0 70 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65  pecific sub-dire
19cb0 63 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  ctories...      
19cc0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19cd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19ce0 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
19cf0 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
19d00 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75      /// The requ
19d10 65 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ested processor 
19d20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75  architecture, nu
19d30 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
19d40 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
19d50 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
19d60 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
19d70 72 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20  rent process).  
19d80 54 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75  This caller shou
19d90 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ld..      /// al
19da0 6d 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63  most always spec
19db0 69 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69  ify null for thi
19dc0 73 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20  s parameter...  
19dd0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19de0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
19df0 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d  am name="nativeM
19e00 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e 0d  oduleFileName">.
19e10 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
19e20 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65 20  andidate native 
19e30 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65  module file name
19e40 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62 65   to load will be
19e50 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a 20   stored here,.. 
19e60 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63 65       /// if nece
19e70 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  ssary...      //
19e80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19e90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19ea0 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  e="nativeModuleH
19eb0 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  andle">..      /
19ec0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
19ed0 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20 72  dule handle as r
19ee0 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64 4c  eturned by LoadL
19ef0 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20 73  ibrary will be s
19f00 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  tored..      ///
19f10 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73 73   here, if necess
19f20 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ary.  This value
19f30 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72 2e   will be IntPtr.
19f40 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c 6c  Zero if the call
19f50 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4c   to..      /// L
19f60 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c 73  oadLibrary fails
19f70 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
19f80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
19f90 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
19fa0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
19fb0 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64  f the native mod
19fc0 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20 73  ule was loaded s
19fd0 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74 68  uccessfully; oth
19fe0 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
19ff0 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  // zero...      
1a000 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1a010 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1a020 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f 61  atic bool PreLoa
1a030 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20  dSQLiteDll(..   
1a040 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 61         string ba
1a050 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
1a060 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1a070 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
1a080 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ng processorArch
1a090 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a 20  itecture,    /* 
1a0a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1a0b0 20 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69   ref string nati
1a0c0 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
1a0d0 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  , /* out */..   
1a0e0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
1a0f0 72 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  r nativeModuleHa
1a100 6e 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a  ndle    /* out *
1a110 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
1a120 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a130 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a140 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
1a150 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20   specified base 
1a160 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c  directory is nul
1a170 6c 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75  l, use the defau
1a180 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  lt..          //
1a190 20 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74         (i.e. att
1a1a0 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69  empt to automati
1a1b0 63 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29  cally detect it)
1a1c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1a1d0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62  .          if (b
1a1e0 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  aseDirectory == 
1a1f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1a200 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
1a210 72 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65  ry = GetBaseDire
1a220 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
1a230 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1a240 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
1a250 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65  we failed to que
1a260 72 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65  ry the base dire
1a270 63 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e  ctory, stop now.
1a280 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1a290 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1a2a0 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
1a2b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1a2c0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1a2d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
1a2e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1a2f0 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20  NOTE: Determine 
1a300 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61  the base file na
1a310 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
1a320 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1a330 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
1a340 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73        If this is
1a350 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68   not known by th
1a360 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e  is class, we can
1a370 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20  not continue... 
1a380 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a390 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
1a3a0 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74  leNameOnly = Get
1a3b0 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
1a3c0 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a  eNameOnly();....
1a3d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69            if (fi
1a3e0 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75  leNameOnly == nu
1a3f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1a400 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1a410 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1a420 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1a430 4f 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69  OTE: If the nati
1a440 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
1a450 79 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20  y exists in the 
1a460 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a  base directory..
1a470 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1a480 20 20 20 69 74 73 65 6c 66 2c 20 73 74 6f 70 20     itself, stop 
1a490 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
1a4a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
1a4b0 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20  ring fileName = 
1a4c0 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
1a4d0 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
1a4e0 68 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c  h(baseDirectory,
1a4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a500 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d  fileNameOnly));.
1a510 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
1a520 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c  (File.Exists(fil
1a530 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1a540 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1a550 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1a560 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a570 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1a580 73 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73  specified proces
1a590 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1a5a0 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68   is null, use th
1a5b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
1a5c0 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a        default...
1a5d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1a5e0 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
1a5f0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1a600 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
1a610 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
1a620 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
1a630 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72  = GetProcessorAr
1a640 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d  chitecture();...
1a650 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1a660 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1a670 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
1a680 6f 20 71 75 65 72 79 20 74 68 65 20 70 72 6f 63  o query the proc
1a690 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1a6a0 72 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  re, stop now... 
1a6b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a6c0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
1a6d0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a6e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1a6f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a700 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
1a710 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1a720 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
1a730 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61   the full path a
1a740 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  nd file name for
1a750 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
1a760 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
1a770 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75         library u
1a780 73 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  sing the process
1a790 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
1a7a0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
1a7b0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66   //..          f
1a7c0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
1a7d0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
1a7e0 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
1a7f0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
1a800 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
1a810 65 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63  eDirectory, proc
1a820 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
1a830 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  e), fileNameOnly
1a840 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
1a850 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
1a860 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66  / NOTE: If the f
1a870 69 6c 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f  ile name based o
1a880 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
1a890 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
1a8a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
1a8b0 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72  is not found, tr
1a8c0 79 20 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f  y using the asso
1a8d0 63 69 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20  ciated platform 
1a8e0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
1a8f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
1a900 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
1a910 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
1a920 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1a930 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1a940 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1a950 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61  : Attempt to tra
1a960 6e 73 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65  nslate the proce
1a970 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
1a980 65 20 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20  e to a..        
1a990 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
1a9a0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
1a9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1a9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
1a9d0 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61  tring platformNa
1a9e0 6d 65 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d  me = GetPlatform
1a9f0 4e 61 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72  Name(processorAr
1aa00 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a  chitecture);....
1aa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1aa20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa30 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66  // NOTE: If we f
1aa40 61 69 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61  ailed to transla
1aa50 74 65 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20  te the platform 
1aa60 6e 61 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  name, stop now..
1aa70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1aa80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1aa90 20 69 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d   if (platformNam
1aaa0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
1aab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1aac0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1aad0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1aae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1aaf0 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68  / NOTE: Build th
1ab00 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20  e full path and 
1ab10 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
1ab20 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d  e native SQLite.
1ab30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1ab40 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
1ab50 75 73 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f  using the platfo
1ab60 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
1ab70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1ab80 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
1ab90 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
1aba0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
1abb0 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62  nePath(MaybeComb
1abc0 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
1abd0 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
1abe0 44 69 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66  Directory, platf
1abf0 6f 72 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61  ormName), fileNa
1ac00 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
1ac10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1ac30 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
1ac40 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
1ac50 2c 20 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f  , skip trying to
1ac60 20 6c 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20   load it...     
1ac70 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1ac80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1ac90 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
1aca0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
1acb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1acc0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
1acd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ace0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1acf0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
1ad00 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1ad10 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
1ad20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1ad30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1ad60 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
1ad70 68 6f 77 20 65 78 61 63 74 6c 79 20 77 68 65 72  how exactly wher
1ad80 65 20 77 65 20 61 72 65 20 74 72 79 69 6e 67 20  e we are trying 
1ad90 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
1ada0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
1adb0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
1adc0 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 66 72  QLite library fr
1add0 6f 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  om...           
1ade0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1adf0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1ae00 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
1ae10 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
1ae20 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
1ae30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae40 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
1ae50 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
1ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae70 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
1ae80 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 69 73  ry pre-loader is
1ae90 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
1aea0 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
1aeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aec0 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
1aed0 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e 22 2c 20 66  y \"{0}\"...", f
1aee0 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68  ileName)); /* th
1aef0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1af00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1af10 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1af20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1af30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af40 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1af50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1af60 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1af70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1af80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1af90 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20  OTE: Attempt to 
1afa0 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
1afb0 6c 69 62 72 61 72 79 2e 20 20 54 68 69 73 20 77  library.  This w
1afc0 69 6c 6c 20 65 69 74 68 65 72 0d 0a 20 20 20 20  ill either..    
1afd0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1afe0 20 20 20 72 65 74 75 72 6e 20 61 20 76 61 6c 69     return a vali
1aff0 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  d native module 
1b000 68 61 6e 64 6c 65 2c 20 72 65 74 75 72 6e 20 49  handle, return I
1b010 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20 20  ntPtr.Zero,..   
1b020 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1b030 20 20 20 20 6f 72 20 74 68 72 6f 77 20 61 6e 20      or throw an 
1b040 65 78 63 65 70 74 69 6f 6e 2e 20 20 54 68 69 73  exception.  This
1b050 20 6d 75 73 74 20 75 73 65 20 74 68 65 20 61 70   must use the ap
1b060 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
1b070 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b080 20 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f    P/Invoke metho
1b090 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  d for the curren
1b0a0 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
1b0b0 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  em...           
1b0c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1b0d0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
1b0e0 65 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  eFileName = file
1b0f0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
1b100 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
1b110 65 48 61 6e 64 6c 65 20 3d 20 4e 61 74 69 76 65  eHandle = Native
1b120 4c 69 62 72 61 72 79 48 65 6c 70 65 72 2e 4c 6f  LibraryHelper.Lo
1b130 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e 61  adLibrary(fileNa
1b140 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1b150 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6e 61        return (na
1b160 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
1b170 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
1b180 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
1b190 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
1b1a0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45  _20 && TRACE_PRE
1b1b0 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20  LOAD..          
1b1c0 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
1b1d0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
1b1e0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
1b1f0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
1b200 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
1b210 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
1b220 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f  0 && TRACE_PRELO
1b230 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  AD..            
1b240 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1b250 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b260 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b280 2f 2f 20 4e 4f 54 45 3a 20 46 69 72 73 74 2c 20  // NOTE: First, 
1b290 67 72 61 62 20 74 68 65 20 6c 61 73 74 20 57 69  grab the last Wi
1b2a0 6e 33 32 20 65 72 72 6f 72 20 6e 75 6d 62 65 72  n32 error number
1b2b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b2c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b2d0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1b2e0 61 73 74 45 72 72 6f 72 20 3d 20 4d 61 72 73 68  astError = Marsh
1b2f0 61 6c 2e 47 65 74 4c 61 73 74 57 69 6e 33 32 45  al.GetLastWin32E
1b300 72 72 6f 72 28 29 3b 20 2f 2a 20 74 68 72 6f 77  rror(); /* throw
1b310 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
1b320 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b340 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65  / NOTE: Show whe
1b350 72 65 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  re we failed to 
1b360 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
1b370 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
1b380 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b390 20 20 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20     library from 
1b3a0 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 57  along with the W
1b3b0 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 20  in32 error code 
1b3c0 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  and..           
1b3d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1b3e0 65 78 63 65 70 74 69 6f 6e 20 69 6e 66 6f 72 6d  exception inform
1b3f0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
1b400 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b420 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
1b430 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
1b440 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b460 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
1b470 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
1b4a0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
1b4b0 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
1b4c0 6e 61 74 69 76 65 20 22 20 2b 0d 0a 20 20 20 20  native " +..    
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 20 20 22 53 51 4c 69 74 65 20 6c 69 62 72 61 72    "SQLite librar
1b4f0 79 20 5c 22 7b 30 7d 5c 22 20 28 67 65 74 4c 61  y \"{0}\" (getLa
1b500 73 74 45 72 72 6f 72 20 3d 20 7b 31 7d 29 3a 20  stError = {1}): 
1b510 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
1b520 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
1b530 65 4e 61 6d 65 2c 20 6c 61 73 74 45 72 72 6f 72  eName, lastError
1b540 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
1b550 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1b560 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1b570 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
1b580 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b590 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1b5a0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
1b5b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1b5c0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
1b5d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
1b5e0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
1b5f0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
1b600 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
1b610 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1b620 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
1b670 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
1b680 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1b690 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1b6a0 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  : On the .NET Co
1b6b0 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2c  mpact Framework,
1b6c0 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e 74 65   the native inte
1b6d0 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 6d 75 73  rop assembly mus
1b6e0 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  t..    //       
1b6f0 62 65 20 75 73 65 64 20 62 65 63 61 75 73 65 20  be used because 
1b700 69 74 20 70 72 6f 76 69 64 65 73 20 73 65 76 65  it provides seve
1b710 72 61 6c 20 77 6f 72 6b 61 72 6f 75 6e 64 73 20  ral workarounds 
1b720 74 6f 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 0d  to .NET Compact.
1b730 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 46 72  .    //       Fr
1b740 61 6d 65 77 6f 72 6b 20 6c 69 6d 69 74 61 74 69  amework limitati
1b750 6f 6e 73 20 69 6d 70 6f 72 74 61 6e 74 20 66 6f  ons important fo
1b760 72 20 70 72 6f 70 65 72 20 6f 70 65 72 61 74 69  r proper operati
1b770 6f 6e 20 6f 66 20 74 68 65 20 63 6f 72 65 0d 0a  on of the core..
1b780 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 79 73      //       Sys
1b790 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
1b7a0 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
1b7b0 2e 67 2e 20 62 65 69 6e 67 20 61 62 6c 65 20 74  .g. being able t
1b7c0 6f 20 62 69 6e 64 0d 0a 20 20 20 20 2f 2f 20 20  o bind..    //  
1b7d0 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 73 20       parameters 
1b7e0 61 6e 64 20 68 61 6e 64 6c 65 20 63 6f 6c 75 6d  and handle colum
1b7f0 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 79 70 65  n values of type
1b800 73 20 49 6e 74 36 34 20 61 6e 64 20 44 6f 75 62  s Int64 and Doub
1b810 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  le)...    //..  
1b820 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
1b830 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
1b840 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
1b850 65 72 6f 70 2e 31 30 39 2e 64 6c 6c 22 3b 0d 0a  erop.109.dll";..
1b860 23 65 6c 69 66 20 53 51 4c 49 54 45 5f 53 54 41  #elif SQLITE_STA
1b870 4e 44 41 52 44 0d 0a 20 20 20 20 2f 2f 0d 0a 20  NDARD..    //.. 
1b880 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65     // NOTE: Othe
1b890 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 73 74  rwise, if the st
1b8a0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
1b8b0 62 72 61 72 79 20 69 73 20 65 6e 61 62 6c 65 64  brary is enabled
1b8c0 2c 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f  , use it...    /
1b8d0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
1b8e0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
1b8f0 49 54 45 5f 44 4c 4c 20 3d 20 22 73 71 6c 69 74  ITE_DLL = "sqlit
1b900 65 33 22 3b 0d 0a 23 65 6c 69 66 20 55 53 45 5f  e3";..#elif USE_
1b910 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d 0a 20 20 20  INTEROP_DLL..   
1b920 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1b930 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20  : Otherwise, if 
1b940 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1b950 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
1b960 6c 79 20 69 73 20 65 6e 61 62 6c 65 64 2c 0d 0a  ly is enabled,..
1b970 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65      //       use
1b980 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
1b990 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
1b9a0 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
1b9b0 4c 4c 20 3d 20 22 53 51 4c 69 74 65 2e 49 6e 74  LL = "SQLite.Int
1b9c0 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 73  erop.dll";..#els
1b9d0 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  e..    //..    /
1b9e0 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c  / NOTE: Finally,
1b9f0 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68 65   assume that the
1ba00 20 6d 69 78 65 64 2d 6d 6f 64 65 20 61 73 73 65   mixed-mode asse
1ba10 6d 62 6c 79 20 69 73 20 62 65 69 6e 67 20 75 73  mbly is being us
1ba20 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
1ba30 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
1ba40 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c  string SQLITE_DL
1ba50 4c 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61  L = "System.Data
1ba60 2e 53 51 4c 69 74 65 2e 64 6c 6c 22 3b 0d 0a 23  .SQLite.dll";..#
1ba70 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 20  endif....    // 
1ba80 54 68 69 73 20 73 65 63 74 69 6f 6e 20 75 73 65  This section use
1ba90 73 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20  s interop calls 
1baa0 74 68 61 74 20 61 6c 73 6f 20 66 65 74 63 68 20  that also fetch 
1bab0 74 65 78 74 20 6c 65 6e 67 74 68 20 74 6f 20 6f  text length to o
1bac0 70 74 69 6d 69 7a 65 20 63 6f 6e 76 65 72 73 69  ptimize conversi
1bad0 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20 57 68 65 6e  on...    // When
1bae0 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
1baf0 61 72 64 20 64 6c 6c 2c 20 77 65 20 63 61 6e 20  ard dll, we can 
1bb00 72 65 70 6c 61 63 65 20 74 68 65 73 65 20 63 61  replace these ca
1bb10 6c 6c 73 20 77 69 74 68 20 6e 6f 72 6d 61 6c 20  lls with normal 
1bb20 73 71 6c 69 74 65 20 63 61 6c 6c 73 20 61 6e 64  sqlite calls and
1bb30 0d 0a 20 20 20 20 2f 2f 20 64 6f 20 75 6e 6f 70  ..    // do unop
1bb40 74 69 6d 69 7a 65 64 20 63 6f 6e 76 65 72 73 69  timized conversi
1bb50 6f 6e 73 20 69 6e 73 74 65 61 64 20 61 66 74 65  ons instead afte
1bb60 72 77 61 72 64 73 0d 0a 20 20 20 20 23 72 65 67  rwards..    #reg
1bb70 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
1bb80 64 20 74 65 78 74 6c 65 6e 67 74 68 20 63 61 6c  d textlength cal
1bb90 6c 73 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54  ls....#if !SQLIT
1bba0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
1bbb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bbc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1bbd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1bbe0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1bbf0 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
1bc00 74 65 72 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70  ter_name_interop
1bc10 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1bc20 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1bc30 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1bc40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bc50 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bc60 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bc70 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1bc80 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
1bc90 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
1bca0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1bcb0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
1bcc0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1bcd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bce0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1bcf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1bd00 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1bd10 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61  lumn_database_na
1bd20 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
1bd30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1bd40 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1bd50 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1bd60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1bd70 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1bd80 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1bd90 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1bda0 75 6d 6e 5f 64 65 63 6c 74 79 70 65 5f 69 6e 74  umn_decltype_int
1bdb0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1bdc0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1bdd0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1bde0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bdf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1be00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1be10 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1be20 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
1be30 74 79 70 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  type16_interop(I
1be40 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1be50 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1be60 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1be70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1be80 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1be90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1bea0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1beb0 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72  olumn_name_inter
1bec0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1bed0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1bee0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1bef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bf00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1bf10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bf20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1bf30 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36  e3_column_name16
1bf40 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1bf50 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1bf60 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1bf70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bf80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1bf90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bfa0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1bfb0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1bfc0 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f 69 6e 74 65  origin_name_inte
1bfd0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1bfe0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
1bff0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
1c000 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c010 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1c020 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c030 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1c040 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1c050 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
1c060 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1c070 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1c080 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1c090 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c0a0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1c0b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c0c0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1c0d0 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61  _column_table_na
1c0e0 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
1c0f0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c100 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1c110 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c120 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c130 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c140 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c150 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1c160 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31 36 5f 69  n_table_name16_i
1c170 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1c180 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1c190 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1c1a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c1b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c1c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c1d0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c1e0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
1c1f0 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  xt_interop(IntPt
1c200 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c210 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1c220 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c230 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c240 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c250 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c260 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1c270 6e 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  n_text16_interop
1c280 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1c290 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1c2a0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1c2b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c2c0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1c2d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c2e0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1c2f0 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f 70 28  _errmsg_interop(
1c300 49 6e 74 50 74 72 20 64 62 2c 20 72 65 66 20 69  IntPtr db, ref i
1c310 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1c320 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c330 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1c340 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c350 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c360 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ode sqlite3_prep
1c370 61 72 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  are_interop(IntP
1c380 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
1c390 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
1c3a0 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
1c3b0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
1c3c0 65 6d 61 69 6e 2c 20 72 65 66 20 69 6e 74 20 6e  emain, ref int n
1c3d0 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Remain);....    
1c3e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c3f0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1c400 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c410 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1c420 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61 62 6c  ode sqlite3_tabl
1c430 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74  e_column_metadat
1c440 61 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  a_interop(IntPtr
1c450 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61   db, byte[] dbNa
1c460 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  me, byte[] tblNa
1c470 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61  me, byte[] colNa
1c480 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1c490 74 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20  trDataType, ref 
1c4a0 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65  IntPtr ptrCollSe
1c4b0 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75  q, ref int notNu
1c4c0 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d  ll, ref int prim
1c4d0 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20  aryKey, ref int 
1c4e0 61 75 74 6f 49 6e 63 2c 20 72 65 66 20 69 6e 74  autoInc, ref int
1c4f0 20 64 74 4c 65 6e 2c 20 72 65 66 20 69 6e 74 20   dtLen, ref int 
1c500 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  csLen);....    [
1c510 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c520 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c530 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c540 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1c550 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74  3_value_text_int
1c560 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
1c570 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1c580 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c590 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c5a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c5b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c5c0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
1c5d0 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
1c5e0 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65  tr p, ref int le
1c5f0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c600 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c610 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c620 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1c630 6e 74 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  nt sqlite3_mallo
1c640 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 49  c_size_interop(I
1c650 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1c660 20 49 4e 54 45 52 4f 50 5f 4c 4f 47 0d 0a 20 20   INTEROP_LOG..  
1c670 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c680 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c690 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c6a0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c6b0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
1c6c0 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74 65 72 6f 70  nfig_log_interop
1c6d0 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e  ();..#endif..#en
1c6e0 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f  dif..// !SQLITE_
1c6f0 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
1c700 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1c710 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63 74    // These funct
1c720 69 6f 6e 73 20 61 64 64 20 65 78 69 73 74 69 6e  ions add existin
1c730 67 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20  g functionality 
1c740 6f 6e 20 74 6f 70 20 6f 66 20 53 51 4c 69 74 65  on top of SQLite
1c750 20 61 6e 64 20 72 65 71 75 69 72 65 20 61 20 6c   and require a l
1c760 69 74 74 6c 65 20 65 66 66 6f 72 74 20 74 6f 0d  ittle effort to.
1c770 0a 20 20 20 20 2f 2f 20 67 65 74 20 77 6f 72 6b  .    // get work
1c780 69 6e 67 20 77 68 65 6e 20 75 73 69 6e 67 20 74  ing when using t
1c790 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
1c7a0 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  te library...   
1c7b0 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
1c7c0 20 61 64 64 65 64 20 66 75 6e 63 74 69 6f 6e 61   added functiona
1c7d0 6c 69 74 79 0d 0a 0d 0a 23 69 66 20 21 53 51 4c  lity....#if !SQL
1c7e0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
1c7f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c800 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c810 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c820 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
1c830 6e 74 65 72 6f 70 5f 6c 69 62 76 65 72 73 69 6f  nterop_libversio
1c840 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  n();....    [Dll
1c850 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c860 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1c870 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c880 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 73  IntPtr interop_s
1c890 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 20 20  ourceid();....  
1c8a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c8b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c8c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c8d0 78 74 65 72 6e 20 69 6e 74 20 69 6e 74 65 72 6f  xtern int intero
1c8e0 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  p_compileoption_
1c8f0 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74  used(IntPtr zOpt
1c900 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  Name);....    [D
1c910 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c920 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1c930 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c940 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70  n IntPtr interop
1c950 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
1c960 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 20 20  et(int N);....  
1c970 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c980 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c990 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c9a0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c9b0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c  rCode sqlite3_cl
1c9c0 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ose_interop(IntP
1c9d0 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b  tr db);....    [
1c9e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c9f0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1ca00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ca10 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1ca20 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
1ca30 65 5f 66 75 6e 63 74 69 6f 6e 5f 69 6e 74 65 72  e_function_inter
1ca40 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
1ca50 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
1ca60 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
1ca70 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1ca80 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
1ca90 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
1caa0 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
1cab0 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
1cac0 6b 20 66 66 69 6e 61 6c 2c 20 69 6e 74 20 6e 65  k ffinal, int ne
1cad0 65 64 43 6f 6c 6c 53 65 71 29 3b 0d 0a 0d 0a 20  edCollSeq);.... 
1cae0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1caf0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1cb00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cb10 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1cb20 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
1cb30 69 6e 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28  inalize_interop(
1cb40 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1cb50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cb60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1cb70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cb80 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1cb90 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1cba0 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
1cbb0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62 61  nterop(IntPtr ba
1cbc0 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ckup);....    [D
1cbd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cbe0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1cbf0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cc00 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1cc10 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63  e sqlite3_blob_c
1cc20 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  lose_interop(Int
1cc30 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 20 20  Ptr blob);....  
1cc40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cc50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cc60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cc70 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1cc80 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
1cc90 65 6e 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  en_interop(byte[
1cca0 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
1ccb0 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
1ccc0 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
1ccd0 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
1cce0 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
1ccf0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
1cd00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cd10 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1cd20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cd30 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1cd40 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
1cd50 31 36 5f 69 6e 74 65 72 6f 70 28 62 79 74 65 5b  16_interop(byte[
1cd60 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20  ] utf8Filename, 
1cd70 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d 65 2c 20  byte[] vfsName, 
1cd80 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
1cd90 6e 75 6d 20 66 6c 61 67 73 2c 20 69 6e 74 20 65  num flags, int e
1cda0 78 74 46 75 6e 63 73 2c 20 72 65 66 20 49 6e 74  xtFuncs, ref Int
1cdb0 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20  Ptr db);....    
1cdc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1cdd0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1cde0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cdf0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ce00 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73 65  ode sqlite3_rese
1ce10 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
1ce20 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b   stmt);....    [
1ce30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ce40 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1ce50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ce60 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1ce70 68 61 6e 67 65 73 5f 69 6e 74 65 72 6f 70 28 49  hanges_interop(I
1ce80 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64  ntPtr db);..#end
1ce90 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53  if..// !SQLITE_S
1cea0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23  TANDARD....    #
1ceb0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1cec0 20 2f 2f 20 54 68 65 20 73 74 61 6e 64 61 72 64   // The standard
1ced0 20 61 70 69 20 63 61 6c 6c 20 65 71 75 69 76 61   api call equiva
1cee0 6c 65 6e 74 73 20 6f 66 20 74 68 65 20 61 62 6f  lents of the abo
1cef0 76 65 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73  ve interop calls
1cf00 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 74  ..    #region st
1cf10 61 6e 64 61 72 64 20 76 65 72 73 69 6f 6e 73 20  andard versions 
1cf20 6f 66 20 69 6e 74 65 72 6f 70 20 66 75 6e 63 74  of interop funct
1cf30 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ions....#if SQLI
1cf40 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 23  TE_STANDARD....#
1cf50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1cf60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1cf70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cf80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1cf90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1cfa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1cfb0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1cfc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cfd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1cfe0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1cff0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d000 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d010 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 49 6e  sqlite3_close(In
1d020 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1d030 20 21 49 4e 54 45 52 4f 50 5f 4c 45 47 41 43 59   !INTEROP_LEGACY
1d040 5f 43 4c 4f 53 45 0d 0a 23 69 66 20 21 50 4c 41  _CLOSE..#if !PLA
1d050 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d060 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d080 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d090 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d0a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d0b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d0c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d0d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d0e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d0f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1d100 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1d110 5f 63 6c 6f 73 65 5f 76 32 28 49 6e 74 50 74 72  _close_v2(IntPtr
1d120 20 64 62 29 3b 20 2f 2a 20 33 2e 37 2e 31 34 2b   db); /* 3.7.14+
1d130 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23   */..#endif....#
1d140 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d150 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d160 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d170 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d180 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d190 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d1a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d1b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d1c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1d1d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d1e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d1f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1d200 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
1d210 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64  unction(IntPtr d
1d220 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
1d230 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
1d240 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
1d250 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
1d260 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
1d270 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
1d280 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
1d290 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 29 3b 0d  llback ffinal);.
1d2a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d2b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d2c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d2d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d2e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d2f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d300 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d310 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d320 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d330 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d340 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d350 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d360 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  ode sqlite3_fina
1d370 6c 69 7a 65 28 49 6e 74 50 74 72 20 73 74 6d 74  lize(IntPtr stmt
1d380 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1d390 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d3a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d3b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d3c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d3d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d3e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d3f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d400 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d410 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d420 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d430 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1d440 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1d450 61 63 6b 75 70 5f 66 69 6e 69 73 68 28 49 6e 74  ackup_finish(Int
1d460 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
1d470 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d480 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d4a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d4b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d4c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d4d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d4e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d4f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d500 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d510 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d520 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1d530 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 49   sqlite3_reset(I
1d540 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1d550 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d560 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d570 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d580 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d5a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d5b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d5c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d5d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d5e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d5f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d600 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1d610 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
1d620 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ame(IntPtr stmt,
1d630 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1d640 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d650 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d660 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d670 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d680 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d690 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d6a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d6b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d6c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d6d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d6e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d6f0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1d700 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f  column_database_
1d710 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
1d720 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1d730 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d740 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d750 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d760 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d770 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d780 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d790 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d7a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d7b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d7c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d7d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d7e0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1d7f0 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
1d800 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1d810 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1d820 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d830 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d840 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d850 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d860 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d870 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d880 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d890 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d8a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d8b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d8c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d8d0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1d8e0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1d8f0 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ype(IntPtr stmt,
1d900 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1d910 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d920 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d930 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d940 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d950 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d960 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d970 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d980 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d990 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d9a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d9b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d9c0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1d9d0 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
1d9e0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1d9f0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1da00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1da10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1da20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1da30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1da40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1da50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1da60 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1da70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1da80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1da90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1daa0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1dab0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1dac0 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72  lumn_name(IntPtr
1dad0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1dae0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1daf0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1db00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1db10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1db20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1db30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1db40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1db50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1db60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1db70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1db80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db90 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1dba0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
1dbb0 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1dbc0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1dbd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dbe0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dbf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dc00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1dc10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1dc20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dc30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1dc40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1dc50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1dc60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1dc70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1dc80 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1dc90 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61  column_origin_na
1dca0 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  me(IntPtr stmt, 
1dcb0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1dcc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1dcd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1dce0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dcf0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1dd00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1dd10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1dd20 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1dd30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dd40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1dd50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1dd60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1dd70 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1dd80 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
1dd90 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  e16(IntPtr stmt,
1dda0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1ddb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ddc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ddd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dde0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ddf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1de00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1de10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1de20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1de30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1de40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1de50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1de60 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1de70 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
1de80 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1de90 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1dea0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1deb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1dec0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ded0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1dee0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1def0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1df00 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1df10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1df20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1df30 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1df40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1df50 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1df60 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 31  lumn_table_name1
1df70 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
1df80 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1df90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1dfa0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1dfb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1dfc0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1dfd0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1dfe0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1dff0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e010 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e020 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e030 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1e040 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1e050 6c 75 6d 6e 5f 74 65 78 74 28 49 6e 74 50 74 72  lumn_text(IntPtr
1e060 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1e070 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1e080 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e090 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e0a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e0b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e0c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e0d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e0e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e0f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e100 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e110 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e120 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1e130 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
1e140 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  t16(IntPtr stmt,
1e150 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1e160 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e170 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e180 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e190 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e1a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e1b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e1c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e1d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e1e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e1f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e200 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e210 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1e220 65 72 72 6d 73 67 28 49 6e 74 50 74 72 20 64 62  errmsg(IntPtr db
1e230 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1e240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e250 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e270 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e280 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e290 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e2a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1e2b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e2c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1e2d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e2e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1e2f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70  orCode sqlite3_p
1e300 72 65 70 61 72 65 28 49 6e 74 50 74 72 20 64 62  repare(IntPtr db
1e310 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
1e320 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
1e330 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
1e340 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
1e350 29 3b 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 50 52  );....#if USE_PR
1e360 45 50 41 52 45 5f 56 32 0d 0a 23 69 66 20 21 50  EPARE_V2..#if !P
1e370 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e380 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e390 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e3a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e3b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e3c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e3d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e3e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e3f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e400 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e410 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e420 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e430 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 49 6e  e3_prepare_v2(In
1e440 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
1e450 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73  pSql, int nBytes
1e460 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d  , ref IntPtr stm
1e470 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  t, ref IntPtr pt
1e480 72 52 65 6d 61 69 6e 29 3b 0d 0a 23 65 6e 64 69  rRemain);..#endi
1e490 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
1e4a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e4b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e4c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e4d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e4e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e4f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e500 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e520 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e530 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e540 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1e550 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 74 61  rCode sqlite3_ta
1e560 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
1e570 61 74 61 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ata(IntPtr db, b
1e580 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79  yte[] dbName, by
1e590 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79  te[] tblName, by
1e5a0 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65  te[] colName, re
1e5b0 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74 61  f IntPtr ptrData
1e5c0 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Type, ref IntPtr
1e5d0 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66   ptrCollSeq, ref
1e5e0 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65   int notNull, re
1e5f0 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79  f int primaryKey
1e600 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e  , ref int autoIn
1e610 63 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  c);....#if !PLAT
1e620 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e630 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e640 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e650 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e660 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e670 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e680 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e690 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e6a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e6b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e6c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1e6d0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
1e6e0 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  t(IntPtr p);....
1e6f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e700 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e710 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e720 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e730 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e740 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e750 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e760 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e770 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e780 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e790 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e7a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1e7b0 76 61 6c 75 65 5f 74 65 78 74 31 36 28 49 6e 74  value_text16(Int
1e7c0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 65 6e 64 69  Ptr p);....#endi
1e7d0 66 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 49 54 45  f..    // SQLITE
1e7e0 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20  _STANDARD....   
1e7f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1e800 20 20 20 2f 2f 20 54 68 65 73 65 20 66 75 6e 63     // These func
1e810 74 69 6f 6e 73 20 61 72 65 20 63 75 73 74 6f 6d  tions are custom
1e820 20 61 6e 64 20 68 61 76 65 20 6e 6f 20 65 71 75   and have no equ
1e830 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72 64  ivalent standard
1e840 20 6c 69 62 72 61 72 79 20 6d 65 74 68 6f 64 2e   library method.
1e850 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 6f 66 20  ..    // All of 
1e860 74 68 65 6d 20 61 72 65 20 22 6e 69 63 65 20 74  them are "nice t
1e870 6f 20 68 61 76 65 73 22 20 61 6e 64 20 6e 6f 74  o haves" and not
1e880 20 6e 65 63 65 73 73 61 72 69 6c 79 20 22 6e 65   necessarily "ne
1e890 65 64 20 74 6f 20 68 61 76 65 73 22 2e 0d 0a 20  ed to haves"... 
1e8a0 20 20 20 23 72 65 67 69 6f 6e 20 6e 6f 20 65 71     #region no eq
1e8b0 75 69 76 61 6c 65 6e 74 20 73 74 61 6e 64 61 72  uivalent standar
1e8c0 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a 23 69 66 20  d method....#if 
1e8d0 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1e8e0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1e8f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e900 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e910 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1e920 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  tr sqlite3_conte
1e930 78 74 5f 63 6f 6c 6c 73 65 71 5f 69 6e 74 65 72  xt_collseq_inter
1e940 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1e950 74 2c 20 72 65 66 20 69 6e 74 20 74 79 70 65 2c  t, ref int type,
1e960 20 72 65 66 20 69 6e 74 20 65 6e 63 2c 20 72 65   ref int enc, re
1e970 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1e980 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e990 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1e9a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e9b0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1e9c0 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 63  e3_context_collc
1e9d0 6f 6d 70 61 72 65 5f 69 6e 74 65 72 6f 70 28 49  ompare_interop(I
1e9e0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
1e9f0 79 74 65 5b 5d 20 70 31 2c 20 69 6e 74 20 70 31  yte[] p1, int p1
1ea00 6c 65 6e 2c 20 62 79 74 65 5b 5d 20 70 32 2c 20  len, byte[] p2, 
1ea10 69 6e 74 20 70 32 6c 65 6e 29 3b 0d 0a 0d 0a 20  int p2len);.... 
1ea20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ea30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1ea40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ea50 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1ea60 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1ea70 75 72 73 6f 72 5f 72 6f 77 69 64 5f 69 6e 74 65  ursor_rowid_inte
1ea80 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1ea90 20 69 6e 74 20 63 75 72 73 6f 72 2c 20 72 65 66   int cursor, ref
1eaa0 20 6c 6f 6e 67 20 72 6f 77 69 64 29 3b 0d 0a 0d   long rowid);...
1eab0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1eac0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1ead0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1eae0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1eaf0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1eb00 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d 6e 5f 69 6e  _index_column_in
1eb10 66 6f 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  fo_interop(IntPt
1eb20 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 63 61 74  r db, byte[] cat
1eb30 61 6c 6f 67 2c 20 62 79 74 65 5b 5d 20 49 6e 64  alog, byte[] Ind
1eb40 65 78 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 43  exName, byte[] C
1eb50 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72 65 66 20 69  olumnName, ref i
1eb60 6e 74 20 73 6f 72 74 4f 72 64 65 72 2c 20 72 65  nt sortOrder, re
1eb70 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72  f int onError, r
1eb80 65 66 20 49 6e 74 50 74 72 20 43 6f 6c 6c 61 74  ef IntPtr Collat
1eb90 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 63 6f 6c  ion, ref int col
1eba0 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  llen);....    [D
1ebb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ebc0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ebd0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ebe0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 61  n int sqlite3_ta
1ebf0 62 6c 65 5f 63 75 72 73 6f 72 5f 69 6e 74 65 72  ble_cursor_inter
1ec00 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1ec10 69 6e 74 20 64 62 2c 20 69 6e 74 20 74 61 62 6c  int db, int tabl
1ec20 65 52 6f 6f 74 50 61 67 65 29 3b 0d 0a 0d 0a 23  eRootPage);....#
1ec30 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49 54  endif..// !SQLIT
1ec40 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20  E_STANDARD....  
1ec50 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1ec60 20 20 20 20 2f 2f 20 53 74 61 6e 64 61 72 64 20      // Standard 
1ec70 41 50 49 20 63 61 6c 6c 73 20 67 6c 6f 62 61 6c  API calls global
1ec80 20 61 63 72 6f 73 73 20 76 65 72 73 69 6f 6e 73   across versions
1ec90 2e 20 20 54 68 65 72 65 20 61 72 65 20 61 20 66  .  There are a f
1eca0 65 77 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  ew instances of 
1ecb0 69 6e 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20  interop calls.. 
1ecc0 20 20 20 2f 2f 20 73 63 61 74 74 65 72 65 64 20     // scattered 
1ecd0 69 6e 20 68 65 72 65 2c 20 62 75 74 20 74 68 65  in here, but the
1ece0 79 20 61 72 65 20 6f 6e 6c 79 20 61 63 74 69 76  y are only activ
1ecf0 65 20 77 68 65 6e 20 50 4c 41 54 46 4f 52 4d 5f  e when PLATFORM_
1ed00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ed10 20 69 73 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20   is declared... 
1ed20 20 20 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64     #region stand
1ed30 61 72 64 20 73 71 6c 69 74 65 20 61 70 69 20 63  ard sqlite api c
1ed40 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  alls....#if !PLA
1ed50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ed60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ed70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ed80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1ed90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1eda0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1edb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1edc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1edd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ede0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1edf0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1ee00 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
1ee10 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
1ee20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ee30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ee40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ee50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ee60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ee70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ee80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ee90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1eea0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1eeb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1eec0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1eed0 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
1eee0 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a 0d 0a 23 69  _number();....#i
1eef0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ef00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ef10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ef20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ef30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ef40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ef50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ef60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ef70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ef80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ef90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1efa0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73 6f  ntPtr sqlite3_so
1efb0 75 72 63 65 69 64 28 29 3b 0d 0a 0d 0a 23 69 66  urceid();....#if
1efc0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1efd0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1efe0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eff0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f000 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f010 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f020 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f030 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f040 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f050 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f060 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f070 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  t sqlite3_compil
1f080 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
1f090 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
1f0a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f0b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f0c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f0d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f0e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f0f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f100 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f110 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f120 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f130 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f140 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f150 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f160 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
1f170 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a 0d 0a 23  get(int N);....#
1f180 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f190 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f1a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f1b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f1c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f1d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f1e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1f1f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f200 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1f210 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1f220 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f230 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f240 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73  sqlite3_enable_s
1f250 68 61 72 65 64 5f 63 61 63 68 65 28 0d 0a 20 20  hared_cache(..  
1f260 20 20 20 20 20 20 69 6e 74 20 65 6e 61 62 6c 65        int enable
1f270 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f280 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f290 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f2a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f2b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f2c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f2d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f2e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f2f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f300 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f310 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f320 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f330 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
1f340 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
1f350 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  sion(..        I
1f360 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 65 6e  ntPtr db, int en
1f370 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
1f380 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f390 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f3a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f3b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f3c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f3d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f3e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f3f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f400 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f410 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f420 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f430 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f440 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  e3_load_extensio
1f450 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
1f460 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 66 69  tr db, byte[] fi
1f470 6c 65 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 70  leName, byte[] p
1f480 72 6f 63 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  rocName, ref Int
1f490 50 74 72 20 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a  Ptr pError);....
1f4a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f4b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f4c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f4d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f4e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f4f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f500 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f510 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f520 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f530 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f540 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f550 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f560 20 73 71 6c 69 74 65 33 5f 6f 76 65 72 6c 6f 61   sqlite3_overloa
1f570 64 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50 74  d_function(IntPt
1f580 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 4e 61  r db, IntPtr zNa
1f590 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 29 3b 0d  me, int nArgs);.
1f5a0 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a  ...#if WINDOWS..
1f5b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f5c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f5d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f5e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f5f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f610 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20  .Cdecl, CharSet 
1f620 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
1f630 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e)]..#else..    
1f640 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f650 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d  E_DLL, CharSet =
1f660 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
1f670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f680 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
1f690 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
1f6a0 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72  n32_set_director
1f6b0 79 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  y" SQLite core l
1f6c0 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
1f6d0 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
1f6e0 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
1f6f0 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d 0a 20 20 20  on Windows...   
1f700 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
1f710 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f720 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f730 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65  sqlite3_win32_se
1f740 74 5f 64 69 72 65 63 74 6f 72 79 28 75 69 6e 74  t_directory(uint
1f750 20 74 79 70 65 2c 20 73 74 72 69 6e 67 20 76 61   type, string va
1f760 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 44 45  lue);....#if !DE
1f770 42 55 47 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f  BUG // NOTE: Sho
1f780 75 6c 64 20 62 65 20 22 57 49 4e 33 32 48 45 41  uld be "WIN32HEA
1f790 50 20 26 26 20 21 4d 45 4d 44 45 42 55 47 22 0d  P && !MEMDEBUG".
1f7a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f7b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f7c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f7d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f7e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f7f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f800 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f810 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f820 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f830 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
1f840 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
1f850 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72  "sqlite3_win32_r
1f860 65 73 65 74 5f 68 65 61 70 22 20 53 51 4c 69 74  eset_heap" SQLit
1f870 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
1f880 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
1f890 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
1f8a0 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
1f8b0 77 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33  ws when the Win3
1f8c0 32 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74  2 native allocat
1f8d0 6f 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f  or is in..    //
1f8e0 20 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e         use (i.e.
1f8f0 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   by default, in 
1f900 22 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73  "Release" builds
1f910 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e   of System.Data.
1f920 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20  SQLite..    //  
1f930 20 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20       only).  By 
1f940 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62  default, in "Deb
1f950 75 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79  ug" builds of Sy
1f960 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
1f970 2c 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  , the..    //   
1f980 20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c      MEMDEBUG all
1f990 6f 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d  ocator is used..
1f9a0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
1f9b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f9c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1f9d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
1f9e0 32 5f 72 65 73 65 74 5f 68 65 61 70 28 29 3b 0d  2_reset_heap();.
1f9f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1fa00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1fa10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1fa20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1fa30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1fa40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1fa50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1fa60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1fa70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1fa80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d  .#endif..    //.
1fa90 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
1faa0 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  e "sqlite3_win32
1fab0 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 22 20 53  _compact_heap" S
1fac0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1fad0 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
1fae0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1faf0 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
1fb00 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
1fb10 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
1fb20 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
1fb30 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
1fb40 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
1fb50 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
1fb60 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
1fb70 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
1fb80 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
1fb90 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
1fba0 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
1fbb0 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
1fbc0 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
1fbd0 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
1fbe0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
1fbf0 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
1fc00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fc10 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1fc20 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1fc30 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
1fc40 61 70 28 72 65 66 20 75 69 6e 74 20 6c 61 72 67  ap(ref uint larg
1fc50 65 73 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  est);..#endif..#
1fc60 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1fc70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1fc80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1fc90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fca0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1fcb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1fcc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1fcd0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1fce0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fcf0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1fd00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1fd10 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1fd20 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
1fd30 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  int n);....#if !
1fd40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fd50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fd60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fd70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1fd80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1fd90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1fda0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1fdb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1fdc0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1fdd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fde0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1fdf0 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  tr sqlite3_mallo
1fe00 63 36 34 28 75 6c 6f 6e 67 20 6e 29 3b 0d 0a 0d  c64(ulong n);...
1fe10 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1fe20 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1fe30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fe40 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1fe50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1fe60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1fe70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1fe80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1fe90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1fea0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1feb0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1fec0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1fed0 5f 72 65 61 6c 6c 6f 63 28 49 6e 74 50 74 72 20  _realloc(IntPtr 
1fee0 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23 69  p, int n);....#i
1fef0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1ff00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1ff10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ff20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1ff30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ff40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ff50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ff60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ff70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ff80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ff90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1ffa0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65  ntPtr sqlite3_re
1ffb0 61 6c 6c 6f 63 36 34 28 49 6e 74 50 74 72 20 70  alloc64(IntPtr p
1ffc0 2c 20 75 6c 6f 6e 67 20 6e 29 3b 0d 0a 0d 0a 23  , ulong n);....#
1ffd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ffe0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fff0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20000 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20010 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20030 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20040 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20050 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20060 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20070 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20080 75 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 73  ulong sqlite3_ms
20090 69 7a 65 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  ize(IntPtr p);..
200a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
200b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
200c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
200d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
200e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
200f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20100 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20110 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20120 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20130 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20140 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20150 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
20160 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b 0d  free(IntPtr p);.
20170 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20180 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20190 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
201a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
201b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
201c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
201d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
201e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
201f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20210 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20220 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20230 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ode sqlite3_open
20240 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38 46  _v2(byte[] utf8F
20250 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ilename, ref Int
20260 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f 70  Ptr db, SQLiteOp
20270 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
20280 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61 6d  s, byte[] vfsNam
20290 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
202a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
202b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
202c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
202d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
202e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
202f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
20300 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
20310 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
20320 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20330 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
20340 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
20350 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
20360 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20370 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20380 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20390 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74 72  lite3_open16(str
203a0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72 65  ing fileName, re
203b0 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
203c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
203d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
203e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
203f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20400 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20430 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20440 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20450 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20460 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20470 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69  n void sqlite3_i
20480 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72 20  nterrupt(IntPtr 
20490 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
204a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
204b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
204c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
204d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
204e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
204f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20500 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20510 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
20520 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  g sqlite3_last_i
20530 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74 50  nsert_rowid(IntP
20540 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  tr db);..#endif.
20550 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20560 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20570 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20580 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20590 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
205a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
205b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
205c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
205d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
205e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
205f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20600 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
20610 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20 64  changes(IntPtr d
20620 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
20630 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20640 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20650 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20660 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20670 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20680 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20690 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
206a0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
206b0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
206c0 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  used();..#endif.
206d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
206e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
206f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20700 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20710 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20720 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20730 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
20740 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20750 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
20760 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
20770 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46  water(int resetF
20780 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  lag);..#endif...
20790 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
207a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
207b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
207c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
207d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
207e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
207f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20800 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20810 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20820 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20830 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20840 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20850 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  e sqlite3_shutdo
20860 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  wn();....#if !PL
20870 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20880 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20890 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
208a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
208b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
208c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
208d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
208e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
208f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20900 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20910 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
20920 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
20930 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 49  3_busy_timeout(I
20940 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d 73  ntPtr db, int ms
20950 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20970 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20990 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
209a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
209b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
209c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
209d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
209e0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
209f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20a00 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
20a10 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
20a20 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49 6e  lear_bindings(In
20a30 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
20a40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20a50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20a60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20a70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20a80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20a90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20aa0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20ab0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20ac0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20ad0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20ae0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20af0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20b00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
20b10 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
20b20 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b 5d  nt index, Byte[]
20b30 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a   value, int nSiz
20b40 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e 73  e, IntPtr nTrans
20b50 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ient);....#if !P
20b60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20b70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20b80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20b90 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20ba0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20bb0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20bc0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
20bd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
20be0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
20bf0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
20c00 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
20c10 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c  int index, doubl
20c20 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  e value);..#endi
20c30 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
20c40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20c50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20c70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20c80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20c90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20ca0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20cc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20cd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20ce0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
20cf0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
20d00 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  nd_int(IntPtr st
20d10 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
20d20 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  nt value);....  
20d30 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
20d40 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a  E: This really j
20d50 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74  ust calls "sqlit
20d60 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68 6f  e3_bind_int"; ho
20d70 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68  wever, it has th
20d80 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
20d90 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67  correct type sig
20da0 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e  nature for an un
20db0 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29 20  signed (32-bit) 
20dc0 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
20dd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20de0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20df0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20e00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
20e10 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
20e20 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43 61  e3_bind_int", Ca
20e30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20e40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20e50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20e60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20e70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
20e80 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
20e90 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29 5d  ite3_bind_int")]
20ea0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20eb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20ec0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20ed0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
20ee0 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73 74  d_uint(IntPtr st
20ef0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75  mt, int index, u
20f00 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
20f10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20f20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20f30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20f40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20f70 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
20f80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20f90 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20fa0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
20fb0 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74  _int64(IntPtr st
20fc0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 6c  mt, int index, l
20fd0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
20fe0 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20  dif....    //.. 
20ff0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
21000 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c   really just cal
21010 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64  ls "sqlite3_bind
21020 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65 72  _int64"; however
21030 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
21040 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
21050 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
21060 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
21070 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29 20  d long (64-bit) 
21080 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f 2f  integer...    //
21090 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
210a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
210b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
210c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
210d0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
210e0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c 20  e3_bind_int64", 
210f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21100 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21110 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
21120 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21130 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21140 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21150 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49 6e  3_bind_uint64(In
21160 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
21170 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c 75  ndex, ulong valu
21180 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
21190 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
211a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
211b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
211c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
211d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
211e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
211f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21200 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21210 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21220 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21230 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21240 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
21250 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
21260 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  l(IntPtr stmt, i
21270 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
21280 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21290 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
212a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
212b0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
212c0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
212d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
212e0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
212f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21300 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21310 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21320 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
21330 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
21340 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
21350 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
21360 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d 20  t index, byte[] 
21370 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c  value, int nlen,
21380 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
21390 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ed);....#if !PLA
213a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
213b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
213c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
213d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
213e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
213f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21400 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21410 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21420 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21430 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21440 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
21450 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
21460 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72  ter_count(IntPtr
21470 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
21480 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21490 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
214a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
214b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
214c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
214d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
214e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
214f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21500 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21510 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21520 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
21530 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
21540 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e 74  ameter_index(Int
21550 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b 5d  Ptr stmt, byte[]
21560 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   strName);....#i
21570 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21580 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21590 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
215a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
215b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
215c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
215d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
215e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
215f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21600 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21610 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
21620 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
21630 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 73  n_count(IntPtr s
21640 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
21650 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21660 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21670 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21680 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21690 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
216a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
216b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
216c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
216d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
216e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
216f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21700 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21710 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73 74  3_step(IntPtr st
21720 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
21730 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21740 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21750 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21760 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21770 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21780 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21790 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
217a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
217b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
217c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
217d0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
217e0 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
217f0 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  ly(IntPtr stmt);
21800 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d   /* 3.7.4+ */...
21810 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21820 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21830 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21840 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21850 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21860 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21870 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
21880 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21890 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c  xtern double sql
218a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
218b0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  le(IntPtr stmt, 
218c0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e  int index);..#en
218d0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
218e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
218f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21900 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21910 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21920 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21930 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21940 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21950 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21960 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21970 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21980 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
21990 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 49  te3_column_int(I
219a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
219b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
219c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
219d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
219e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
219f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21a00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21a10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21a20 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
21a30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21a40 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f 6c  long sqlite3_col
21a50 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  umn_int64(IntPtr
21a60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21a70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
21a80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21a90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21aa0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21ab0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21ac0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21ad0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21ae0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
21af0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21b00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21b10 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21b20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
21b30 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
21b40 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74 72  lumn_blob(IntPtr
21b50 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21b60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21b70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21b80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21ba0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21bb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21bc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21bd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21bf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21c00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21c10 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
21c20 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28  e3_column_bytes(
21c30 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
21c40 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
21c50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21c60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21c70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21c80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21c90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21ca0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21cb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21cc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21cd0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
21d00 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
21d10 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 73  bytes16(IntPtr s
21d20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
21d30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21d40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21d50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21d60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21d70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21d80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21d90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21da0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21db0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21dc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21dd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21de0 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  tern TypeAffinit
21df0 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  y sqlite3_column
21e00 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74 6d  _type(IntPtr stm
21e10 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
21e20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21e30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21e40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21e50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21e60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21e70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21e80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21e90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21ea0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21eb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21ec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21ed0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21ee0 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  de sqlite3_creat
21ef0 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74 50  e_collation(IntP
21f00 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
21f10 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70 65  rName, int nType
21f20 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c  , IntPtr pvUser,
21f30 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e   SQLiteCollation
21f40 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21   func);....#if !
21f50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21f60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21f70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21f80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21f90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21fa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21fb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21fc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21fd0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21fe0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21ff0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
22000 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
22010 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 63  e_count(IntPtr c
22020 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
22030 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22040 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22050 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22060 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22070 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22090 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
220a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
220b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
220c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
220d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
220e0 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
220f0 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70 29  e_blob(IntPtr p)
22100 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22110 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22120 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22130 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22140 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22150 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22160 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22170 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22180 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22190 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
221a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
221b0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
221c0 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49 6e  3_value_bytes(In
221d0 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
221e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
221f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22200 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22210 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22220 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22230 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22240 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22250 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22260 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22270 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22280 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22290 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62   sqlite3_value_b
222a0 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70 29  ytes16(IntPtr p)
222b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
222c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
222d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
222e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
222f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22300 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22310 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
22320 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22330 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
22340 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64   sqlite3_value_d
22350 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29 3b  ouble(IntPtr p);
22360 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
22370 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22380 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22390 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
223a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
223b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
223c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
223d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
223e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
223f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22400 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22410 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22420 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69   sqlite3_value_i
22430 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  nt(IntPtr p);...
22440 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22450 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22470 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22480 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22490 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
224a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69  n.Cdecl)]..    i
224b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
224c0 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74  xtern long sqlit
224d0 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 49  e3_value_int64(I
224e0 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69  ntPtr p);..#endi
224f0 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
22500 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22510 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22520 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22530 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22540 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22550 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22560 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22570 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22580 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22590 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
225a0 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
225b0 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ty sqlite3_value
225c0 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29 3b  _type(IntPtr p);
225d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
225e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
225f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22600 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22610 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22620 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22630 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22640 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22650 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22660 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22670 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22680 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
22690 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49 6e  3_result_blob(In
226a0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
226b0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
226c0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70 76  nSize, IntPtr pv
226d0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
226e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
226f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22710 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22720 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22740 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
22750 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22760 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
22770 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49 6e  result_double(In
22780 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f  tPtr context, do
22790 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65  uble value);..#e
227a0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
227b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
227c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
227d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
227e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
227f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22800 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22810 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22830 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22840 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22850 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22860 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
22870 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
22880 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72 72  t, byte[] strErr
22890 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
228a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
228b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
228c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
228d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
228e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
228f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22900 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22910 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22920 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22930 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22940 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22950 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
22960 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28  sult_error_code(
22970 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
22980 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
22990 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
229a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
229b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
229c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
229d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
229e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
229f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22a00 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22a10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22a20 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22a30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22a40 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
22a50 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
22a60 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e 74  error_toobig(Int
22a70 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
22a80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22a90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22aa0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ab0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22ac0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22ad0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22ae0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22af0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22b00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22b10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22b20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22b30 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
22b40 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
22b50 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  m(IntPtr context
22b60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22b70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22b80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22b90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22ba0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22bb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22bc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22bd0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22bf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22c00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22c10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
22c20 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65  te3_result_value
22c30 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
22c40 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b 0d   IntPtr value);.
22c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22d00 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
22d10 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
22d20 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
22d30 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
22d40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22d50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22d70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22d80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22d90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22da0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22db0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22dc0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22dd0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22de0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22df0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
22e00 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20 63  ult_int(IntPtr c
22e10 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c 75  ontext, int valu
22e20 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
22e30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22e40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22e50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22e60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22e70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22e80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22e90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22ea0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
22eb0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
22ec0 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f 6e  int64(IntPtr con
22ed0 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75 65  text, long value
22ee0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
22ef0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22f00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22f10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22f20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22f30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22f40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
22f50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
22f60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22f70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
22f80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
22f90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
22fa0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
22fb0 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 63  lt_null(IntPtr c
22fc0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
22fd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22fe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22ff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23000 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23010 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23020 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23030 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23040 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23050 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23060 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23070 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
23080 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
23090 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f 6e  _text(IntPtr con
230a0 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
230b0 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  ue, int nLen, In
230c0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
230d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
230e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
230f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23100 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23110 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23120 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23130 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23140 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23160 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23170 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23180 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
23190 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
231a0 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
231b0 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74 65  ntext, int nByte
231c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
231d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
231e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
231f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23200 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23210 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43  vention.Cdecl, C
23230 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
23240 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73  .Unicode)]..#els
23250 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23260 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68  t(SQLITE_DLL, Ch
23270 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
23280 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69  Unicode)]..#endi
23290 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
232a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
232b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
232c0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
232d0 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  6(IntPtr stmt, i
232e0 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67  nt index, string
232f0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
23300 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
23310 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
23320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23350 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23360 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23370 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c  onvention.Cdecl,
23380 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
23390 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
233a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
233b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
233c0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
233d0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e  t.Unicode)]..#en
233e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
233f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23400 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
23410 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74 50  ult_error16(IntP
23420 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
23430 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
23440 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
23450 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23460 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23480 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23490 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
234a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
234b0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
234c0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
234d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
234e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
234f0 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
23500 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
23510 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23520 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23530 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
23540 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74 50  sult_text16(IntP
23550 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69  tr context, stri
23560 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  ng strName, int 
23570 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
23580 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
23590 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
235a0 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
235b0 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41 54  E_SEE..#if !PLAT
235c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
235d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
235e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
235f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23640 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23650 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23660 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
23670 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
23680 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62  key(IntPtr db, b
23690 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b  yte[] key, int k
236a0 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  eylen);....#if !
236b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
236c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
236d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
236e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
236f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23700 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23710 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23720 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23730 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23740 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23750 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23760 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23770 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74 72  te3_rekey(IntPtr
23780 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c   db, byte[] key,
23790 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 23   int keylen);..#
237a0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e 54  endif....#if INT
237b0 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50  EROP_INCLUDE_ZIP
237c0 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  VFS..#if !PLATFO
237d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
237e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
237f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23800 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23810 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23820 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23830 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23840 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23850 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23860 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23870 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66  xtern void zipvf
23880 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a 23  sInit_v2();....#
23890 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
238a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
238b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
238c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
238d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
238e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
238f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23900 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23910 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23920 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23930 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23940 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f  void zipvfsInit_
23950 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29 3b  v3(int regDflt);
23960 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23970 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23980 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23990 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
239a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
239b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
239c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
239d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
239e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
239f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23a00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23a10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
23a20 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  d sqlite3_progre
23a30 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50 74  ss_handler(IntPt
23a40 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20 53  r db, int ops, S
23a50 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c  QLiteProgressCal
23a60 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
23a70 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
23a80 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23a90 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23aa0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23ab0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23ac0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23ad0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23ae0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23af0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23b00 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23b10 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23b20 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23b30 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 73  IntPtr sqlite3_s
23b40 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49 6e  et_authorizer(In
23b50 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 41  tPtr db, SQLiteA
23b60 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63  uthorizerCallbac
23b70 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
23b80 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
23b90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23ba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23bb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23bc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23bd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23bf0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23c00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23c10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23c20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23c30 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
23c40 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61 74  tr sqlite3_updat
23c50 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  e_hook(IntPtr db
23c60 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43 61  , SQLiteUpdateCa
23c70 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
23c80 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
23c90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23ca0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23cb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23cc0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23cd0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23ce0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23cf0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23d10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23d20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23d30 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23d40 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
23d50 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74 50  commit_hook(IntP
23d60 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6d  tr db, SQLiteCom
23d70 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  mitCallback func
23d80 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
23d90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23da0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23db0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23dc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23dd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23de0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23df0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23e00 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23e10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23e20 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23e30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23e40 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
23e50 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50 74  ite3_trace(IntPt
23e60 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61 63  r db, SQLiteTrac
23e70 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
23e80 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
23e90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23ea0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23eb0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23ec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23ed0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23ee0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23ef0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23f00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23f10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23f20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23f30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23f40 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
23f50 65 33 5f 74 72 61 63 65 5f 76 32 28 49 6e 74 50  e3_trace_v2(IntP
23f60 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61  tr db, SQLiteTra
23f70 63 65 46 6c 61 67 73 20 6d 61 73 6b 2c 20 53 51  ceFlags mask, SQ
23f80 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
23f90 6b 32 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  k2 func, IntPtr 
23fa0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  pvUser);....    
23fb0 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65 33  // Since sqlite3
23fc0 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73 20  _config() takes 
23fd0 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d  a variable argum
23fe0 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76  ent list, we hav
23ff0 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65  e to overload de
24000 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20  clarations..    
24010 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69  // for all possi
24020 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20 77  ble calls that w
24030 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d 0a  e want to use...
24040 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24050 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24070 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
24080 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
24090 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
240a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
240b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
240c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
240d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
240e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
240f0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
24100 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
24110 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24120 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24130 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24140 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e 6f  qlite3_config_no
24150 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f  ne(SQLiteConfigO
24160 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a 23  psEnum op);....#
24170 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24180 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24190 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
241a0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
241b0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
241c0 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
241d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
241e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
241f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24200 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24210 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
24220 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
24230 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
24240 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
24250 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
24260 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24270 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e 74  lite3_config_int
24280 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73  (SQLiteConfigOps
24290 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c  Enum op, int val
242a0 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
242b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
242c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
242d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
242e0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
242f0 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
24300 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24310 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24320 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24330 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24340 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24350 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
24360 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
24370 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24380 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24390 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
243a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
243b0 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74 65  onfig_log(SQLite
243c0 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70  ConfigOpsEnum op
243d0 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62  , SQLiteLogCallb
243e0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
243f0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
24400 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24410 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24420 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24430 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
24440 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
24450 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
24460 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24470 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24480 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
244a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
244b0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
244c0 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  _db_config")]..#
244d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
244e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
244f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24500 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e  e sqlite3_db_con
24510 66 69 67 5f 63 68 61 72 70 74 72 28 49 6e 74 50  fig_charptr(IntP
24520 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e  tr db, SQLiteCon
24530 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c  figDbOpsEnum op,
24540 20 49 6e 74 50 74 72 20 63 68 61 72 50 74 72 29   IntPtr charPtr)
24550 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24560 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24570 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24580 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24590 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
245a0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
245b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
245c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
245d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
245e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
245f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24600 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
24610 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
24620 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
24630 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24640 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24650 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
24660 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 5f  3_db_config_int_
24670 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64 62  refint(IntPtr db
24680 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  , SQLiteConfigDb
24690 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20  OpsEnum op, int 
246a0 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20 72  value, ref int r
246b0 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  esult);....#if !
246c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
246d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
246e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
246f0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
24700 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63   = "sqlite3_db_c
24710 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43  onfig", CallingC
24720 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
24730 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
24740 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
24750 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24760 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
24770 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
24780 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  b_config")]..#en
24790 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
247a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
247b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
247c0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
247d0 67 5f 69 6e 74 70 74 72 5f 74 77 6f 5f 69 6e 74  g_intptr_two_int
247e0 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  s(IntPtr db, SQL
247f0 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e  iteConfigDbOpsEn
24800 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 74  um op, IntPtr pt
24810 72 2c 20 69 6e 74 20 69 6e 74 30 2c 20 69 6e 74  r, int int0, int
24820 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23 69 66 20 21   int1);....#if !
24830 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24840 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24850 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24860 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24870 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24880 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24890 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
248a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
248b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
248c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
248d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
248e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
248f0 74 65 33 5f 64 62 5f 73 74 61 74 75 73 28 49 6e  te3_db_status(In
24900 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 53  tPtr db, SQLiteS
24910 74 61 74 75 73 4f 70 73 45 6e 75 6d 20 6f 70 2c  tatusOpsEnum op,
24920 20 72 65 66 20 69 6e 74 20 63 75 72 72 65 6e 74   ref int current
24930 2c 20 72 65 66 20 69 6e 74 20 68 69 67 68 77 61  , ref int highwa
24940 74 65 72 2c 20 69 6e 74 20 72 65 73 65 74 46 6c  ter, int resetFl
24950 61 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ag);....#if !PLA
24960 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24970 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24980 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24990 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
249a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
249b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
249c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
249d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
249e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
249f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24a00 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
24a10 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63 6b  sqlite3_rollback
24a20 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c  _hook(IntPtr db,
24a30 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
24a40 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
24a50 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
24a60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24a70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24a80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24a90 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24aa0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24ab0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24ac0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24ad0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24ae0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24af0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24b00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24b10 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
24b20 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50 74  _db_handle(IntPt
24b30 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
24b40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24b50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24b60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24b70 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24b80 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24ba0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24bc0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24bd0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24be0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24bf0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24c00 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65 5f  ite3_db_release_
24c10 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64 62  memory(IntPtr db
24c20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24c30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24c40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24c50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24c60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24c70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24c80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24c90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24ca0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24cb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24cc0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24cd0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
24ce0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
24cf0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
24d00 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  Ptr dbName);....
24d10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24d20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24d30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24d40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24d50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24d60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24d70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24d80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24d90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24da0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24db0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24dc0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f   int sqlite3_db_
24dd0 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20  readonly(IntPtr 
24de0 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d  db, IntPtr dbNam
24df0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
24e00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24e10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24e20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24e30 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
24e40 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
24e50 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  ame", CallingCon
24e60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24e70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24e80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24e90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24ea0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
24eb0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
24ec0 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e  filename")]..#en
24ed0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24ee0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24ef0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64  IntPtr sqlite3_d
24f00 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65 73  b_filename_bytes
24f10 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
24f20 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  [] dbName);....#
24f30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24f40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24f50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24f60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24f70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24f80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24f90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24fa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24fb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24fc0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24fd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24fe0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6e  IntPtr sqlite3_n
24ff0 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72 20  ext_stmt(IntPtr 
25000 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  db, IntPtr stmt)
25010 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25020 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25030 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25040 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25050 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25060 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25070 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25080 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25090 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
250a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
250b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
250c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
250d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78  rCode sqlite3_ex
250e0 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ec(IntPtr db, by
250f0 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e 74  te[] strSql, Int
25100 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c 20  Ptr pvCallback, 
25110 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c 20  IntPtr pvParam, 
25120 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73  ref IntPtr errMs
25130 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
25140 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25150 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25170 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25180 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25190 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
251a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
251b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
251c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
251d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
251e0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
251f0 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  te3_release_memo
25200 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d  ry(int nBytes);.
25210 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25220 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25230 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25240 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25250 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25260 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25270 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25280 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25290 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
252a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
252b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
252c0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
252d0 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 49  get_autocommit(I
252e0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
252f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25300 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25310 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25320 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25330 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25340 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25350 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25360 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25370 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25380 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25390 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
253a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
253b0 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
253c0 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e 74  result_codes(Int
253d0 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f 66  Ptr db, int onof
253e0 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  f);....#if !PLAT
253f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25400 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25410 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25420 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25430 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25440 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25450 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25470 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25480 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25490 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
254a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
254b0 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64  errcode(IntPtr d
254c0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
254d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
254e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
254f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25500 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25510 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25520 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25530 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25540 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25550 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25560 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25570 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
25580 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
25590 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
255a0 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
255b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
255c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
255d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
255e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
255f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25610 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25620 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25630 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25640 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25660 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
25670 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72 72  errstr(SQLiteErr
25680 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20 33  orCode rc); /* 3
25690 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20  .7.15+ */....   
256a0 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
256b0 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61 20  3_log() takes a 
256c0 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65 6e  variable argumen
256d0 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65 20  t list, we have 
256e0 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c  to overload decl
256f0 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  arations..    //
25700 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
25710 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f  e calls.  For no
25720 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20 65  w, we are only e
25730 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c 65  xposing a single
25740 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20 20   string, and..  
25750 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20 74    // depend on t
25760 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f 72  he caller to for
25770 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e 0d  mat the string..
25780 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25790 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
257a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
257b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
257c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
257d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
257e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
257f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25800 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25810 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25820 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25830 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
25840 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  og(SQLiteErrorCo
25850 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79 74  de iErrCode, byt
25860 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d  e[] zFormat);...
25870 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25880 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25890 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
258a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
258b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
258c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
258d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
258e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
258f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25900 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25910 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25920 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25930 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63  e sqlite3_file_c
25940 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64 62  ontrol(IntPtr db
25950 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d 65  , byte[] zDbName
25960 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72  , int op, IntPtr
25970 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20 21   pArg);....#if !
25980 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25990 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
259a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
259b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
259c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
259d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
259e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
259f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25a00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25a10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25a20 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
25a30 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  tr sqlite3_backu
25a40 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64 65  p_init(IntPtr de
25a50 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44 65  stDb, byte[] zDe
25a60 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20 73  stName, IntPtr s
25a70 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d 20  ourceDb, byte[] 
25a80 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d  zSourceName);...
25a90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25aa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25ab0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25ac0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
25ad0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
25ae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25af0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25b00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25b10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25b20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25b30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25b40 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25b50 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
25b60 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61 63  _step(IntPtr bac
25b70 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29 3b  kup, int nPage);
25b80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25b90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25ba0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25bb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25bc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25bd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
25be0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25bf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
25c00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25c10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
25c20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25c30 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
25c40 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69 6e  _backup_remainin
25c50 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  g(IntPtr backup)
25c60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25c70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25c80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25c90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25cb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25cc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25cd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25ce0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25cf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25d00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25d10 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
25d20 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f 75  3_backup_pagecou
25d30 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  nt(IntPtr backup
25d40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25d50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25d60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25d70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25d80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25d90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25da0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25db0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25dc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25dd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25de0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25df0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25e00 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
25e10 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72  lob_close(IntPtr
25e20 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21   blob);....#if !
25e30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25e40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25e50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25e60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25e70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25e80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25e90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25ea0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25eb0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25ec0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25ed0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
25ee0 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74  sqlite3_blob_byt
25ef0 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b  es(IntPtr blob);
25f00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25f10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25f20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25f30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25f50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
25f60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25f70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
25f80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25f90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
25fa0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25fb0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
25fc0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
25fd0 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64 62  b_open(IntPtr db
25fe0 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
25ff0 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
26000 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c   byte[] colName,
26010 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e 74   long rowId, int
26020 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74 50   flags, ref IntP
26030 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a  tr ptrBlob);....
26040 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26050 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26070 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
26080 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
260a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
260b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
260c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
260d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
260e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
260f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26100 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65   sqlite3_blob_re
26110 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  ad(IntPtr blob, 
26120 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
26130 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
26140 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
26150 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
26160 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
26170 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
26180 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26190 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
261a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
261b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
261c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
261d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
261e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
261f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
26200 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26210 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
26220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
26230 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70 65  lite3_blob_reope
26240 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20 6c  n(IntPtr blob, l
26250 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23  ong rowId);....#
26260 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26270 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26280 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26290 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
262a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
262b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
262c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
262d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
262e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
262f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26300 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26310 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26320 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72 69  sqlite3_blob_wri
26330 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  te(IntPtr blob, 
26340 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
26350 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61 79  agedType.LPArray
26360 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65 72  )] byte[] buffer
26370 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e 74  , int count, int
26380 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69 66   offset);....#if
26390 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
263a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
263b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
263c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
263d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
263e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
263f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
26400 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
26410 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
26420 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26430 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
26440 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
26450 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
26460 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  ab(IntPtr db, In
26470 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23  tPtr zSQL);....#
26480 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26490 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
264a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
264b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
264c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
264d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
264e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
264f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26500 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26510 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26520 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26530 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
26540 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66 6f  printf(IntPtr fo
26550 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74 29  rmat, __arglist)
26560 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
26570 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
26580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  ////....    // S
265d0 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20  QLite API calls 
265e0 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65  that are provide
265f0 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e  d by "well-known
26600 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61  " extensions tha
26610 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63 61  t may be statica
26620 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b  lly..    // link
26630 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69  ed with the SQLi
26640 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c  te core native l
26650 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79  ibrary currently
26660 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72   in use...    #r
26670 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20  egion extension 
26680 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73  sqlite api calls
26690 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 76 69  ..    #region vi
266a0 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 23 69 66  rtual table..#if
266b0 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
266c0 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
266d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
266e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
266f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26700 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
26710 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26720 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26730 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26740 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26750 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26760 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26770 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
26780 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
26790 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
267a0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
267b0 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c  tr name, ref sql
267c0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75  ite3_module modu
267d0 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65  le, IntPtr pClie
267e0 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79  ntData, xDestroy
267f0 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29  Module xDestroy)
26800 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26810 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26820 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26830 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26840 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26850 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26860 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26870 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26880 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26890 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
268a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
268b0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
268c0 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
268d0 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  e(IntPtr pModule
268e0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
268f0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
26900 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26950 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 65 73  .    #region ses
26960 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 0d 0a  sion extension..
26970 23 69 66 20 49 4e 54 45 52 4f 50 5f 53 45 53 53  #if INTEROP_SESS
26980 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e 0d 0a 23  ION_EXTENSION..#
26990 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
269a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
269b0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
269c0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
269d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
269e0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
269f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
26a00 65 67 61 74 65 20 69 6e 74 20 78 53 65 73 73 69  egate int xSessi
26a10 6f 6e 46 69 6c 74 65 72 28 49 6e 74 50 74 72 20  onFilter(IntPtr 
26a20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
26a30 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  pTblName);....#i
26a40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26a50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26a60 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
26a70 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
26a80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
26a90 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
26aa0 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
26ab0 67 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67  gate SQLiteChang
26ac0 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65 73 75  eSetConflictResu
26ad0 6c 74 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c  lt xSessionConfl
26ae0 69 63 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ict(IntPtr conte
26af0 78 74 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  xt, SQLiteChange
26b00 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 20  SetConflictType 
26b10 74 79 70 65 2c 20 49 6e 74 50 74 72 20 69 74 65  type, IntPtr ite
26b20 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  rator);....#if !
26b30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26b40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26b50 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
26b60 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
26b70 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26b80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26b90 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74  internal delegat
26ba0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
26bb0 65 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 28  e xSessionInput(
26bc0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
26bd0 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 72 65  IntPtr pData, re
26be0 66 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d  f int nData);...
26bf0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26c00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26c10 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26c20 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26c30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26c40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26c50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64  ..    internal d
26c60 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26c70 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e  rorCode xSession
26c80 4f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63 6f  Output(IntPtr co
26c90 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44  ntext, IntPtr pD
26ca0 61 74 61 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b  ata, int nData);
26cb0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
26cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d00 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
26d10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26d20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
26d30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26d40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
26d50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
26d60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26d70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26d80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26d90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26da0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
26db0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
26dc0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
26dd0 65 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 49 6e  ession_create(In
26de0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
26df0 64 62 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  dbName, ref IntP
26e00 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
26e10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26e20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26e30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26e40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
26e50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26e60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26e70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
26e80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26e90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26ea0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26eb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26ec0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73   void sqlite3ses
26ed0 73 69 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74 50  sion_delete(IntP
26ee0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
26ef0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26f00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26f10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26f20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
26f30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26f40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26f50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
26f60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26f70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26f80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26f90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26fa0 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
26fb0 69 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50 74  ion_enable(IntPt
26fc0 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 65  r session, int e
26fd0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
26fe0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26ff0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27000 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27010 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27020 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27030 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27040 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27050 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27060 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27070 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27080 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
27090 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
270a0 6e 64 69 72 65 63 74 28 49 6e 74 50 74 72 20 73  ndirect(IntPtr s
270b0 65 73 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64 69  ession, int indi
270c0 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rect);....#if !P
270d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
270e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
270f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27100 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
27110 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
27120 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27130 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
27140 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27150 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
27160 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
27170 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
27180 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
27190 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63 68  e3session_attach
271a0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
271b0 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 29   byte[] tblName)
271c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
271d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
271e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
271f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
27200 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27210 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
27220 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
27230 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
27240 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
27250 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
27260 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
27270 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
27280 65 33 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65 5f  e3session_table_
27290 66 69 6c 74 65 72 28 49 6e 74 50 74 72 20 73 65  filter(IntPtr se
272a0 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 46  ssion, xSessionF
272b0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 49  ilter xFilter, I
272c0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
272d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
272e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
272f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27300 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27320 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27330 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
27340 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
27350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
27360 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
27370 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27380 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
27390 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
273a0 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28 49 6e 74  on_changeset(Int
273b0 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66  Ptr session, ref
273c0 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
273d0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 68 61   ref IntPtr pCha
273e0 6e 67 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20 21  ngeSet);...#if !
273f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27400 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27410 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27420 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27430 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27440 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27450 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27460 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27470 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27480 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27490 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
274a0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
274b0 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28  te3session_diff(
274c0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
274d0 62 79 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61 6d  byte[] fromDbNam
274e0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
274f0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65 72  e, ref IntPtr er
27500 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rMsg);....#if !P
27510 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27520 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
27530 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27540 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
27550 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
27560 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27570 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
27580 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27590 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
275a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
275b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
275c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
275d0 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
275e0 65 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  et(IntPtr sessio
275f0 6e 2c 20 72 65 66 20 69 6e 74 20 6e 50 61 74 63  n, ref int nPatc
27600 68 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72  hSet, ref IntPtr
27610 20 70 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d 0a   pPatchSet);....
27620 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27630 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27640 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27650 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27660 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27670 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27680 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27690 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
276a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
276b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
276c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
276d0 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
276e0 69 6f 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74 50  ion_isempty(IntP
276f0 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a  tr session);....
27700 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27710 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27720 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27730 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27740 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27760 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27770 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27780 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
27790 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
277a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
277b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
277c0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
277d0 74 5f 73 74 61 72 74 28 72 65 66 20 49 6e 74 50  t_start(ref IntP
277e0 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74  tr iterator, int
277f0 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74   nChangeSet, Int
27800 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b  Ptr pChangeSet);
27810 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27820 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27830 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
27840 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27860 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27870 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27880 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27890 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
278a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
278b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
278c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
278d0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
278e0 67 65 73 65 74 5f 6e 65 78 74 28 49 6e 74 50 74  geset_next(IntPt
278f0 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a  r iterator);....
27900 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27910 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27920 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27930 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27940 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27950 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27960 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27970 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27980 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
27990 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
279a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
279b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
279c0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
279d0 74 5f 6f 70 28 49 6e 74 50 74 72 20 69 74 65 72  t_op(IntPtr iter
279e0 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  ator, ref IntPtr
279f0 20 70 54 62 6c 4e 61 6d 65 2c 20 72 65 66 20 69   pTblName, ref i
27a00 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65 66  nt nColumns, ref
27a10 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
27a20 72 41 63 74 69 6f 6e 43 6f 64 65 20 6f 70 2c 20  rActionCode op, 
27a30 72 65 66 20 69 6e 74 20 62 49 6e 64 69 72 65 63  ref int bIndirec
27a40 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
27a50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27a60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
27a70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27a80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27a90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27aa0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27ab0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27ac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27ad0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27ae0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27af0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27b00 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
27b10 68 61 6e 67 65 73 65 74 5f 70 6b 28 49 6e 74 50  hangeset_pk(IntP
27b20 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66  tr iterator, ref
27b30 20 49 6e 74 50 74 72 20 70 50 72 69 6d 61 72 79   IntPtr pPrimary
27b40 4b 65 79 73 2c 20 72 65 66 20 69 6e 74 20 6e 43  Keys, ref int nC
27b50 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23 69 66 20  olumns);....#if 
27b60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27b70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27b90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
27ba0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
27bb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
27bc0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
27bd0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27be0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
27bf0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27c00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
27c10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
27c20 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 6c  ite3changeset_ol
27c30 64 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  d(IntPtr iterato
27c40 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64  r, int columnInd
27c50 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ex, ref IntPtr p
27c60 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  Value);....#if !
27c70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27c80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27c90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27ca0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27cb0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27cc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27cd0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27ce0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27cf0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27d00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27d10 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27d20 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27d30 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 77  te3changeset_new
27d40 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
27d50 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  , int columnInde
27d60 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56  x, ref IntPtr pV
27d70 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
27d80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27d90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
27da0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27db0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
27dc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
27dd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27de0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
27df0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27e00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
27e10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
27e20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
27e30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
27e40 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 66  e3changeset_conf
27e50 6c 69 63 74 28 49 6e 74 50 74 72 20 69 74 65 72  lict(IntPtr iter
27e60 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e  ator, int column
27e70 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74  Index, ref IntPt
27e80 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  r pValue);....#i
27e90 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27ea0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27eb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
27ec0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
27ed0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
27ee0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27ef0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
27f00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27f10 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
27f20 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27f30 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
27f40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
27f50 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
27f60 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28 49 6e 74  fk_conflicts(Int
27f70 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65  Ptr iterator, re
27f80 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 29  f int conflicts)
27f90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
27fa0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27fb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
27fc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
27fd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27fe0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
27ff0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28000 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28010 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28020 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28030 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28040 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28050 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28060 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28  ngeset_finalize(
28070 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29  IntPtr iterator)
28080 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28090 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
280a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
280b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
280c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
280d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
280e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
280f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28100 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28110 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28120 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28130 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28140 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28150 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 28 69 6e  ngeset_invert(in
28160 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72 20 70 49  t nIn, IntPtr pI
28170 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c  n, ref int nOut,
28180 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74   ref IntPtr pOut
28190 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
281a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
281b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
281c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
281d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
281e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
281f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
28200 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
28210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28220 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
28230 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
28240 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
28250 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
28260 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 28 69  angeset_concat(i
28270 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72 20 70 41  nt nA, IntPtr pA
28280 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74 50 74 72  , int nB, IntPtr
28290 20 70 42 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75   pB, ref int nOu
282a0 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f  t, ref IntPtr pO
282b0 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
282c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
282d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
282e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
282f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28300 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28310 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28320 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28340 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28350 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28360 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28370 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28380 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e 65 77 28  changegroup_new(
28390 72 65 66 20 49 6e 74 50 74 72 20 63 68 61 6e 67  ref IntPtr chang
283a0 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20  eGroup);....#if 
283b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
283c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
283d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
283e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
283f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28400 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28410 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
28420 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28430 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28440 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28450 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28460 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28470 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
28480 61 64 64 28 49 6e 74 50 74 72 20 63 68 61 6e 67  add(IntPtr chang
28490 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e 44 61 74  eGroup, int nDat
284a0 61 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 29  a, IntPtr pData)
284b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
284c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
284d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
284e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
284f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28500 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
28510 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28520 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28540 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28550 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28560 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28570 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28580 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74 28  ngegroup_output(
28590 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
285a0 75 70 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74  up, ref int nDat
285b0 61 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 44  a, ref IntPtr pD
285c0 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ata);....#if !PL
285d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
285e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
285f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28600 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28610 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28620 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28630 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
28640 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28650 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
28660 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
28670 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
28680 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
28690 70 5f 64 65 6c 65 74 65 28 49 6e 74 50 74 72 20  p_delete(IntPtr 
286a0 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d  changeGroup);...
286b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
286c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
286d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
286e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
286f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
28700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28710 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
28720 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
28730 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
28740 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
28750 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
28760 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
28770 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
28780 65 74 5f 61 70 70 6c 79 28 49 6e 74 50 74 72 20  et_apply(IntPtr 
28790 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53  db, int nChangeS
287a0 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e  et, IntPtr pChan
287b0 67 65 53 65 74 2c 20 78 53 65 73 73 69 6f 6e 46  geSet, xSessionF
287c0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78  ilter xFilter, x
287d0 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20  SessionConflict 
287e0 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74  xConflict, IntPt
287f0 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
28800 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28810 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28820 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28830 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
28840 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28850 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28860 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
28870 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28880 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28890 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
288a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
288b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
288c0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
288d0 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49 6e 74 50  _apply_strm(IntP
288e0 74 72 20 64 62 2c 20 78 53 65 73 73 69 6f 6e 49  tr db, xSessionI
288f0 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
28900 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f  Ptr pIn, xSessio
28910 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c  nFilter xFilter,
28920 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63   xSessionConflic
28930 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74  t xConflict, Int
28940 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
28950 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
28960 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
28970 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28980 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
28990 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
289a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
289b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
289c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
289d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
289e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
289f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
28a00 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
28a10 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
28a20 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72 6d 28 78  et_concat_strm(x
28a30 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
28a40 70 75 74 41 2c 20 49 6e 74 50 74 72 20 70 49 6e  putA, IntPtr pIn
28a50 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  A, xSessionInput
28a60 20 78 49 6e 70 75 74 42 2c 20 49 6e 74 50 74 72   xInputB, IntPtr
28a70 20 70 49 6e 42 2c 20 78 53 65 73 73 69 6f 6e 4f   pInB, xSessionO
28a80 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
28a90 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
28aa0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28ab0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28ac0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28ad0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28ae0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28af0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28b00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28b10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28b20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28b30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28b40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28b50 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28b60 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
28b70 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d 28 78 53  t_invert_strm(xS
28b80 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
28b90 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20  ut, IntPtr pIn, 
28ba0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
28bb0 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
28bc0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
28bd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28be0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28bf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28c00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28c10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28c20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28c30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
28c40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28c50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
28c60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
28c70 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
28c80 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
28c90 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
28ca0 5f 73 74 72 6d 28 72 65 66 20 49 6e 74 50 74 72  _strm(ref IntPtr
28cb0 20 69 74 65 72 61 74 6f 72 2c 20 78 53 65 73 73   iterator, xSess
28cc0 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c  ionInput xInput,
28cd0 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d   IntPtr pIn);...
28ce0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
28cf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
28d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28d10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
28d20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
28d30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28d40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
28d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
28d60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
28d70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
28d80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
28d90 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
28da0 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
28db0 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 28  _changeset_strm(
28dc0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
28dd0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
28de0 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
28df0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
28e00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28e10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28e20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28e30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28e40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28e50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28e60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
28e70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28e80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
28e90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
28ea0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
28eb0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
28ec0 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65  3session_patchse
28ed0 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65  t_strm(IntPtr se
28ee0 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f  ssion, xSessionO
28ef0 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49  utput xOutput, I
28f00 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
28f10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28f20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28f30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28f40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28f50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28f60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28f70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28f80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28f90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28fa0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28fb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28fc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28fd0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
28fe0 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e 74  oup_add_strm(Int
28ff0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c  Ptr changeGroup,
29000 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78   xSessionInput x
29010 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49  Input, IntPtr pI
29020 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
29030 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
29040 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
29050 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29060 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
29070 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
29080 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
29090 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
290a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
290b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
290c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
290d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
290e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
290f0 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75  hangegroup_outpu
29100 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68  t_strm(IntPtr ch
29110 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73  angeGroup, xSess
29120 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
29130 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
29140 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65  ..#endif..    #e
29150 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23 65  ndregion..    #e
29160 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
29170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
291c0 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74     #region sqlit
291d0 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61  e interop api ca
291e0 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63  lls (.NET Compac
291f0 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79  t Framework only
29200 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  )..#if PLATFORM_
29210 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29220 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e   && !SQLITE_STAN
29230 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  DARD..    [DllIm
29240 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29250 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
29260 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
29270 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  id sqlite3_last_
29280 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74  insert_rowid_int
29290 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
292a0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b  ref long rowId);
292b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
292c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
292d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
292e0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
292f0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
29300 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66  used_interop(ref
29310 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
29320 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29330 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
29340 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29350 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
29360 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
29370 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69  hwater_interop(i
29380 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65  nt resetFlag, re
29390 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
293a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
293b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
293c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
293d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
293e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
293f0 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e  3_bind_double_in
29400 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
29410 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
29420 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  f double value);
29430 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
29440 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
29450 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29460 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
29470 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
29480 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
29490 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
294a0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
294b0 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
294c0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
294d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
294e0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
294f0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69  te3_bind_int64_i
29500 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69  nterop")]..    i
29510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29520 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
29530 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
29540 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f  nd_uint64_intero
29550 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
29560 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c  nt index, ref ul
29570 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
29580 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29590 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
295a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
295b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
295c0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c  te3_column_doubl
295d0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
295e0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
295f0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
29600 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
29610 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29620 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
29630 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29640 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
29650 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  umn_int64_intero
29660 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
29670 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f  nt index, ref lo
29680 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
29690 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
296a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
296b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
296c0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
296d0 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f  e3_value_double_
296e0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70  interop(IntPtr p
296f0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
29700 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
29710 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29720 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
29730 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29740 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  void sqlite3_val
29750 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  ue_int64_interop
29760 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49  (IntPtr p, ref I
29770 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
29780 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
29790 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
297a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
297b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
297c0 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
297d0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
297e0 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64  r context, ref d
297f0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
29800 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29810 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
29820 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29830 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
29840 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
29850 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
29860 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49  r context, ref I
29870 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  nt64 value);....
29880 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
29890 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
298a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
298b0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
298c0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
298d0 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f  sposable_module_
298e0 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
298f0 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74    IntPtr db, Int
29900 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72  Ptr name, IntPtr
29910 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56   pModule, int iV
29920 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20  ersion, xCreate 
29930 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20  xCreate,..      
29940 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e    xConnect xConn
29950 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20  ect, xBestIndex 
29960 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73  xBestIndex, xDis
29970 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
29980 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ect,..        xD
29990 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c  estroy xDestroy,
299a0 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43   xOpen xOpen, xC
299b0 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69  lose xClose, xFi
299c0 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20  lter xFilter,.. 
299d0 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65         xNext xNe
299e0 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78  xt, xEof xEof, x
299f0 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20  Column xColumn, 
29a00 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78  xRowId xRowId, x
29a10 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d  Update xUpdate,.
29a20 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20  .        xBegin 
29a30 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53  xBegin, xSync xS
29a40 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f  ync, xCommit xCo
29a50 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20  mmit, xRollback 
29a60 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
29a70 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
29a80 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c  n xFindFunction,
29a90 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
29aa0 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  , xSavepoint xSa
29ab0 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20  vepoint,..      
29ac0 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65    xRelease xRele
29ad0 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ase, xRollbackTo
29ae0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e   xRollbackTo, In
29af0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
29b00 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74  ,..        xDest
29b10 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
29b20 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64  oyModule);..#end
29b30 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46  if..    // PLATF
29b40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29b50 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
29b60 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65  STANDARD..    #e
29b70 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
29b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29bd0 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
29be0 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66  e Delegates..#if
29bf0 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
29c00 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
29c10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29c20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
29c30 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
29c40 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
29c50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
29c60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
29c70 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
29c80 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72  iteErrorCode xCr
29c90 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  eate(..        I
29ca0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
29cb0 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
29cc0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
29cd0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
29ce0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
29cf0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
29d00 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
29d10 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
29d20 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
29d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
29d80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
29d90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29da0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
29db0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
29dc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29dd0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
29de0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
29df0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
29e00 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
29e10 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
29e20 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
29e30 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
29e40 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
29e50 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
29e60 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
29e70 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
29e80 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
29e90 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
29ea0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
29eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
29f00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29f10 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
29f20 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
29f30 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
29f40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
29f50 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
29f60 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
29f70 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
29f80 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49  ndex(..        I
29f90 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
29fa0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
29fb0 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
29fc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
2a010 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2a020 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2a030 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2a040 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2a050 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a060 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2a070 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2a080 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2a090 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
2a0a0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
2a0b0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2a0c0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a110 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2a120 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a130 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2a140 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2a150 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2a160 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2a170 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2a180 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2a190 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
2a1a0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2a1b0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
2a1c0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a210 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2a220 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a230 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2a240 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2a250 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2a260 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2a270 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2a280 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2a290 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a2a0 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
2a2b0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2a2c0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2a2d0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
2a2e0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a330 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2a340 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a350 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2a360 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2a370 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2a380 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2a390 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2a3a0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2a3b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
2a3c0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ose(..        In
2a3d0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2a3e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a430 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2a440 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a450 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2a460 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2a470 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2a480 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2a490 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2a4a0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2a4b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a4c0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2a4d0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2a4e0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
2a4f0 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
2a500 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
2a510 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2a520 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2a530 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a  r argv..    );..
2a540 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a590 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2a5a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2a5b0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2a5c0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2a5d0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2a5e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2a5f0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2a600 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2a610 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
2a620 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2a630 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
2a640 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a690 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2a6a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a6b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2a6c0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2a6d0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2a6e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2a6f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2a700 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
2a710 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49  xEof(..        I
2a720 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
2a730 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a780 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a790 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a7a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a7b0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2a7c0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2a7d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a7e0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2a7f0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2a800 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a810 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
2a820 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2a830 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r,..        IntP
2a840 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
2a850 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
2a860 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2a8c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2a8d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2a8e0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2a8f0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2a900 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a910 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2a920 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2a930 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2a940 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
2a950 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2a960 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  or,..        ref
2a970 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
2a980 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2a9e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a9f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2aa00 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2aa10 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2aa20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2aa30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2aa40 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2aa50 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2aa60 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
2aa70 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2aa80 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2aa90 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2aaa0 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
2aab0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
2aac0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2ab20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2ab30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ab40 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2ab50 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2ab60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2ab70 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2ab80 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2ab90 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2aba0 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
2abb0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2abc0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2ac20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2ac30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2ac40 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2ac50 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2ac60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2ac70 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2ac80 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2ac90 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2aca0 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20  ode xSync(..    
2acb0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2acc0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acf0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23  ///////////....#
2ad20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2ad30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2ad40 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2ad50 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2ad60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2ad70 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2ad80 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2ad90 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2ada0 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ode xCommit(..  
2adb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2adc0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
2add0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ae20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2ae30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2ae40 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2ae50 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2ae60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2ae70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2ae80 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2ae90 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2aea0 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28  rCode xRollback(
2aeb0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2aec0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
2aed0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af20 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2af30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2af40 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2af50 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2af60 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2af70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2af80 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2af90 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46   delegate int xF
2afa0 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
2afb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2afc0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2afd0 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20   nArg,..        
2afe0 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
2aff0 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
2b000 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
2b010 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ck,..        ref
2b020 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74   IntPtr pUserDat
2b030 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  a..    );....   
2b040 20 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 2f 2f 2f 2f  ////////////////
2b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b090 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2b0a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b0b0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2b0c0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2b0d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2b0e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2b0f0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2b100 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
2b110 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20  Code xRename(.. 
2b120 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2b130 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
2b140 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29  tPtr zNew..    )
2b150 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1a0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2b1b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b1c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2b1d0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2b1e0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2b1f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2b200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2b210 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2b220 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61  iteErrorCode xSa
2b230 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
2b240 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2b250 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
2b260 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
2b270 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2b280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2c0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2b2d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b2e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2b2f0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2b300 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2b310 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2b320 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2b330 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2b340 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65  eErrorCode xRele
2b350 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ase(..        In
2b360 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2b370 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
2b380 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
2b390 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b3e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2b3f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2b400 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2b410 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2b420 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2b430 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2b440 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2b450 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2b460 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
2b470 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  To(..        Int
2b480 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2b490 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
2b4a0 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
2b4b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b500 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b510 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b520 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b530 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b540 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b550 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b560 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b570 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74  egate void xDest
2b580 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72  royModule(IntPtr
2b590 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a   pClientData);..
2b5a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
2b5b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b610 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
2b620 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20  Structures..#if 
2b630 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
2b640 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75  TABLE..    [Stru
2b650 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
2b660 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
2b670 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2b680 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f  truct sqlite3_mo
2b690 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  dule..    {..   
2b6a0 20 20 20 20 20 2f 2a 20 20 20 30 20 2a 2f 20 70       /*   0 */ p
2b6b0 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69  ublic int iVersi
2b6c0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  on;..        /* 
2b6d0 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43    8 */ public xC
2b6e0 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a  reate xCreate;..
2b6f0 20 20 20 20 20 20 20 20 2f 2a 20 20 31 36 20 2a          /*  16 *
2b700 2f 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63  / public xConnec
2b710 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
2b720 20 20 20 20 20 2f 2a 20 20 32 34 20 2a 2f 20 70       /*  24 */ p
2b730 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78  ublic xBestIndex
2b740 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20   xBestIndex;..  
2b750 20 20 20 20 20 20 2f 2a 20 20 33 32 20 2a 2f 20        /*  32 */ 
2b760 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65  public xDisconne
2b770 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d  ct xDisconnect;.
2b780 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34 30 20  .        /*  40 
2b790 2a 2f 20 70 75 62 6c 69 63 20 78 44 65 73 74 72  */ public xDestr
2b7a0 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20  oy xDestroy;..  
2b7b0 20 20 20 20 20 20 2f 2a 20 20 34 38 20 2a 2f 20        /*  48 */ 
2b7c0 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
2b7d0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  en;..        /* 
2b7e0 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   56 */ public xC
2b7f0 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20  lose xClose;..  
2b800 20 20 20 20 20 20 2f 2a 20 20 36 34 20 2a 2f 20        /*  64 */ 
2b810 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78  public xFilter x
2b820 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  Filter;..       
2b830 20 2f 2a 20 20 37 32 20 2a 2f 20 70 75 62 6c 69   /*  72 */ publi
2b840 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a  c xNext xNext;..
2b850 20 20 20 20 20 20 20 20 2f 2a 20 20 38 30 20 2a          /*  80 *
2b860 2f 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45  / public xEof xE
2b870 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  of;..        /* 
2b880 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   88 */ public xC
2b890 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a  olumn xColumn;..
2b8a0 20 20 20 20 20 20 20 20 2f 2a 20 20 39 36 20 2a          /*  96 *
2b8b0 2f 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20  / public xRowId 
2b8c0 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20  xRowId;..       
2b8d0 20 2f 2a 20 31 30 34 20 2a 2f 20 70 75 62 6c 69   /* 104 */ publi
2b8e0 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  c xUpdate xUpdat
2b8f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  e;..        /* 1
2b900 31 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65  12 */ public xBe
2b910 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
2b920 20 20 20 20 20 2f 2a 20 31 32 30 20 2a 2f 20 70       /* 120 */ p
2b930 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e  ublic xSync xSyn
2b940 63 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  c;..        /* 1
2b950 32 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f  28 */ public xCo
2b960 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20  mmit xCommit;.. 
2b970 20 20 20 20 20 20 20 2f 2a 20 31 33 36 20 2a 2f         /* 136 */
2b980 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
2b990 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20  k xRollback;..  
2b9a0 20 20 20 20 20 20 2f 2a 20 31 34 34 20 2a 2f 20        /* 144 */ 
2b9b0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
2b9c0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
2b9d0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  on;..        /* 
2b9e0 31 35 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 52  152 */ public xR
2b9f0 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a  ename xRename;..
2ba00 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d          /* The m
2ba10 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
2ba20 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
2ba30 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64   the sqlite3_mod
2ba40 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20  ule..         * 
2ba50 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62  object.  Those b
2ba60 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
2ba70 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74  sion 2 and great
2ba80 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  er. */..        
2ba90 2f 2a 20 31 36 30 20 2a 2f 20 70 75 62 6c 69 63  /* 160 */ public
2baa0 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76   xSavepoint xSav
2bab0 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  epoint;..       
2bac0 20 2f 2a 20 31 36 38 20 2a 2f 20 70 75 62 6c 69   /* 168 */ publi
2bad0 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65  c xRelease xRele
2bae0 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ase;..        /*
2baf0 20 31 37 36 20 2a 2f 20 70 75 62 6c 69 63 20 78   176 */ public x
2bb00 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
2bb10 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
2bb20 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb70 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2bb80 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2bb90 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2bba0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2bbb0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
2bbc0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2bbd0 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69 63   /*  0 */ public
2bbe0 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b   IntPtr pModule;
2bbf0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38 20  ..        /*  8 
2bc00 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52  */ public int nR
2bc10 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52  ef; /* NO LONGER
2bc20 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
2bc30 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69    /* 16 */ publi
2bc40 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
2bc50 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2bc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc90 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
2bcb0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
2bcc0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
2bcd0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
2bce0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
2bcf0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
2bd00 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
2bd10 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63    /* 0 */ public
2bd20 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a   IntPtr pVTab;..
2bd30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd80 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2bd90 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
2bda0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
2bdb0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
2bdc0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
2bdd0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
2bde0 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  int..    {..    
2bdf0 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
2be00 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
2be10 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
2be20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
2be30 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
2be40 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
2be50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2be60 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2be70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2be80 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21  if (constraint !
2be90 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2bea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2beb0 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
2bec0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f  = constraint.iCo
2bed0 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
2bee0 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73         op = cons
2bef0 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20  traint.op;..    
2bf00 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62              usab
2bf10 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  le = constraint.
2bf20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20  usable;..       
2bf30 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66           iTermOf
2bf40 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e  fset = constrain
2bf50 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t.iTermOffset;..
2bf60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2bf70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2bf80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2bfd0 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70         /* 0 */ p
2bfe0 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
2bff0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  n;..        /* 4
2c000 20 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74   */ public SQLit
2c010 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
2c020 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  Op op;..        
2c030 2f 2a 20 35 20 2a 2f 20 70 75 62 6c 69 63 20 62  /* 5 */ public b
2c040 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
2c050 20 20 20 20 20 2f 2a 20 38 20 2a 2f 20 70 75 62       /* 8 */ pub
2c060 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66  lic int iTermOff
2c070 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  set;..    }.... 
2c080 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c0d0 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
2c0e0 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
2c0f0 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
2c100 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
2c110 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
2c120 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20  rderby..    {.. 
2c130 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
2c140 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
2c150 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rby(..          
2c160 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64    SQLiteIndexOrd
2c170 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20  erBy orderBy..  
2c180 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c190 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
2c1a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2c1b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72            if (or
2c1c0 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  derBy != null)..
2c1d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2c1f0 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79  Column = orderBy
2c200 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20  .iColumn;..     
2c210 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20             desc 
2c220 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d  = orderBy.desc;.
2c230 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c240 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c250 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2c2a0 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20          /* 0 */ 
2c2b0 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
2c2c0 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
2c2d0 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
2c2e0 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20   /* 4 */ public 
2c2f0 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20  byte desc;   /* 
2c300 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
2c310 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a  False for ASC. *
2c320 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
2c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c380 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
2c390 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
2c3a0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
2c3b0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
2c3c0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
2c3d0 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20  traint_usage..  
2c3e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
2c3f0 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
2c400 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
2c410 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
2c420 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
2c430 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73  traintUsage cons
2c440 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20  traintUsage..   
2c450 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c460 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2c470 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2c480 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
2c490 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20  straintUsage != 
2c4a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2c4b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c4c0 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20        argvIndex 
2c4d0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
2c4e0 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20  e.argvIndex;..  
2c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d                om
2c500 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55  it = constraintU
2c510 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20  sage.omit;..    
2c520 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c530 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2c590 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72     public int ar
2c5a0 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e  gvIndex; /* if >
2c5b0 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
2c5c0 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
2c5d0 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20   xFilter */..   
2c5e0 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
2c5f0 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f   omit;     /* Do
2c600 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
2c610 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72   for this constr
2c620 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  aint */..    }..
2c630 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2c640 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2c690 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2c6a0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2c6b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2c6c0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
2c6d0 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20  x_info..    {.. 
2c6e0 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73         /* Inputs
2c6f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2c700 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   0 */ public int
2c710 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a   nConstraint; /*
2c720 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
2c730 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e  es in aConstrain
2c740 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  t */..        /*
2c750 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e    8 */ public In
2c760 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
2c770 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  ;..        /* 16
2c780 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
2c790 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e  OrderBy;    /* N
2c7a0 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
2c7b0 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d   in aOrderBy */.
2c7c0 0a 20 20 20 20 20 20 20 20 2f 2a 20 32 34 20 2a  .        /* 24 *
2c7d0 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
2c7e0 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20  aOrderBy;..     
2c7f0 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f     /* Outputs */
2c800 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 33 32 20  ..        /* 32 
2c810 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2c820 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
2c830 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  e;..        /* 4
2c840 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  0 */ public int 
2c850 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20  idxNum;         
2c860 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64    /* Number used
2c870 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65   to identify the
2c880 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
2c890 20 20 20 2f 2a 20 34 38 20 2a 2f 20 70 75 62 6c     /* 48 */ publ
2c8a0 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72  ic string idxStr
2c8b0 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69  ;        /* Stri
2c8c0 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74  ng, possibly obt
2c8d0 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
2c8e0 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20  e3_malloc */..  
2c8f0 20 20 20 20 20 20 2f 2a 20 35 36 20 2a 2f 20 70        /* 56 */ p
2c900 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
2c910 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
2c920 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
2c930 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
2c940 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
2c950 20 20 20 20 2f 2a 20 36 30 20 2a 2f 20 70 75 62      /* 60 */ pub
2c960 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43  lic int orderByC
2c970 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75  onsumed;  /* Tru
2c980 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
2c990 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a  lready ordered *
2c9a0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 34  /..        /* 64
2c9b0 20 2a 2f 20 70 75 62 6c 69 63 20 64 6f 75 62 6c   */ public doubl
2c9c0 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
2c9d0 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
2c9e0 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
2c9f0 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
2ca00 20 20 20 2f 2a 20 37 32 20 2a 2f 20 70 75 62 6c     /* 72 */ publ
2ca10 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65  ic long estimate
2ca20 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69  dRows;   /* Esti
2ca30 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  mated number of 
2ca40 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f  rows returned */
2ca50 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 30 20  ..        /* 80 
2ca60 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65  */ public SQLite
2ca70 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c  IndexFlags idxFl
2ca80 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20  ags; /* Mask of 
2ca90 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41  SQLITE_INDEX_SCA
2caa0 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20  N_* flags */..  
2cab0 20 20 20 20 20 20 2f 2a 20 38 38 20 2a 2f 20 70        /* 88 */ p
2cac0 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73  ublic long colUs
2cad0 65 64 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 49  ed;         /* I
2cae0 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f  nput: Mask of co
2caf0 6c 75 6d 6e 73 20 75 73 65 64 20 62 79 20 73 74  lumns used by st
2cb00 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20  atement */..    
2cb10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  }..#endif..    #
2cb20 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
2cb30 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2cb40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2cb90 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 2e 4e 45  ...  #region .NE
2cba0 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2cbb0 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72 69 74 69  ork (only) Criti
2cbc0 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  calHandle Class.
2cbd0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2cbe0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2cbf0 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2cc00 61 63 74 20 63 6c 61 73 73 20 43 72 69 74 69 63  act class Critic
2cc10 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70  alHandle : IDisp
2cc20 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20  osable..  {..   
2cc30 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69   private bool _i
2cc40 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72  sClosed;..    pr
2cc50 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72 20 68  otected IntPtr h
2cc60 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72  andle;....    pr
2cc70 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61 6c  otected Critical
2cc80 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e  Handle(IntPtr in
2cc90 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
2cca0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2ccb0 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64  handle = invalid
2ccc0 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20  HandleValue;..  
2ccd0 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
2cce0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  false;..    }...
2ccf0 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61  .    ~CriticalHa
2cd00 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  ndle()..    {.. 
2cd10 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
2cd20 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  se);..    }.... 
2cd30 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
2cd40 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b  Cleanup()..    {
2cd50 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73 43  ..      if (!IsC
2cd60 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d  losed)..      {.
2cd70 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69  .        this._i
2cd80 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
2cd90 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73  .        if (!Is
2cda0 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20  Invalid)..      
2cdb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52    {..          R
2cdc0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
2cdd0 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75  .          GC.Su
2cde0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
2cdf0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
2ce00 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
2ce10 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
2ce20 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20  oid Close()..   
2ce30 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
2ce40 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d  e(true);..    }.
2ce50 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
2ce60 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
2ce70 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
2ce80 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
2ce90 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
2cea0 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
2ceb0 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
2cec0 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20  osing)..    {.. 
2ced0 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d       Cleanup();.
2cee0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
2cef0 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63 74  otected abstract
2cf00 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
2cf10 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72  dle();....    pr
2cf20 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65 74  otected void Set
2cf30 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61  Handle(IntPtr va
2cf40 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
2cf50 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75     handle = valu
2cf60 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
2cf70 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
2cf80 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2cf90 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2cfa0 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
2cfb0 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70  ;..      GC.Supp
2cfc0 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
2cfd0 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  s);..    }....  
2cfe0 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
2cff0 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20  Closed..    {.. 
2d000 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
2d010 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a  n _isClosed; }..
2d020 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
2d030 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f  lic abstract boo
2d040 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
2d050 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
2d060 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65      }....  }..#e
2d070 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
2d080 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
2d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
2d0e0 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gion SQLiteConne
2d0f0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73  ctionHandle Clas
2d100 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65  s..    // Handle
2d110 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20  s the unmanaged 
2d120 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72  database pointer
2d130 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66  , and provides f
2d140 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20  inalization..   
2d150 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20   // support for 
2d160 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  it...    interna
2d170 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
2d180 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2d190 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
2d1a0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
2d1b0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
2d1c0 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f  RD && !PLATFORM_
2d1d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2d1e0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d1f0 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  al delegate void
2d200 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
2d210 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
2d220 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
2d230 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64  nectionHandle hd
2d240 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  l, IntPtr db);..
2d250 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d260 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43  al static CloseC
2d270 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
2d280 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  k closeConnectio
2d290 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
2d2a0 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
2d2b0 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65  eConnection;..#e
2d2c0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2d2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d310 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50  ///////....#if P
2d320 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2d330 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2d340 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
2d350 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
2d360 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
2d370 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
2d380 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d3d0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2d3e0 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e bool ownHandle
2d3f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
2d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d440 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d450 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
2d460 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
2d470 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e  IntPtr(SQLiteCon
2d480 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62  nectionHandle db
2d490 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2d4a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 62            if (db
2d4b0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2d4c0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2d4d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2d4e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2d4f0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64           lock (d
2d500 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  b.syncRoot)..#en
2d510 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d520 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d530 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d540 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20  rn db.handle;.. 
2d550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2d560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d570 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2d580 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2d590 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2d5a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d5f0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d600 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  al SQLiteConnect
2d610 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  ionHandle(IntPtr
2d620 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e   db, bool ownHan
2d630 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
2d640 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64    : this(ownHand
2d650 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  le)..        {..
2d660 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2d670 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2d680 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2d690 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2d6a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d6b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d6c0 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c     this.ownHandl
2d6d0 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a  e = ownHandle;..
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a  SetHandle(db);..
2d700 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2d710 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2d720 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d770 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2d780 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2d790 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61  andle(bool ownHa
2d7a0 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
2d7b0 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
2d7c0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2d7d0 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
2d7e0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2d7f0 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d   if (ownHandle).
2d800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d810 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
2d820 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2d830 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  Data.connectionC
2d840 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2d850 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d860 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d8b0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
2d8c0 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
2d8d0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
2d8e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2d8f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2d900 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2d910 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2d920 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2d930 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2d950 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72  f (!ownHandle) r
2d960 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
2d970 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2d980 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2d990 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2d9a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2d9b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2d9d0 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
2d9e0 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
2d9f0 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
2da00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2da10 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
2da20 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53  .Zero);....#if S
2da30 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
2da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da50 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
2da60 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2da70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2da80 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63       closeConnec
2da90 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
2daa0 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d  Handle);..#else.
2dab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dac0 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
2dad0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2dae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2daf0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2db00 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2db10 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
2db20 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  le);..#endif....
2db30 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2db40 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2db50 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2db60 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2db70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db90 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
2dba0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
2dbb0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
2dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbd0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
2dbe0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
2dbf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2dc00 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
2dc10 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
2dc20 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
2dc30 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2dc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2dc50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dc60 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2dc70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2dc80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2dc90 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
2dca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2dcb0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
2dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2dcd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dce0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
2dcf0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2dd00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dd10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd30 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
2dd40 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
2dd50 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd70 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
2dd80 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dda0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ddb0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2ddc0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2ddd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dde0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
2ddf0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2de00 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  Data.connectionC
2de10 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2de20 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2de30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2de40 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2de50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2de60 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2de70 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2de80 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2de90 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2dea0 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
2deb0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
2dec0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2ded0 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
2dee0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2def0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2df00 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2df10 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2df20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2df30 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df50 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2df60 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2df70 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2df80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df90 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2dfa0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2dfb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dfc0 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
2dfd0 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c  Connection: {0},
2dfe0 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
2dff0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e000 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
2e010 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
2e020 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e030 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e040 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2e050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2e060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e070 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
2e080 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e090 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
2e0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2e0b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2e0c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2e0e0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2e0f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e100 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2e120 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
2e130 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
2e140 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e150 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
2e160 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
2e170 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
2e180 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2e190 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
2e1a0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
2e1b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e200 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
2e210 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2e220 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
2e230 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
2e240 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e250 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
2e260 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
2e270 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63  (ref DebugData.c
2e280 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
2e290 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2e2a0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2e2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e300 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77    public bool Ow
2e310 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  nHandle..       
2e320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e330 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2e340 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e350 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e360 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2e370 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2e380 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2e390 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3b0 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e     return ownHan
2e3c0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
2e3d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e3e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e3f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2e400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e440 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2e450 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2e460 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
2e470 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e480 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2e490 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2e4a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2e4b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2e4c0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2e4d0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2e4e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2e4f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e500 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e510 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
2e520 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2e530 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2e540 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e550 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e560 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2e5b0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2e5c0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2e5d0 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
2e5e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2e5f0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2e600 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2e610 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2e620 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2e630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e650 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
2e660 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
2e670 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e680 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2e690 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2e6a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
2e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
2e700 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74  egion SQLiteStat
2e710 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73  ementHandle Clas
2e720 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
2e730 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
2e740 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
2e750 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74 61  naged SQLite sta
2e760 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e  tements...    in
2e770 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2e780 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ass SQLiteStatem
2e790 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  entHandle : Crit
2e7a0 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
2e7b0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2e7c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2e7d0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2e7e0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
2e7f0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
2e800 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
2e810 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e870 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2e880 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2e890 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
2e8a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2e8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2e8f0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2e900 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
2e910 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
2e920 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2e930 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20   stmt)..        
2e940 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2e950 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29  f (stmt != null)
2e960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e970 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2e980 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9a0 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52  lock (stmt.syncR
2e9b0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9e0 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74       return stmt
2e9f0 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
2ea00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2ea10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2ea20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2ea30 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2ea40 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2ea50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2eaa0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
2eab0 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
2eac0 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
2ead0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
2eae0 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20  IntPtr stmt)..  
2eaf0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
2eb00 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2eb10 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2eb20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2eb30 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2eb40 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2eb50 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2eb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb70 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
2eb80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2eb90 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d     SetHandle(stm
2eba0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
2ebb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2ebc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ebd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2ec20 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ate SQLiteStatem
2ec30 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  entHandle()..   
2ec40 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
2ec50 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2ec60 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
2ec70 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2ec80 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
2ec90 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
2eca0 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65   DebugData.state
2ecb0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
2ecc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2ecd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2ed30 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
2ed40 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
2ed50 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
2ed60 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
2ed70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ed80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2ed90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2eda0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2edb0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
2edc0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
2edd0 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
2ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2edf0 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
2ee00 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
2ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2ee20 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
2ee30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee50 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
2ee60 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
2ee70 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
2ee80 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
2ee90 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2eea0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2eeb0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2eec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eed0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2eee0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2eef0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2ef00 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2ef10 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2ef20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2ef30 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2ef40 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef60 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
2ef70 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ent: {0}", local
2ef80 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
2ef90 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2efa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2efb0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2efc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2efd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2efe0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2eff0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2f000 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2f010 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2f020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f040 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
2f050 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f080 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2f090 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
2f0a0 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c  ement(cnn, handl
2f0b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2f0d0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
2f0e0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2f0f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f100 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f110 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
2f120 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2f130 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2f140 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2f150 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
2f160 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
2f170 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
2f180 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
2f190 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2f1a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2f1b0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
2f1c0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2f1d0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2f1e0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2f1f0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
2f200 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
2f210 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
2f220 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
2f230 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2f240 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
2f250 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2f260 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2f270 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2f280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f2a0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2f2b0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2f2c0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2f2d0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2f2f0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2f300 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2f310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f320 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65    "FinalizeState
2f330 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ment: {0}, excep
2f340 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
2f350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f360 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
2f370 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2f380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f3a0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2f3b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f3c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2f3d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2f3e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2f3f0 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
2f400 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2f410 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2f420 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2f430 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2f440 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2f450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f460 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f470 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2f480 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
2f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2f4b0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2f4c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f4d0 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
2f4e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2f4f0 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2f500 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2f510 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f560 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2f570 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
2f580 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
2f590 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
2f5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2f5b0 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
2f5c0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2f5d0 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
2f5e0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  ntCount);..     
2f5f0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2f600 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2f650 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2f660 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
2f670 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
2f680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f690 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
2f6a0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2f6b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2f6c0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2f6d0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2f6e0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f710 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
2f720 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
2f730 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2f740 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f750 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2f760 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2f770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7b0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
2f7c0 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
2f7d0 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
2f7e0 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
2f7f0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2f800 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2f810 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2f820 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2f830 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2f840 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f850 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f860 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
2f870 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
2f880 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2f890 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
2f8a0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2f8b0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f900 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2f910 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
2f920 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
2f930 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
2f940 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
2f950 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
2f960 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
2f970 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
2f980 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
2f990 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
2f9a0 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
2f9b0 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
2f9c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2f9d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2f9e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
2f9f0 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
2fa00 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2fa10 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
2fa20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fa70 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2fa80 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
2fa90 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
2faa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2faf0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2fb00 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
2fb10 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
2fb20 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70  Ptr(SQLiteBackup
2fb30 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a  Handle backup)..
2fb40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2fb50 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75         if (backu
2fb60 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  p != null)..    
2fb70 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2fb80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2fb90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2fba0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2fbb0 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29  backup.syncRoot)
2fbc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2fbd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbf0 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68   return backup.h
2fc00 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2fc10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2fc20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2fc30 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2fc40 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2fc50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2fcb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2fcc0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
2fcd0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2fce0 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
2fcf0 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
2fd00 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
2fd10 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2fd20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2fd30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2fd40 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2fd50 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2fd60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2fd80 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fda0 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70  SetHandle(backup
2fdb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2fdc0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2fdd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2fde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fe20 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2fe30 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  te SQLiteBackupH
2fe40 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
2fe50 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
2fe60 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2fe70 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
2fe80 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2fe90 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
2fea0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
2feb0 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75  ugData.backupCou
2fec0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
2fed0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2fee0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2ff30 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
2ff40 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
2ff50 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
2ff60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ff70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2ff80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
2ff90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2ffa0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2ffb0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2ffc0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
2ffd0 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
2ffe0 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
2fff0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
30000 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
30010 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
30020 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
30030 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
30040 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
30050 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
30060 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63  teBase.FinishBac
30070 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  kup(cnn, localHa
30080 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
30090 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
300a0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
300b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
300c0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
300d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
300e0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
300f0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
30100 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
30110 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30130 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
30140 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
30150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30160 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
30170 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  up: {0}", localH
30180 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
30190 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
301a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
301b0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
301c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
301e0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
301f0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
30200 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
30210 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
30220 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30230 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30240 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
30250 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30280 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
30290 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
302a0 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  cnn, handle);.. 
302b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302c0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
302d0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
302e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30300 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
30310 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
30320 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30330 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
30340 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
30350 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f  bugData.backupCo
30360 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
30370 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
30380 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30390 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
303a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
303b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
303c0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
303d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
303e0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
303f0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
30400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
30410 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
30420 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
30430 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
30440 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
30450 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
30460 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
30470 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30480 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
304a0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
304b0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
304c0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
304f0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
30500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30510 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
30520 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
30530 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
30540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30550 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
30560 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
30570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30580 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30590 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
305a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
305b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
305c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
305d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
305e0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
305f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
30600 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30610 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30620 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
30630 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
30640 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
30650 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30660 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
30670 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
30680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30690 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
306a0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
306b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
306c0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
306d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
306e0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
306f0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
30700 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30750 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
30760 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
30770 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
30780 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
30790 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
307a0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
307b0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
307c0 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
307d0 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  pCount);..      
307e0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
307f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30840 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
30850 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
30860 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
30870 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30880 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
30890 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
308a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
308b0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
308c0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
308d0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
308f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30900 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
30910 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
30920 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
30930 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30940 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
30950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
30960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
309b0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
309c0 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
309d0 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
309e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
309f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
30a00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
30a10 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
30a20 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
30a30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30a40 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30a50 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
30a60 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
30a70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
30a80 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
30a90 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
30aa0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
30ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30af0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
30b00 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
30b10 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
30b20 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
30b30 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
30b40 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
30b50 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74 73 2e 0d  e blob objects..
30b60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
30b70 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
30b80 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a 20 43 72  eBlobHandle : Cr
30b90 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
30ba0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30bb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30bc0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
30bd0 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
30be0 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
30bf0 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
30c00 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
30c10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30c60 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
30c70 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
30c80 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
30c90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30ce0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
30cf0 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
30d00 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
30d10 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 62 6c  iteBlobHandle bl
30d20 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ob)..        {..
30d30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
30d40 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  blob != null).. 
30d50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
30d60 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
30d70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
30d80 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
30d90 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74  k (blob.syncRoot
30da0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
30db0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30dd0 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 2e 68 61    return blob.ha
30de0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
30df0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30e00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30e10 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
30e20 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
30e30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
30e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30e90 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
30ea0 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53 51 4c 69  eBlobHandle(SQLi
30eb0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
30ec0 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62  le cnn, IntPtr b
30ed0 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 20 20  lob)..          
30ee0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
30ef0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
30f00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
30f10 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
30f20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
30f30 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
30f40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30f50 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
30f60 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
30f70 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
30f80 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20 20 20  ndle(blob);..   
30f90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30fa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
30fb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ff0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31000 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
31010 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 29 0d 0a  teBlobHandle()..
31020 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
31030 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
31040 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
31050 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
31060 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
31070 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
31080 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c  ref DebugData.bl
31090 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  obCount);..#endi
310a0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
310b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
31100 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
31110 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
31120 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
31130 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
31140 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
31150 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
31160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
31170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
31180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
31190 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
311a0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
311b0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
311d0 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
311e0 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
311f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31200 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
31210 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
31220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31230 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
31240 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c  eBlob(cnn, local
31250 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  Handle);....#if 
31260 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
31270 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
31280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31290 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
312a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
312b0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
312c0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
312d0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
312e0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
312f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31300 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
31310 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
31320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31330 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f         "CloseBlo
31340 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  b: {0}", localHa
31350 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
31360 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
31370 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31380 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
31390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
313a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
313b0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
313c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
313d0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
313e0 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
313f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31400 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31410 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
31420 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
31430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31450 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
31460 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c  e.CloseBlob(cnn,
31470 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31490 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
314a0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
314b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
314d0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
314e0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31500 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
31510 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
31520 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d  ata.blobCount);.
31530 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
31540 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
31550 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
31560 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
31570 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
31580 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
31590 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
315a0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
315b0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
315c0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
315d0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
315e0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
315f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31600 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
31610 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
31620 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
31630 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
31640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31650 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31660 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
31670 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
31680 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
31690 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
316a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
316b0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
316c0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
316d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316e0 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b     "CloseBlob: {
316f0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
31700 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
31710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
31720 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
31730 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
31740 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31750 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
31760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31770 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31780 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
31790 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
317a0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
317b0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
317c0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
317d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
317e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
317f0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
31800 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
31810 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31830 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
31840 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
31850 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31860 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
31870 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
31880 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
31890 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
318a0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
318b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
318c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
318d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31910 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
31920 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
31930 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
31940 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
31950 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31960 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
31970 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
31980 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
31990 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20  a.blobCount);.. 
319a0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
319b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
319c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
319d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
319e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
319f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
31a10 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
31a20 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
31a30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31a40 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
31a50 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
31a60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
31a70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
31a80 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
31a90 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
31aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31ab0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31ac0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31ad0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
31ae0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
31af0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31b00 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31b10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31b20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31b70 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
31b80 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
31b90 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
31ba0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
31bb0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
31bc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
31bd0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
31be0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
31bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c10 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
31c20 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
31c30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31c40 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
31c50 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
31c60 6f 6e 0d 0a 7d 0d 0a                             on..}..