System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact cce2b72f80c5f9fa047d412f022bc87a52727929:


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 44 65 6c 65 67 61 74   Private Delegat
6bf0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  es..      /// <s
6c00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6c10: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
6c20: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
6c30: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
6c40: 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65  loading a native
6c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
6c60: 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20  ary, based on a 
6c70: 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72  file name, and r
6c80: 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61  eturning the loa
6c90: 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ded module..    
6ca0: 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20    /// handle... 
6cb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6cc0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6cd0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6ce0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6cf0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6d00: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6d10: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6d30: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6d40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6d50: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6d60: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6d70: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6d80: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6d90: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6da0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6db0: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
6dc0: 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ate IntPtr LoadL
6dd0: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d  ibraryCallback(.
6de0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6df0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
6e00: 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    );..      #end
6e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6e70: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
6e80: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
6e90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6ea0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
6eb0: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
6ec0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
6ed0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
6ee0: 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20  ing the Win32.. 
6ef0: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
6f00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6f10: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6f20: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6f30: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6f40: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6f50: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6f60: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6f80: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6f90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6fa0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6fb0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6fc0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6fd0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6fe0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6ff0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7000: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7010: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
7020: 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20  raryWin32(..    
7030: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7040: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
7050: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
7060: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
7070: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7080: 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61  sWin32.LoadLibra
7090: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
70a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7100: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7110: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
7140: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
7150: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
7160: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
7170: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
7180: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
7190: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
71a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
71b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
71c0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
71d0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
71e0: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
71f0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
7200: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7210: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7220: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7230: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
7240: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
7250: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
7260: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
7270: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
7280: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7290: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
72a0: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
72b0: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
72c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
72d0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
72e0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
72f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
7300: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7310: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
7320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
7330: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
7340: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
7350: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
7360: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
7370: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
7380: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
73e0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
73f0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
7400: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7410: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
7420: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
7430: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
7440: 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20  rary file...    
7450: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7470: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
7480: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7490: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
74a0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
74b0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
74c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
74d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
74e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
74f0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
7500: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
7510: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
7520: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
7530: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
7540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7550: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
7560: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
7580: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
7590: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
75a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f   {..          Lo
75b0: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
75c0: 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61  k callback = Loa
75d0: 64 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a  dLibraryWin32;..
75e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
75f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7600: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7610: 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  !HelperMethods.I
7620: 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
7630: 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62             callb
7640: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
7650: 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d  yPosix;..#endif.
7660: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
7670: 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c  urn callback(fil
7680: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
7690: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
76a0: 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
76b0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
7710: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
7720: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
7730: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f  Static Class (PO
7740: 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46  SIX)..#if !PLATF
7750: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7760: 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  WORK..  /// <sum
7770: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
7780: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
7790: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
77a0: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
77b0: 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20   POSIX APIs...  
77c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
77d0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
77e0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
77f0: 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ]..  internal st
7800: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
7810: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
7820: 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  six..  {..      
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7880: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7890: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
78a0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
78b0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
78c0: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
78d0: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
78e0: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
78f0: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
7900: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
7910: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
7920: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
7930: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
7940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7950: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7960: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
7970: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7980: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
7990: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
79a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
79b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
79c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
79d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
79e0: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
79f0: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
7a00: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
7a10: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
7a20: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
7a30: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
7a40: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
7a50: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
7a60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
7a70: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7a80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
7a90: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
7aa0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
7ab0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
7ac0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
7ad0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7ae0: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
7af0: 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c  rt("__Internal",
7b00: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64   EntryPoint = "d
7b10: 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20  lopen",..       
7b20: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
7b30: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
7b40: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
7b50: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
7b60: 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20  t.Ansi,..       
7b70: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
7b80: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
7b90: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
7ba0: 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   = true,..      
7bb0: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
7bc0: 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20   = true)]..     
7bd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7be0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64   extern IntPtr d
7bf0: 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c  lopen(string fil
7c00: 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29  eName, int mode)
7c10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
7c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c60: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
7c70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7c80: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
7c90: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64  h dlopen(), bind
7ca0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
7cb0: 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  lazily...      /
7cc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7cd0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
7ce0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a  nst int RTLD_LAZ
7cf0: 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20  Y = 0x1;....    
7d00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
7d50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
7d70: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
7d80: 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e  ), bind function
7d90: 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65   calls immediate
7da0: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
7db0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7dc0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
7dd0: 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30  int RTLD_NOW = 0
7de0: 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x2;....      ///
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
7e40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7e50: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
7e60: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61  ith dlopen(), ma
7e70: 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61  ke symbols globa
7e80: 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  lly available...
7e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7ea0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
7eb0: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
7ec0: 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31  TLD_GLOBAL = 0x1
7ed0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00;....      ///
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f20: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
7f30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7f40: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
7f50: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70  ith dlopen(), op
7f60: 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47  posite of RTLD_G
7f70: 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64  LOBAL, and the d
7f80: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  efault...      /
7f90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7fa0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
7fb0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43  nst int RTLD_LOC
7fc0: 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20  AL = 0x000;.... 
7fd0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8020: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8030: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
8040: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
8050: 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c  en(), the defaul
8060: 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20  ts used by this 
8070: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  class...      //
8080: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8090: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f      internal  co
80a0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
80b0: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
80c0: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
80d0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
80e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
80f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8140: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
8150: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
8160: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
8170: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
8180: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
8190: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
81a0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
81b0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
81c0: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
81d0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
81e0: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
81f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8200: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
8210: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
8220: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
8230: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8240: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
8250: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
8260: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  .  {..      ////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82b0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
82c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
82d0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
82e0: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
82f0: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
8300: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
8310: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
8320: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
8330: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
8340: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
8350: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
8360: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
8370: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
8380: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8390: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
83a0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
83b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
83c0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
83d0: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
83e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
83f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
8400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
8420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
8430: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
8440: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
8450: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
8460: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
8470: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8480: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8490: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
84a0: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
84b0: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
84c0: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
84d0: 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67  #endif.. Calling
84e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
84f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
8500: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
8510: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
8520: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8530: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8540: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
8550: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
8560: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
8570: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
8580: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8590: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
85a0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
85b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
85c0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f  extern IntPtr Lo
85d0: 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67  adLibrary(string
85e0: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   fileName);.... 
85f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8640: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
8650: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8670: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8680: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
8690: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
86a0: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
86b0: 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65  e Win32 GetSyste
86c0: 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  mInfo..      ///
86d0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
86e0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
86f0: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
8700: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
8710: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
8720: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
8730: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8740: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8750: 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a  ="systemInfo">..
8760: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79        /// The sy
8770: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
8780: 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
8790: 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68   filled in by th
87a0: 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
87b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
87c0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
87d0: 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c  t("coredll", Cal
87e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
87f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8800: 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20  on.Winapi)]..   
8810: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8820: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
8830: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
8840: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
8850: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
8860: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
88b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
88c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
88d0: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
88e0: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
88f0: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
8900: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
8910: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
8920: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
8930: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
8940: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
8950: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
8960: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
8970: 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65  ernal enum Proce
8980: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8990: 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d   : ushort /* COM
89a0: 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a  PAT: Win32. */..
89b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
89c0: 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20     Intel = 0,.. 
89d0: 20 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20           MIPS = 
89e0: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c  1,..          Al
89f0: 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20  pha = 2,..      
8a00: 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c      PowerPC = 3,
8a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20  ..          SHx 
8a20: 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 4,..          
8a30: 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20  ARM = 5,..      
8a40: 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20      IA64 = 6,.. 
8a50: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34           Alpha64
8a60: 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 7,..         
8a70: 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20   MSIL = 8,..    
8a80: 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c        AMD64 = 9,
8a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32  ..          IA32
8aa0: 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d  _on_Win64 = 10,.
8ab0: 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f  .          Unkno
8ac0: 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20  wn = 0xFFFF..   
8ad0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8b30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8b40: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72      /// This str
8b50: 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20  ucture contains 
8b60: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
8b70: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f  t the current co
8b80: 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20  mputer. This..  
8b90: 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73      /// includes
8ba0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74   the processor t
8bb0: 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20  ype, page size, 
8bc0: 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73  memory addresses
8bd0: 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f  , etc...      //
8be0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8bf0: 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
8c00: 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
8c10: 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20  uential)]..     
8c20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
8c30: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20   SYSTEM_INFO..  
8c40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8c50: 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f   public Processo
8c60: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50  rArchitecture wP
8c70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8c80: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ture;..         
8c90: 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77   public ushort w
8ca0: 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54  Reserved; /* NOT
8cb0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
8cc0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
8cd0: 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e  dwPageSize; /* N
8ce0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
8cf0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
8d00: 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70  Ptr lpMinimumApp
8d10: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
8d20: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
8d30: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
8d40: 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d  c IntPtr lpMaxim
8d50: 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64  umApplicationAdd
8d60: 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  ress; /* NOT USE
8d70: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
8d80: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63  public uint dwAc
8d90: 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73  tiveProcessorMas
8da0: 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  k; /* NOT USED *
8db0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
8dc0: 6c 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65  lic uint dwNumbe
8dd0: 72 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f  rOfProcessors; /
8de0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
8df0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8e00: 75 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72  uint dwProcessor
8e10: 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Type; /* NOT USE
8e20: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
8e30: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c  public uint dwAl
8e40: 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72  locationGranular
8e50: 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ity; /* NOT USED
8e60: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
8e70: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
8e80: 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a  ocessorLevel; /*
8e90: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
8ea0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
8eb0: 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72  short wProcessor
8ec0: 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54  Revision; /* NOT
8ed0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
8ee0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a  }..#endif..  }..
8ef0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8f00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8f50: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
8f60: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
8f70: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
8f80: 61 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20  ass (SQLite)..  
8f90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8fa0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
8fb0: 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b  declares P/Invok
8fc0: 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c  e methods to cal
8fd0: 6c 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l native SQLite 
8fe0: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
8ff0: 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
9000: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9010: 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70  AMEWORK..  [Supp
9020: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
9030: 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64  eSecurity]..#end
9040: 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  if..  internal s
9050: 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61  tatic class Unsa
9060: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
9070: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70 75 62 6c  .  {..      publ
9080: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
9090: 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67 65  ExceptionMessage
90a0: 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20 20 20 20  Format =..      
90b0: 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
90c0: 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22  ption in \"{0}\"
90d0: 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a   method: {1}";..
90e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9130: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
9140: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
9150: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
9160: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
9170: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
9180: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
9190: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
91a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
91b0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
91c0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
91d0: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
91e0: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
91f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9200: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
9210: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
9220: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
9230: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
9240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9290: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
92a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
92b0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
92c0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
92d0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
92e0: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
92f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9300: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9310: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
9320: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
9330: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
9340: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
9350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9390: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
93a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
93b0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
93c0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
93d0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
93e0: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
93f0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
9400: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
9410: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
9420: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9430: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
9440: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
9450: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
9460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
9470: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
9480: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
9490: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
94a0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
94b0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
94c0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
94d0: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
94e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
9530: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9540: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
9550: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
9560: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
9570: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
9580: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
9590: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
95a0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
95b0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
95c0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
95d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
95e0: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
95f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9600: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9610: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
9620: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
9630: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
9640: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
9650: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
9660: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
9670: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
9680: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
96e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
96f0: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
9700: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
9710: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
9720: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9730: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
9740: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9750: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
9760: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
9770: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
9780: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
9790: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
97a0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
97b0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
97c0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
97d0: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
97e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
97f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
9800: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
9810: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
9820: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
9830: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
9840: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
9850: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
9860: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
9870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
98c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
98d0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
98e0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
98f0: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
9900: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
9910: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
9920: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
9930: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
9940: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
9950: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
9960: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
9970: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
9980: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
9990: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
99a0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
99b0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
99c0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
99d0: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
99e0: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
99f0: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
9a00: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
9a10: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
9a20: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
9a80: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
9a90: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
9aa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ab0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
9ac0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
9ad0: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
9ae0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
9af0: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
9b00: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
9b10: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
9b20: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
9b30: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
9b40: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
9b50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9b60: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9b70: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
9b80: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
9b90: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
9ba0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
9bb0: 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f  ///////..      /
9c00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9c10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
9c20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
9c30: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
9c40: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
9c50: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
9c60: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
9c70: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
9c80: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
9c90: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
9ca0: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
9cb0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
9cc0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
9cd0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
9ce0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
9cf0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
9d00: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
9d10: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
9d20: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
9d30: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
9d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
9d50: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
9d60: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
9d70: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
9d80: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
9d90: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
9da0: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
9db0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
9dc0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
9dd0: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
9de0: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
9df0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
9e00: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
9e10: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
9e20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9e30: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9e40: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
9e50: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
9e60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
9e70: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
9e80: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9ee0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ef0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
9f00: 63 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61  cached return va
9f10: 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  lue from the..  
9f20: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9f30: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
9f40: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
9f50: 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  od -OR- null if 
9f60: 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20  that method..   
9f70: 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72     /// has never
9f80: 20 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69   returned a vali
9f90: 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  d value...      
9fa0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9fb0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
9fc0: 61 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68  atic string cach
9fd0: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
9fe0: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ory;....      //
9ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a030: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a040: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a050: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
a060: 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a  s field is non-z
a070: 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65  ero, it indicate
a080: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s the..      ///
a090: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
a0a0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
a0b0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
a0c0: 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61  not able to loca
a0d0: 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  te a..      /// 
a0e0: 73 75 69 74 61 62 6c 65 20 61 73 73 65 6d 62 6c  suitable assembl
a0f0: 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  y directory.  Th
a100: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a110: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
a120: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
a130: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
a140: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
a150: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
a160: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
a170: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
a180: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
a190: 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a 20 20 20  rectory" />..   
a1a0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
a1b0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
a1c0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
a1d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a1e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
a1f0: 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73 65 6d 62  ic bool noAssemb
a200: 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
a210: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
a260: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a270: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a280: 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68  This is the cach
a290: 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ed return value 
a2a0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
a2b0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
a2c0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
a2d0: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ame" /> method -
a2e0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74  OR- null if that
a2f0: 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f   method..      /
a300: 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74  // has never ret
a310: 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61  urned a valid va
a320: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
a330: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a340: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
a350: 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 58 6d   string cachedXm
a360: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b  lConfigFileName;
a370: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a3d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a3e0: 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69  /// When this fi
a3f0: 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eld is non-zero,
a400: 20 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68   it indicates th
a410: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a420: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
a430: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
a440: 20 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20   method was not 
a450: 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61  able to locate a
a460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74  ..      /// suit
a470: 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75  able XML configu
a480: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
a490: 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
a4a0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
a4b0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
a4c0: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
a4d0: 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68  od will check th
a4e0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69  is..      /// fi
a4f0: 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61  eld and skips ca
a500: 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65  lls into the <se
a510: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
a520: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
a530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
a540: 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20 69  od whenever it i
a550: 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  s non-zero...   
a560: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a570: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
a580: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 58   static bool noX
a590: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
a5a0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
a5b0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a600: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
a610: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a620: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
a630: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
a640: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
a650: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
a660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a670: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
a680: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
a690: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
a6a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
a6b0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
a6c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a720: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a730: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
a740: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
a750: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
a760: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
a770: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
a780: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
a790: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
a7a0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
a7b0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
a7c0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
a7d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a7e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a7f0: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
a800: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
a810: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
a820: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
a830: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
a840: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a850: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
a860: 65 61 74 65 20 74 68 65 20 6c 69 73 74 73 20 6f  eate the lists o
a870: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
a880: 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 0d 0a  t will contain..
a890: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a8a0: 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75 6e 74     various count
a8b0: 73 20 75 73 65 64 20 69 6e 20 64 65 62 75 67 67  s used in debugg
a8c0: 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ing, including t
a8d0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
a8e0: 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66         number of
a8f0: 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74   times each sett
a900: 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65  ing value has be
a910: 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  en read...      
a920: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a930: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74    DebugData.Init
a940: 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e 64 69  ialize();..#endi
a950: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
a960: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
a970: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a980: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63     // NOTE: Chec
a990: 6b 20 69 66 20 61 20 64 65 62 75 67 67 65 72 20  k if a debugger 
a9a0: 6e 65 65 64 73 20 74 6f 20 62 65 20 61 74 74 61  needs to be atta
a9b0: 63 68 65 64 20 62 65 66 6f 72 65 20 64 6f 69 6e  ched before doin
a9c0: 67 20 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 20  g any..         
a9d0: 20 2f 2f 20 20 20 20 20 20 20 72 65 61 6c 20 77   //       real w
a9e0: 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ork...          
a9f0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 48 65  //..          He
aa00: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4d 61 79 62  lperMethods.Mayb
aa10: 65 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67  eBreakIntoDebugg
aa20: 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  er();....#if SQL
aa30: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
aa40: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
aa50: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
aa60: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69  ACTFRAMEWORK..#i
aa70: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
aa80: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
aa90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
aaa0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
aab0: 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c  e "No_PreLoadSQL
aac0: 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ite" environment
aad0: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
aae0: 20 28 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20   (to..          
aaf0: 2f 2f 20 20 20 20 20 20 20 61 6e 79 74 68 69 6e  //       anythin
ab00: 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 66 20  g), skip all of 
ab10: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
ab20: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
ab30: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
ab40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
ab50: 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
ab60: 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69  ("No_PreLoadSQLi
ab70: 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  te", null) != nu
ab80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
ab90: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64     return;..#end
aba0: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  if..#endif....  
abb0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
abc0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
abd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
abe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
abf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
ac00: 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74  ODO: Make sure t
ac10: 68 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61  his list is upda
ac20: 74 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f  ted if the suppo
ac30: 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  rted..          
ac40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f      //       pro
ac50: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
ac60: 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72  ure names and/or
ac70: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d   platform names.
ac80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
ac90: 2f 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e  /       changes.
aca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
acb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
acc0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
acd0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
ace0: 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  orms == null).. 
acf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ad20: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
ad30: 20 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20   Create the map 
ad40: 6f 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  of processor arc
ad50: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d  hitecture names.
ad60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad70: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70     //       to p
ad80: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73  latform names us
ad90: 69 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e  ing a case-insen
ada0: 73 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20  sitive string.. 
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adc0: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72   //       compar
add0: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
ade0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
adf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
ae00: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
ae10: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20  rePlatforms =.. 
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae30: 20 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e       new Diction
ae40: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
ae50: 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ng>(..          
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae70: 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f  StringComparer.O
ae80: 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65  rdinalIgnoreCase
ae90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
aea0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
aec0: 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65   NOTE: Setup the
aed0: 20 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72   list of platfor
aee0: 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74  m names associat
aef0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
af00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
af10: 20 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65      the supporte
af20: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
af30: 69 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20  itectures...    
af40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
af50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af60: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
af70: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
af80: 6d 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57  ms.Add("x86", "W
af90: 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20  in32");..       
afa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
afb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
afc0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
afd0: 4d 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a  MD64", "x64");..
afe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aff0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
b000: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
b010: 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74  .Add("IA64", "It
b020: 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20  anium");..      
b030: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
b040: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
b050: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
b060: 41 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d  ARM", "WinCE");.
b070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
b080: 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
b090: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
b0a0: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
b0b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b0c0: 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45  AMEWORK..#if PRE
b0d0: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
b0e0: 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARY..           
b0f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b100: 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20       // BUGBUG: 
b110: 57 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72  What about other
b120: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
b130: 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20  ains?..         
b140: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b150: 20 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69         if (_SQLi
b160: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
b170: 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
b180: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
b190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b1a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b1b0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
b1c0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
b1d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b1e0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
b1f0: 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  cture = null;...
b200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b210: 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f     /* IGNORED */
b220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b230: 20 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72      SearchForDir
b240: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b260: 65 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ef baseDirectory
b270: 2c 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41  , ref processorA
b280: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
b290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b2a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b2b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
b2c0: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65  : Attempt to pre
b2d0: 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65  -load the SQLite
b2e0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f   core library (o
b2f0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
b300: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
b310: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
b320: 61 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74  and store both t
b330: 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20  he file name..  
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b350: 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74  //       and nat
b360: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
b370: 65 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67  e for later usag
b380: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
b390: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b3a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49              /* I
b3b0: 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20  GNORED */..     
b3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
b3d0: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a  LoadSQLiteDll(..
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3f0: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
b400: 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72  ory, processorAr
b410: 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20  chitecture,..   
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61     ref _SQLiteNa
b440: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
b450: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
b460: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f             ref _
b470: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
b480: 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  leHandle);..    
b490: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
b4a0: 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dif..#endif..   
b4b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b4c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
b520: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b530: 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77   /// Combines tw
b540: 6f 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d  o path strings..
b550: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b560: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b570: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61   <param name="pa
b580: 74 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  th1">..      ///
b590: 20 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20   The first path 
b5a0: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
b5b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b5c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
b5d0: 20 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a   name="path2">..
b5e0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65        /// The se
b5f0: 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e  cond path -OR- n
b600: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
b610: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b620: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
b630: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
b640: 62 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e  bined path strin
b650: 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62  g -OR- null if b
b660: 6f 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69  oth of the origi
b670: 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20  nal path..      
b680: 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20  /// strings are 
b690: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
b6a0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
b6b0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b6c0: 63 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f  c string MaybeCo
b6d0: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
b6e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74        string pat
b6f0: 68 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  h1,..          s
b700: 74 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20  tring path2..   
b710: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
b720: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
b730: 28 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d  (path1 != null).
b740: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
b750: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b760: 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path2 != null)..
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f    return Path.Co
b790: 6d 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74  mbine(path1, pat
b7a0: 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h2);..          
b7b0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b7d0: 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20  rn path1;..     
b7e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b7f0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
b800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b810: 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20     if (path2 != 
b820: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
b830: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b840: 70 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20  path2;..        
b850: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
b860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b870: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
b880: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
b890: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b8f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b900: 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63  /// Resets the c
b910: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
b920: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
b930: 65 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  e value, thus fo
b940: 72 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  rcing the..     
b950: 20 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74   /// next call t
b960: 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
b970: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
b980: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
b990: 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
b9a0: 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
b9b0: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
b9c0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
b9d0: 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
b9e0: 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
b9f0: 2f 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  / XML configurat
ba00: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
ba10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ba20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
ba30: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
ba40: 52 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  ResetCachedXmlCo
ba50: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
ba60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ba70: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
ba80: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
ba90: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
baa0: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
bab0: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
bac0: 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63  "Method_ResetCac
bad0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
bae0: 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  Name");..#endif.
baf0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
bb00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
bb10: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
bb20: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
bb30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bb40: 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f       cachedXmlCo
bb50: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  nfigFileName = n
bb60: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
bb70: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
bb80: 69 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b  ileName = false;
bb90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
bba0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
bc00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bc10: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
bc20: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
bc30: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
bc40: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
bc50: 6e 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20  name for the..  
bc60: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
bc70: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
bc80: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
bc90: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
bca0: 6e 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20  nents, if..     
bcb0: 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20   /// available. 
bcc0: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58   If the cached X
bcd0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
bce0: 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65   file name value
bcf0: 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
bd00: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68  // available, th
bd10: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
bd20: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
bd30: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  e" /> method wil
bd40: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  l..      /// be 
bd50: 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74  used to obtain t
bd60: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
bd70: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d  tion file name..
bd80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
bd90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bda0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
bdb0: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
bdc0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
bdd0: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
bde0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
bdf0: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
be00: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
be10: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
be20: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
be30: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
be40: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43  atic string GetC
be50: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
be60: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
be70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
be80: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
be90: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
bea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
beb0: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
bec0: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
bed0: 64 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  d_GetCachedXmlCo
bee0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d  nfigFileName");.
bef0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
bf00: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
bf10: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
bf20: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
bf30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
bf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bf50: 28 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  (cachedXmlConfig
bf60: 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  FileName != null
bf70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
bf80: 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68       return cach
bf90: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
bfa0: 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
bfb0: 20 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43        if (noXmlC
bfc0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a  onfigFileName)..
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfe0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
bff0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c000: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c010: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
c020: 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d  Name();..      }
c030: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c080: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
c090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c0a0: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
c0b0: 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20  returns the XML 
c0c0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
c0d0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
c0e0: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
c0f0: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
c100: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
c110: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
c120: 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20  mponents...     
c130: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c140: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
c150: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
c160: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
c170: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
c180: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
c190: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
c1a0: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
c1b0: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
c1c0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
c1d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
c1e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
c1f0: 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66  tring GetXmlConf
c200: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
c210: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c220: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
c230: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
c240: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
c250: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
c260: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
c270: 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66  ethod_GetXmlConf
c280: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
c290: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
c2a0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c2b0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c2c0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
c2d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
c2e0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  eName;....#if !P
c2f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c300: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
c310: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
c320: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
c330: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
c340: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
c350: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79    fileName = May
c360: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
c370: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
c380: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
c390: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
c3a0: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
c3b0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
c3c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c3d0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
c3e0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
c3f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c400: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
c410: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
c420: 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  me = fileName;..
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c440: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c450: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
c460: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
c470: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
c480: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
c490: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
c4a0: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20  yDirectory();.. 
c4b0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
c4c0: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
c4d0: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
c4e0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
c4f0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c500: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
c510: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
c520: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c530: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
c540: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c570: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
c580: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  gFileName = file
c590: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
c5a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c5b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c5c0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
c5d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c5e0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
c5f0: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
c600: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c610: 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67       noXmlConfig
c620: 46 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b  FileName = true;
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
c640: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
c650: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
c660: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
c670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
c6c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c6d0: 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61    /// If necessa
c6e0: 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c  ry, replaces all
c6f0: 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63   supported XML c
c700: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c710: 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20  e tokens..      
c720: 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61  /// with their a
c730: 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73  ssociated values
c740: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c750: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c760: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
c770: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
c780: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
c790: 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
c7a0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69  uration file bei
c7b0: 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  ng read...      
c7c0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
c7d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
c7e0: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
c7f0: 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e      /// A settin
c800: 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f  g value read fro
c810: 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  m the XML config
c820: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
c830: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
c840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
c850: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
c860: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
c870: 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  he <paramref nam
c880: 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c  e="value" /> wil
c890: 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20  l all supported 
c8a0: 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
c8b0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c8c0: 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
c8d0: 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
c8e0: 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
c8f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
c900: 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
c910: 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
c920: 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
c930: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
c940: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
c950: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
c960: 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69  placeXmlConfigFi
c970: 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20  leTokens(..     
c980: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
c990: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
c9a0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
c9b0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
c9c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
c9d0: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
c9e0: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
c9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
ca00: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ca10: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
ca20: 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
ca30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ca40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ca50: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
ca90: 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
caa0: 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66  tDirectoryName(f
cab0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cad0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
cae0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
caf0: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
cb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
cb30: 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
cb40: 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb60: 20 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65     XmlConfigDire
cb70: 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65  ctoryToken, dire
cb80: 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  ctory);..       
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
cba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cbb0: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
cbc0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
cbd0: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
cbf0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
cc00: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
cc10: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
cc20: 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
cc30: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
cc40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
cc50: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
cc60: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
cc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cc80: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ccb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
ccc0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ccd0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
cce0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd00: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
cd10: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
cd20: 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
cd30: 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
cd60: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
cd70: 65 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a  eplace XML " +..
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63                "c
cda0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
cdb0: 65 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73  e \"{0}\" tokens
cdc0: 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
cdf0: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
ce00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ce10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce30: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
ce50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
ce70: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
ce80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce90: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ceb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cec0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
ced0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
cee0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
cef0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
cf50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
cf60: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
cf70: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
cf80: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
cf90: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
cfa0: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
cfb0: 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58   /// specified X
cfc0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
cfd0: 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   file...      //
cfe0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cff0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d000: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
d010: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
d020: 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
d030: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
d040: 65 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20  e to read...    
d050: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d060: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d070: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
d080: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
d090: 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
d0a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
d0b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
d0c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
d0d0: 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
d0e0: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
d0f0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
d100: 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
d110: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
d120: 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
d130: 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
d140: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
d150: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d160: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d170: 20 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d   name="expand">.
d180: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
d190: 65 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e  ero to expand an
d1a0: 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  y environment va
d1b0: 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65  riable reference
d1c0: 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a  s contained in..
d1d0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65        /// the se
d1e0: 74 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62  tting value to b
d1f0: 65 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69  e returned.  Thi
d200: 73 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  s has no effect 
d210: 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
d220: 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46     /// Compact F
d230: 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20  ramework...     
d240: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
d250: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
d260: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
d270: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
d280: 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20  etting -OR- the 
d290: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70  default value sp
d2a0: 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20  ecified by..    
d2b0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
d2c0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
d2d0: 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20  > if it has not 
d2e0: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
d2f0: 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  tly or..      //
d300: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
d310: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
d320: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
d330: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
d340: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65  tic string GetSe
d350: 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c  ttingValueViaXml
d360: 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20  ConfigFile(..   
d370: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
d380: 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f  leName, /* in */
d390: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
d3a0: 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20  ng name,     /* 
d3b0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
d3c0: 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
d3d0: 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
d3e0: 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e        bool expan
d3f0: 64 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  d      /* in */.
d400: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
d410: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d420: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
d430: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d440: 20 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d   if ((fileName =
d450: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65  = null) || (name
d460: 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d480: 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
d490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d4a0: 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75  XmlDocument docu
d4b0: 6d 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f  ment = new XmlDo
d4c0: 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20  cument();....   
d4d0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
d4e0: 65 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d  ent.Load(fileNam
d4f0: 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
d500: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d510: 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d   XmlElement elem
d520: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53  ent = document.S
d530: 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
d540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d550: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
d560: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
d570: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
d580: 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
d590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5a0: 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
d5b0: 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
d5c0: 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
d5d0: 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
d5e0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
d5f0: 65 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20  ement; /* throw 
d600: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
d610: 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20      if (element 
d620: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
d630: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d640: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
d650: 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ing value = null
d660: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d670: 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65         if (eleme
d680: 6e 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28  nt.HasAttribute(
d690: 22 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20  "value"))..     
d6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6b0: 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74   value = element
d6c0: 2e 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76  .GetAttribute("v
d6d0: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d6f0: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
d700: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
d710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d720: 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
d730: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d740: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
d750: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
d760: 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d780: 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
d790: 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
d7a0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
d7b0: 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7d0: 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
d7e0: 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
d7f0: 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
d800: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
d810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d820: 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
d830: 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  aceXmlConfigFile
d840: 54 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c  Tokens(fileName,
d850: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
d860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
d870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d880: 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
d890: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d8b0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
d8c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d8d0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
d8e0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
d8f0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
d900: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
d910: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
d920: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
d930: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
d940: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
d950: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
d960: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
d970: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
d980: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9b0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
d9c0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
d9d0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
da00: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
da10: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
da20: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
da30: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
da40: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
da50: 6f 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22  o get setting \"
da60: 7b 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d  {0}\" value " +.
da70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da80: 20 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c         "from XML
da90: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
daa0: 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d  ile \"{1}\": {2}
dab0: 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ", name,..      
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f  fileName, e)); /
dae0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
daf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
db00: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
db30: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
db40: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
db50: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
db60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
db70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
db80: 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  efault;..      }
db90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
dba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbe0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
dbf0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dc00: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
dc10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
dc20: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
dc30: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
dc40: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
dc50: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
dc60: 20 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20   that is..      
dc70: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
dc80: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
dc90: 64 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  d managed assemb
dca0: 6c 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c  ly, if applicabl
dcb0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
dcc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
dcd0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
dce0: 22 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20  "assembly">..   
dcf0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
dd00: 65 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72  ed assembly to r
dd10: 65 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66  ead the target f
dd20: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
dd30: 74 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  te value..      
dd40: 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20  /// from...     
dd50: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
dd60: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
dd70: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
dd80: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74  e value of the t
dd90: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
dda0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
ddb0: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
ddc0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e  d..      /// man
ddd0: 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f  aged assembly -O
dde0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
ddf0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
de00: 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20  ed.  If this..  
de10: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
de20: 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69   was compiled wi
de30: 74 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  th a version of 
de40: 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
de50: 72 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  rk prior to..   
de60: 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34     /// version 4
de70: 2e 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65  .0, the value re
de80: 74 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65  turned MAY refle
de90: 63 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20  ct that version 
dea0: 6f 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  of the .NET..   
deb0: 20 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b     /// Framework
dec0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
ded0: 6f 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  one associated w
dee0: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
def0: 64 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20  d managed..     
df00: 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a   /// assembly...
df10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
df20: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
df30: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
df40: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72  g GetAssemblyTar
df50: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
df60: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
df70: 79 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  y assembly..    
df80: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
df90: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
dfa0: 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
dfb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
dfc0: 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45  #if NET_40 || NE
dfd0: 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20  T_45 || NET_451 
dfe0: 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45  || NET_452 || NE
dff0: 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20  T_46 || NET_461 
e000: 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45  || NET_462 || NE
e010: 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37 31 0d  T_47 || NET_471.
e020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
e030: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
e040: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e050: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
e060: 62 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 0d 0a  bly.IsDefined(..
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e080: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
e090: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
e0a0: 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73  Attribute), fals
e0b0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
e0c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0e0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
e0f0: 74 74 72 69 62 75 74 65 20 74 61 72 67 65 74 46  ttribute targetF
e100: 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20 20  ramework =..    
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e120: 20 20 20 20 20 20 28 54 61 72 67 65 74 46 72 61        (TargetFra
e130: 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29  meworkAttribute)
e140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e150: 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
e160: 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74  mbly.GetCustomAt
e170: 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20  tributes(..     
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e190: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
e1a0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
e1b0: 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
e1c0: 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  )[0];....       
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e1e0: 65 74 75 72 6e 20 74 61 72 67 65 74 46 72 61 6d  eturn targetFram
e1f0: 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b 4e  ework.FrameworkN
e200: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
e210: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e220: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e230: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
e240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
e250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e260: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
e270: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
e280: 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 33    }..#elif NET_3
e290: 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  5..             
e2a0: 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72 61   return ".NETFra
e2b0: 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
e2c0: 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45 54  3.5";..#elif NET
e2d0: 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20  _20..           
e2e0: 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46     return ".NETF
e2f0: 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e  ramework,Version
e300: 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66 0d  =v2.0";..#endif.
e310: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
e320: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e330: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
e340: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
e350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e390: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
e3a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e3b0: 20 2f 2f 2f 20 41 63 63 65 70 74 73 20 61 20 6c   /// Accepts a l
e3c0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
e3d0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
e3e0: 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65 73 20 69  alue and makes i
e3f0: 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20 20  t into a..      
e400: 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72 74 65 72  /// much shorter
e410: 20 76 65 72 73 69 6f 6e 2c 20 73 75 69 74 61 62   version, suitab
e420: 6c 65 20 66 6f 72 20 75 73 65 20 77 69 74 68 20  le for use with 
e430: 4e 75 47 65 74 20 70 61 63 6b 61 67 65 73 2e 0d  NuGet packages..
e440: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
e450: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e460: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
e470: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lue">..      ///
e480: 20 54 68 65 20 6c 6f 6e 67 20 74 61 72 67 65 74   The long target
e490: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
e4a0: 62 75 74 65 20 76 61 6c 75 65 20 74 6f 20 63 6f  bute value to co
e4b0: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  nvert...      //
e4c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
e4d0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
e4e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
e4f0: 68 6f 72 74 20 74 61 72 67 65 74 20 66 72 61 6d  hort target fram
e500: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
e510: 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20  value -OR- null 
e520: 69 66 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20 20  if it cannot..  
e530: 20 20 20 20 2f 2f 2f 20 62 65 20 64 65 74 65 72      /// be deter
e540: 6d 69 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72 74  mined or convert
e550: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
e560: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
e570: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e580: 73 74 72 69 6e 67 20 41 62 62 72 65 76 69 61 74  string Abbreviat
e590: 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  eTargetFramework
e5a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
e5b0: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
e5c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
e5d0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53  .          if (S
e5e0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
e5f0: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
e600: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e610: 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  n value;....    
e620: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
e630: 6c 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 4e 45  lue.Replace(".NE
e640: 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69  TFramework,Versi
e650: 6f 6e 3d 76 22 2c 20 22 6e 65 74 22 29 3b 0d 0a  on=v", "net");..
e660: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
e670: 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
e680: 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74  ".", String.Empt
e690: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
e6a0: 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 76 61 6c   int index = val
e6b0: 75 65 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29 3b  ue.IndexOf(',');
e6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
e6d0: 20 28 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a   (index != -1)..
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
e6f0: 6c 75 65 20 3d 20 76 61 6c 75 65 2e 53 75 62 73  lue = value.Subs
e700: 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 3b  tring(0, index);
e710: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
e720: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
e730: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e780: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e790: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e7a0: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63        /// If nec
e7b0: 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73  essary, replaces
e7c0: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 65   all supported e
e7d0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
e7e0: 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20  ble tokens..    
e7f0: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72    /// with their
e800: 20 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75   associated valu
e810: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
e820: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e830: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
e840: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
e850: 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76   /// A setting v
e860: 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 61  alue read from a
e870: 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  n environment va
e880: 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  riable...      /
e890: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e8a0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
e8b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e8c0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61  value of the <pa
e8d0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c  ramref name="val
e8e0: 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20  ue" /> will all 
e8f0: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
e900: 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   /// environment
e910: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73   variable tokens
e920: 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72   replaced.  No r
e930: 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72  eturn value is r
e940: 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f  eserved..      /
e950: 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61  // to indicate a
e960: 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d  n error.  This m
e970: 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69  ethod cannot fai
e980: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
e990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e9a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
e9b0: 74 72 69 6e 67 20 52 65 70 6c 61 63 65 45 6e 76  tring ReplaceEnv
e9c0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
e9d0: 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20  Tokens(..       
e9e0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d     string value.
e9f0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
ea00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ea10: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
ea20: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
ea30: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
ea40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
ea50: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
ea60: 3d 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d  = GetCachedAssem
ea70: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
ea80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ea90: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
eaa0: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
eab0: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
eac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ead0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
eb00: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
eb10: 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65   = value.Replace
eb20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
eb40: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
eb50: 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b  ken, directory);
eb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eb70: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
eb80: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
eb90: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
ebb0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
ebc0: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
ebd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
ebe0: 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
ebf0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ec00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
ec10: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
ec20: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
ec30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ec40: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
ec80: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ec90: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
eca0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
ecd0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
ece0: 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
ecf0: 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed10: 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
ed20: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
ed30: 65 70 6c 61 63 65 20 61 73 73 65 6d 62 6c 79 20  eplace assembly 
ed40: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed60: 20 20 20 22 64 69 72 65 63 74 6f 72 79 20 74 6f     "directory to
ed70: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
ed80: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
edc0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
edd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edf0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
ee00: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
ee20: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ee30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ee40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
ee50: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
ee60: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d  embly assembly =
ee70: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
ee80: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
ee90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
eea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eeb0: 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d  assembly = Assem
eec0: 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67  bly.GetExecuting
eed0: 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 20 20 20  Assembly();..   
eee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
eef0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
ef00: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
ef10: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
ef20: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
ef30: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
ef40: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ef50: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
ef60: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ef70: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
ef80: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
ef90: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
efb0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
efc0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
efd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
efe0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
eff0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
f000: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f020: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
f030: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
f040: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
f050: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f070: 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
f080: 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 65 78 65  ed to obtain exe
f090: 63 75 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20  cuting " +..    
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0b0: 20 20 20 20 20 20 22 61 73 73 65 6d 62 6c 79 3a        "assembly:
f0c0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
f0d0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
f0e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f100: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
f110: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f130: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
f140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f150: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f180: 73 74 72 69 6e 67 20 74 61 72 67 65 74 46 72 61  string targetFra
f190: 6d 65 77 6f 72 6b 20 3d 20 41 62 62 72 65 76 69  mework = Abbrevi
f1a0: 61 74 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f  ateTargetFramewo
f1b0: 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rk(..           
f1c0: 20 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62         GetAssemb
f1d0: 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  lyTargetFramewor
f1e0: 6b 28 61 73 73 65 6d 62 6c 79 29 29 3b 0d 0a 0d  k(assembly));...
f1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
f200: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
f210: 6c 4f 72 45 6d 70 74 79 28 74 61 72 67 65 74 46  lOrEmpty(targetF
f220: 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20 20  ramework))..    
f230: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f250: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
f260: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
f280: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70  alue = value.Rep
f290: 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lace(..         
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2b0: 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   TargetFramework
f2c0: 54 6f 6b 65 6e 2c 20 74 61 72 67 65 74 46 72 61  Token, targetFra
f2d0: 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20 20 20 20 20  mework);..      
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
f2f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
f300: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
f310: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
f320: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
f330: 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
f340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f350: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
f360: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f380: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
f390: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f3a0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f3c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
f3d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
f400: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
f410: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
f420: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
f450: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
f460: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
f470: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
f480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f490: 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
f4a0: 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74  led to replace t
f4b0: 61 72 67 65 74 20 22 20 2b 0d 0a 20 20 20 20 20  arget " +..     
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4d0: 20 20 20 20 20 20 20 20 20 22 66 72 61 6d 65 77           "framew
f4e0: 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c  ork token: {0}",
f4f0: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
f500: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
f510: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f530: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
f540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
f570: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f590: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f5c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
f5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
f5e0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
f5f0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
f600: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
f650: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
f660: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
f670: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
f680: 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
f690: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
f6a0: 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20  ting, using the 
f6b0: 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
f6c0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
f6d0: 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76  e and/or the env
f6e0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
f6f0: 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  es for the curre
f700: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nt..      /// pr
f710: 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65  ocess and/or the
f720: 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c   current system,
f730: 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e   when available.
f740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
f750: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
f760: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
f770: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
f780: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
f790: 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20   setting...     
f7a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
f7b0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f7c0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d  name="default">.
f7d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
f7e0: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
f7f0: 6e 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69  ned if the setti
f800: 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ng has not been 
f810: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a  set explicitly..
f820: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e        /// or can
f830: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
f840: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
f850: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
f860: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
f870: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
f880: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20   of the setting 
f890: 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74  -OR- the default
f8a0: 20 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64   value specified
f8b0: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   by..      /// <
f8c0: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64  paramref name="d
f8d0: 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74  efault" /> if it
f8e0: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
f8f0: 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d  t explicitly or.
f900: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
f910: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
f920: 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c    By default, al
f930: 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20  l references to 
f940: 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20  existing..      
f950: 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  /// environment 
f960: 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62  variables will b
f970: 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68  e expanded to th
f980: 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  eir correspondin
f990: 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  g values..      
f9a0: 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76  /// within the v
f9b0: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
f9c0: 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65  ned unless eithe
f9d0: 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64  r the "No_Expand
f9e0: 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " or..      /// 
f9f0: 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61  "No_Expand_<para
fa00: 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  mref name="name"
fa10: 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   />" environment
fa20: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
fa30: 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   [to..      /// 
fa40: 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20  anything]...    
fa50: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
fa60: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
fa70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
fa80: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
fa90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
faa0: 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e  g name,    /* in
fab0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
fac0: 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f  tring @default /
fad0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
fae0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23     )..      {..#
faf0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
fb00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fb10: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fb20: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fb30: 49 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  If the special "
fb40: 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74  No_SQLiteGetSett
fb50: 69 6e 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f  ingValue" enviro
fb60: 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
fb70: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
fb80: 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e  le is set [to an
fb90: 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65  ything], this me
fba0: 74 68 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73  thod will always
fbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
fbc0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 65 20       return the 
fbd0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a  default value...
fbe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fbf0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
fc00: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
fc10: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
fc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc30: 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65   "No_SQLiteGetSe
fc40: 74 74 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20  ttingValue") != 
fc50: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
fc60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fc70: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
fc80: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
fc90: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
fca0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
fcf0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65          if (name
fd00: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
fd10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fd20: 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20  @default;....   
fd30: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fd80: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
fd90: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
fda0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
fdb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fdc0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fdd0: 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
fde0: 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
fdf0: 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 65 6e  alue from the en
fe00: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
fe10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
fe20: 20 70 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20 74   possibly from t
fe30: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
fe40: 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74  tion file; creat
fe50: 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  e or..          
fe60: 2f 2f 20 20 20 20 20 20 20 69 6e 63 72 65 6d 65  //       increme
fe70: 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  nt the appropria
fe80: 74 65 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77  te statistic now
fe90: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
feb0: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65  Data.IncrementSe
fec0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e  ttingReadCount(n
fed0: 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65  ame, false);..#e
fee0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
fef0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ff00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ff10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ff50: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
ff60: 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 20 2f  expand = true; /
ff70: 2a 20 53 48 41 52 45 44 3a 20 45 6e 76 69 72 6f  * SHARED: Enviro
ff80: 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c 20  nment -AND- XML 
ff90: 63 6f 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f 0d  config file. */.
ffa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fff0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
10000 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10010 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
10020 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e  string value = n
10030 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
10040 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
10050 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
10060 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70  Variable("No_Exp
10070 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  and") != null)..
10080 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10090 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e             expan
100a0 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
100b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
100c0 20 20 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69     else if (Envi
100d0 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
100e0 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
100f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10100 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
10110 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
10120 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
10130 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
10150 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20  No_Expand_{0}", 
10160 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d  name)) != null).
10170 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
10180 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61              expa
10190 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  nd = false;..   
101a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
101b0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
101c0 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
101d0 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
101e0 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
101f0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
10200 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
10210 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
10220 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10230 20 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a     if (expand)..
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10250 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
10260 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
10270 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
10280 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
10290 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
102a0 3d 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e  = ReplaceEnviron
102b0 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65  mentVariableToke
102c0 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ns(value);..    
102d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
102e0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
102f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10300 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
10310 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
10320 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10330 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
10340 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e  "No_SQLiteXmlCon
10350 66 69 67 46 69 6c 65 22 20 65 6e 76 69 72 6f 6e  figFile" environ
10360 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
10370 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10380 20 20 20 20 20 73 65 74 20 5b 74 6f 20 61 6e 79       set [to any
10390 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74  thing], this met
103a0 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45 52 20 72  hod will NEVER r
103b0 65 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ead from the..  
103c0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
103d0 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
103e0 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
103f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10400 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
10410 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
10420 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
10430 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
10440 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69  QLiteXmlConfigFi
10450 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  le") != null).. 
10460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10470 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10480 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
10490 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
104a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
10500 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
10510 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
10520 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  BUG..          /
10530 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
10540 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f  NOTE: We are abo
10550 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65 74  ut to read a set
10560 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20  ting value from 
10570 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20  the XML..       
10580 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66     //       conf
10590 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20  iguration file; 
105a0 63 72 65 61 74 65 20 6f 72 20 69 6e 63 72 65 6d  create or increm
105b0 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69  ent the appropri
105c0 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ate..          /
105d0 2f 20 20 20 20 20 20 20 73 74 61 74 69 73 74 69  /       statisti
105e0 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  c now...        
105f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10600 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
10610 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f  entSettingReadCo
10620 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b  unt(name, true);
10630 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
10640 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10650 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
10660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
106b0 65 74 75 72 6e 20 47 65 74 53 65 74 74 69 6e 67  eturn GetSetting
106c0 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69  ValueViaXmlConfi
106d0 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  gFile(..        
106e0 20 20 20 20 20 20 47 65 74 43 61 63 68 65 64 58        GetCachedX
106f0 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
10700 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75  (), name, @defau
10710 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20  lt, expand);..  
10720 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10770 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
10780 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10790 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
107a0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
107b0 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74   string ListToSt
107c0 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e  ring(IList<strin
107d0 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20  g> list)..      
107e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
107f0 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (list == null)..
10800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10810 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
10820 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
10830 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e  ilder result = n
10840 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ew StringBuilder
10850 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
10860 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
10870 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74   element in list
10880 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
10890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
108a0 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c   (element == nul
108b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
108c0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
108d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
108e0 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67   if (result.Leng
108f0 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
10900 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
10910 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a  t.Append(' ');..
10920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10930 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c  result.Append(el
10940 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  ement);..       
10950 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10960 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e    return result.
10970 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
10980 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
109e0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
109f0 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68  int CheckForArch
10a00 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
10a10 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20  forms(..        
10a20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
10a30 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry,..          r
10a40 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20  ef List<string> 
10a50 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20  matches..       
10a60 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
10a70 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
10a80 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
10a90 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65        if (matche
10aa0 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
10ab0 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
10ac0 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72  s = new List<str
10ad0 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ing>();....     
10ae0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
10af0 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
10b00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10b10 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
10b20 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
10b30 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a  (directory) &&..
10b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b50 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68    (processorArch
10b60 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
10b70 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  s != null))..   
10b80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ba0 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75  foreach (KeyValu
10bb0 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74  ePair<string, st
10bc0 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20  ring> pair..    
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10be0 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65          in proce
10bf0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
10c00 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20  Platforms)..    
10c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c30 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63         if (Direc
10c40 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62  tory.Exists(Mayb
10c50 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
10c60 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79  ectory, pair.Key
10c70 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
10c80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ca0 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
10cb0 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a  Add(pair.Key);..
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
10ce0 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
10cf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d10 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
10d20 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b  ue = pair.Value;
10d30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10d40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
10d50 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d70 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
10d80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10d90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44             if (D
10da0 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28  irectory.Exists(
10db0 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
10dc0 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75  (directory, valu
10dd0 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e)))..          
10de0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e00 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
10e10 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20  .Add(value);..  
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e30 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b          result++
10e40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10e50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
10e80 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
10e90 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
10ea0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
10eb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
10ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
10f10 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
10f20 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79  ol CheckAssembly
10f30 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20  CodeBase(..     
10f40 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
10f50 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20  sembly,..       
10f60 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69     ref string fi
10f70 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
10f80 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
10f90 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10fa0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10fb0 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
10fc0 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fe0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
10ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11000 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20  string codeBase 
11010 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42  = assembly.CodeB
11020 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ase;....        
11030 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
11040 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63  .IsNullOrEmpty(c
11050 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20  odeBase))..     
11060 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11070 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
11080 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20              Uri 
11090 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f  uri = new Uri(co
110a0 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20  deBase);..      
110b0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
110c0 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75  ocalFileName = u
110d0 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d  ri.LocalPath;...
110e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
110f0 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
11100 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d  localFileName)).
11110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11120 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11140 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
11150 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
11160 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20  ectoryName(..   
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
11180 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f  ocalFileName); /
11190 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
111a0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
111b0 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ng xmlConfigFile
111c0 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62  Name = MaybeComb
111d0 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
111e0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
111f0 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
11200 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
11210 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11220 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43  File.Exists(xmlC
11230 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d  onfigFileName)).
11240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11250 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11260 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
11270 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
11280 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
112b0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
112c0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
112d0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
112e0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
112f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11300 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11310 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11330 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
11340 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
11350 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63  ader found XML c
11360 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
11370 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
11380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11390 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
113a0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
113b0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
113c0 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113e0 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67         xmlConfig
113f0 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74  FileName)); /* t
11400 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
11410 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11430 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
11440 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11460 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
11470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11480 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
11490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
114a0 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
114b0 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
114c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114d0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
114e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
114f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c  .              L
11500 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
11510 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  hes = null;.... 
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11530 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65  (CheckForArchite
11540 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72  cturesAndPlatfor
11550 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65  ms(directory, re
11560 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d  f matches) > 0).
11570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11580 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11590 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
115a0 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
115b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
115c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
115d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
115e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
115f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
11600 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
11610 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11630 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11640 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11660 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
11670 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
11680 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76  ader found nativ
11690 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  e sub-directorie
116a0 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  s " +..         
116b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116c0 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
116d0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
116e0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
116f0 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
11700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11710 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72         ListToStr
11720 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20  ing(matches))); 
11730 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
11740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11760 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11770 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11790 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
117a0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
117b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
117c0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
117d0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
117e0 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
117f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11800 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
11810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11820 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
11830 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11840 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
11850 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
11860 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
11870 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
11880 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
11890 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
118a0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
118b0 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
118c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
118d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
118e0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
118f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
11900 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
11910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11920 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
11930 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
11940 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
11950 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
11960 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11970 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
11980 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
11990 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
119a0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
119b0 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
119c0 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73  o check code bas
119d0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f               "fo
119f0 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
11a00 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
11a10 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
11a20 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
11a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11a40 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
11a50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a70 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
11a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
11a90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
11aa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11ab0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11ac0 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
11ad0 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
11ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b20 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
11b30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11b40 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20   /// Resets the 
11b50 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20  cached assembly 
11b60 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65 2c  directory value,
11b70 20 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68   thus forcing th
11b80 65 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f 2f  e next..      //
11b90 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63  / call to <see c
11ba0 72 65 66 3d 22 47 65 74 43 61 63 68 65 64 41 73  ref="GetCachedAs
11bb0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
11bc0 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65   /> method to re
11bd0 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70  ly..      /// up
11be0 6f 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  on the <see cref
11bf0 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
11c00 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
11c10 64 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a  d to fetch the..
11c20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62        /// assemb
11c30 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
11c40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11c50 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
11c60 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
11c70 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
11c80 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
11c90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11ca0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
11cb0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
11cc0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
11cd0 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
11ce0 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
11cf0 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
11d00 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
11d10 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory");..#endif..
11d20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
11d30 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
11d40 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
11d50 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
11d60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d70 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62      cachedAssemb
11d80 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  lyDirectory = nu
11d90 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
11da0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
11db0 65 63 74 6f 72 79 20 3d 20 66 61 6c 73 65 3b 0d  ectory = false;.
11dc0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
11dd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
11de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
11e30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11e40 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
11e50 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
11e60 20 63 61 63 68 65 64 20 64 69 72 65 63 74 6f 72   cached director
11e70 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
11e80 6c 79 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 20  ly currently..  
11e90 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20 65 78      /// being ex
11ea0 65 63 75 74 65 64 2c 20 69 66 20 61 76 61 69 6c  ecuted, if avail
11eb0 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61  able.  If the ca
11ec0 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64 69  ched assembly di
11ed0 72 65 63 74 6f 72 79 20 76 61 6c 75 65 0d 0a 20  rectory value.. 
11ee0 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 74 20       /// is not 
11ef0 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c  available, the <
11f00 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
11f10 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
11f20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a  /> method will..
11f30 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65        /// be use
11f40 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20  d to obtain the 
11f50 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
11f60 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
11f70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11f80 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
11f90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69        /// The di
11fa0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
11fb0 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
11fc0 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
11fd0 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a  d -OR- null if..
11fe0 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e        /// it can
11ff0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
12000 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
12010 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
12020 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
12030 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64 41  tring GetCachedA
12040 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
12050 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
12060 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
12070 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
12080 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
12090 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
120a0 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
120b0 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43  unt("Method_GetC
120c0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
120d0 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
120e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
120f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
12100 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
12110 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
12120 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12130 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68 65         if (cache
12140 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
12150 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12170 65 74 75 72 6e 20 63 61 63 68 65 64 41 73 73 65  eturn cachedAsse
12180 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a  mblyDirectory;..
12190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121a0 69 66 20 28 6e 6f 41 73 73 65 6d 62 6c 79 44 69  if (noAssemblyDi
121b0 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
121c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
121d0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
121e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
121f0 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73     return GetAss
12200 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
12210 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
12220 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
12270 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12280 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
12290 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
122a0 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  s the directory 
122b0 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
122c0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
122d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63  ..      /// exec
122e0 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  uted...      ///
122f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12300 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
12310 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
12320 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
12330 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
12340 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
12350 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ted -OR- null if
12360 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63  ..      /// it c
12370 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
12380 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
12390 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
123a0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
123b0 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d   string GetAssem
123c0 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  blyDirectory()..
123d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
123e0 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
123f0 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
12400 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
12410 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
12420 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
12430 22 4d 65 74 68 6f 64 5f 47 65 74 41 73 73 65 6d  "Method_GetAssem
12440 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d  blyDirectory");.
12450 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
12460 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12470 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
12480 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12490 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
124a0 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41  bly assembly = A
124b0 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
124c0 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
124d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
124e0 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
124f0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12500 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12510 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
12520 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
12530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12540 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12550 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
12560 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
12570 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
12580 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
125a0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
125b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
125c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
125d0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
125e0 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
125f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
12600 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12610 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
12620 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e  lyName assemblyN
12630 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47  ame = assembly.G
12640 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  etName();....   
12650 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
12660 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
12670 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12680 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12690 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
126a0 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
126b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
126d0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
126e0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
126f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
12700 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12720 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12750 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
12760 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
12770 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
12780 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65          if (!Che
12790 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
127a0 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66  se(assembly, ref
127b0 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20   fileName))..   
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
127d0 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
127e0 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65  ly.Location;..#e
127f0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
12800 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
12810 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
12820 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
12830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
12850 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
12860 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
12870 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
128a0 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
128c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
128d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
128e0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
128f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12900 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
12910 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
12920 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
12930 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
12940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
12950 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12960 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
12970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12990 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
129a0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
129b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129d0 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
129e0 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12a10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12a20 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
12a30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a40 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
12a50 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
12a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a80 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62      cachedAssemb
12a90 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69  lyDirectory = di
12aa0 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
12ab0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12ac0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12ad0 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  n directory;..  
12ae0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
12af0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
12b00 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
12b10 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
12b20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
12b30 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
12b40 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
12b50 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
12b60 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
12b70 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12b80 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
12b90 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12bc0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
12bd0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
12be0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
12bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c00 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
12c10 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
12c20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12c30 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
12c40 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
12c50 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65  der failed to ge
12c60 74 20 64 69 72 65 63 74 6f 72 79 20 22 20 2b 0d  t directory " +.
12c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c80 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
12c90 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
12ca0 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
12cb0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
12cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12cd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12ce0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
12cf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
12d10 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
12d20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
12d30 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
12d40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
12d50 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
12d60 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
12d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
12d80 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
12d90 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
12da0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12db0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
12dc0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
12dd0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
12de0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12e30 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
12e40 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65   Optional Native
12e50 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
12e60 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
12e70 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
12e80 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
12e90 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72   are looking for
12ea0 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
12eb0 4c 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74  Lite DLL ("sqlit
12ec0 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20  e3.dll"),..     
12ed0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e   //       the in
12ee0 74 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69  terop DLL ("SQLi
12ef0 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29  te.Interop.dll")
12f00 2c 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e  , or we are runn
12f10 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  ing on the..    
12f20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20    //       .NET 
12f30 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
12f40 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63  k, we should inc
12f50 6c 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28  lude this code (
12f60 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20  only if the..   
12f70 20 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74     //       feat
12f80 75 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79  ure has actually
12f90 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20   been enabled). 
12fa0 20 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64   This code would
12fb0 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20   be totally..   
12fc0 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75     //       redu
12fd0 6e 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f  ndant if this mo
12fe0 64 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75  dule has been bu
12ff0 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d  ndled into the m
13000 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20  ixed-mode..     
13010 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62   //       assemb
13020 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23  ly...      //..#
13030 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
13040 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
13050 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
13060 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13070 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  RK....      //..
13080 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
13090 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74  nly compile in t
130a0 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
130b0 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20  y pre-load code 
130c0 69 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a  if the feature..
130d0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
130e0 61 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  as been enabled 
130f0 66 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d  for this build..
13100 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50  .      //..#if P
13110 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49  RELOAD_NATIVE_LI
13120 42 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f  BRARY..      ///
13130 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13140 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
13150 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  f the environmen
13160 74 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61  t variable conta
13170 69 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  ining the proces
13180 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  sor..      /// a
13190 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
131a0 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
131b0 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
131c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
131d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
131e0 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
131f0 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
13200 45 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20  ECTURE =..      
13210 20 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41      "PROCESSOR_A
13220 52 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d  RCHITECTURE";...
13230 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
13290 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
132a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
132b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
132c0 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
132d0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
132e0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
132f0 20 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c   library or null
13300 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
13320 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
13330 74 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74  tring _SQLiteNat
13340 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
13350 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
13360 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
133b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
133c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
133d0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
133e0 61 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61  andle for the na
133f0 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
13400 61 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65  ary or the value
13410 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50  ..      /// IntP
13420 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  tr.Zero...      
13430 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13440 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
13450 61 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c  atic IntPtr _SQL
13460 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
13470 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a  andle = IntPtr.Z
13480 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ero;..      #end
13490 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
134a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
134f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13500 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
13510 69 6e 65 73 20 74 68 65 20 62 61 73 65 20 66 69  ines the base fi
13520 6c 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74  le name (without
13530 20 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69   any directory i
13540 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20  nformation)..   
13550 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e     /// for the n
13560 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
13570 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c  rary to be pre-l
13580 6f 61 64 65 64 20 62 79 20 74 68 69 73 20 63 6c  oaded by this cl
13590 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ass...      /// 
135a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
135b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
135c0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
135d0 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
135e0 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
135f0 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62  ite library to b
13600 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d  e pre-loaded by.
13610 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  .      /// this 
13620 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  class -OR- null 
13630 69 66 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e  if its value can
13640 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
13650 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13660 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13670 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13680 73 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65  string GetNative
13690 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
136a0 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  nly()..      {..
136b0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
136c0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20   fileNameOnly = 
136d0 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
136e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
136f0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c  "PreLoadSQLite_L
13700 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
13710 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  ly", null);.... 
13720 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
13730 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c  eNameOnly != nul
13740 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
13750 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
13760 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  eOnly;....      
13770 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54      return SQLIT
13780 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54  E_DLL; /* COMPAT
13790 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a   */..      }....
137a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
137b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
137f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13800 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13810 53 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65  Searches for the
13820 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
13830 69 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69  ibrary in the di
13840 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
13850 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
13860 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
13870 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
13880 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ted as well as t
13890 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
138a0 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72  y..      /// for
138b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
138c0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
138d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
138e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
138f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
13900 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
13910 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
13920 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
13930 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
13940 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
13950 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20   to the base..  
13960 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
13970 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
13980 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
13990 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
139a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
139b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
139c0 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
139d0 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
139e0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
139f0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
13a00 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
13a10 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
13a20 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20   the name..     
13a30 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65   /// of the imme
13a40 64 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20  diate directory 
13a50 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74  (i.e. the offset
13a60 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64   from the base d
13a70 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20  irectory)..     
13a80 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20   /// containing 
13a90 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
13aa0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
13ab0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
13ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
13ad0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
13ae0 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73  on-zero (success
13af0 29 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  ) if the native 
13b00 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
13b10 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77  as found; otherw
13b20 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ise,..      /// 
13b30 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d  zero (failure)..
13b40 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
13b50 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
13b60 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
13b70 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
13b80 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
13b90 72 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44  ref string baseD
13ba0 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20  irectory,       
13bb0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
13bc0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
13bd0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
13be0 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f  ecture /* out */
13bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
13c00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13c10 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
13c20 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
13c30 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
13c40 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46  SQLite_NoSearchF
13c50 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  orDirectory", nu
13c60 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
13c70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13c80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13c90 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c  false; /* DISABL
13ca0 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
13cb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13cc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
13cd0 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65   NOTE: Determine
13ce0 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e   the base file n
13cf0 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
13d00 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
13d10 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
13d20 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69         If this i
13d30 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74  s not known by t
13d40 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61  his class, we ca
13d50 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a  nnot continue...
13d60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13d70 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
13d80 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65  ileNameOnly = Ge
13d90 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69  tNativeLibraryFi
13da0 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d  leNameOnly();...
13db0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66  .          if (f
13dc0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e  ileNameOnly == n
13dd0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13de0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
13df0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
13e00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
13e10 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
13e20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69 72  list of base dir
13e30 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f  ectories and pro
13e40 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d  cessor/platform.
13e50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
13e60 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73      names.  Thes
13e70 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20  e lists will be 
13e80 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63  used to help loc
13e90 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  ate the native..
13ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13eb0 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c     SQLite core l
13ec0 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72  ibrary (or inter
13ed0 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20  op assembly) to 
13ee0 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20  pre-load into.. 
13ef0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13f00 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d    this process..
13f10 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13f20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
13f30 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ] directories = 
13f40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13f50 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
13f60 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50  ctory(),..#if !P
13f70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13f80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13f90 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69          AppDomai
13fa0 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
13fb0 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  BaseDirectory,..
13fc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13fd0 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    };....        
13fe0 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69    string[] subDi
13ff0 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
14000 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
14010 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
14020 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74  cture(), GetPlat
14030 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a  formName(null)..
14040 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a            };....
14050 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
14060 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74  h (string direct
14070 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69  ory in directori
14080 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  es)..          {
14090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140a0 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d  if (directory ==
140b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
140c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
140d0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
140e0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74       foreach (st
140f0 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72  ring subDirector
14100 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72  y in subDirector
14110 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
14120 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14130 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
14140 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
14150 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14160 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
14170 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
14180 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
14190 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
141a0 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
141b0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141d0 20 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e       MaybeCombin
141e0 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
141f0 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c 0d   subDirectory),.
14200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14210 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f         fileNameO
14220 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly));....      
14230 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14250 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
14260 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c  e SQLite DLL fil
14270 65 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e  e exists, return
14280 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
14290 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
142a0 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72        Prior to r
142b0 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68  eturning, set th
142c0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
142d0 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
142e0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
142f0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
14300 74 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65  tecture to refle
14310 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d  ct the location.
14320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14330 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72     //       wher
14340 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d  e it was found..
14350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14360 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14370 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
14380 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
14390 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
143a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
143b0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
143c0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
143d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
143e0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
143f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14420 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
14430 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
14440 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14460 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
14470 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
14480 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
14490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144a0 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
144b0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
144c0 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66 69   found native fi
144d0 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144f0 20 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30        "name \"{0
14500 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20 64  }\", returning d
14510 69 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22  irectory \"{1}\"
14520 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20 20   and " +..      
14530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14540 20 20 20 20 20 20 20 20 22 73 75 62 2d 64 69 72          "sub-dir
14550 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e  ectory \"{2}\"..
14560 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69  .", fileName, di
14570 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
14580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14590 20 20 20 20 20 20 20 20 73 75 62 44 69 72 65 63          subDirec
145a0 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77  tory)); /* throw
145b0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
145c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145e0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
145f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14600 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14620 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
14630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14640 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
14650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14660 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
14670 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79  tory = directory
14680 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14690 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
146a0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
146b0 20 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a   subDirectory;..
146c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
146e0 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a  e; /* FOUND */..
146f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14700 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14710 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14720 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
14730 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20  eturn false; /* 
14740 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20  NOT FOUND */..  
14750 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
14760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
147b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
147c0 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
147d0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
147e0 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
147f0 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  of the current a
14800 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
14810 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20    /// domain... 
14820 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14830 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
14840 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14850 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72  /// The base dir
14860 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63  ectory for the c
14870 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
14880 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e  on domain -OR- n
14890 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20  ull if it..     
148a0 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
148b0 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
148c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
148d0 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
148e0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
148f0 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29  tBaseDirectory()
14900 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
14910 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14920 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
14930 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
14940 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22  e_BaseDirectory"
14950 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
14960 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  iable..         
14970 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65 74   //       is set
14980 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69  , use it verbati
14990 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20 64  m for the base d
149a0 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
149b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
149c0 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
149d0 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67  ory = GetSetting
149e0 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53 51  Value("PreLoadSQ
149f0 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
14a00 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ry",..          
14a10 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20      null);....  
14a20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
14a30 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14a50 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
14a60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14a70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14a80 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
14a90 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
14aa0 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
14ab0 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73  oadSQLite_UseAss
14ac0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
14ad0 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
14ae0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14af0 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
14b00 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 74  (to anything), t
14b10 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 75  hen attempt to u
14b20 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
14b30 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65 63    //       direc
14b40 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
14b50 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78  the currently ex
14b60 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
14b70 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
14b80 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74 65       (i.e. Syste
14b90 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69  m.Data.SQLite) i
14ba0 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61 70  ntsead of the ap
14bb0 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20  plication..     
14bc0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f       //       do
14bd0 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63 74  main base direct
14be0 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ory...          
14bf0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
14c00 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
14c10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
14c20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51        "PreLoadSQ
14c30 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79  Lite_UseAssembly
14c40 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c  Directory", null
14c50 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
14c60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14c70 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
14c80 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69   = GetAssemblyDi
14c90 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
14ca0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14cb0 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  directory != nul
14cc0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14cd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
14ce0 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
14cf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14d00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14d10 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
14d20 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
14d30 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64  using the base d
14d40 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d  irectory of the.
14d50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
14d60 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c      current appl
14d70 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
14d80 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
14d90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14da0 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
14db0 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
14dc0 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ctory;..#else.. 
14dd0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14de0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
14df0 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62  Otherwise, fallb
14e00 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65  ack on using the
14e10 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
14e20 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  ining..         
14e30 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 75   //       the cu
14e40 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
14e50 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  g assembly...   
14e60 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14e70 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 41       return GetA
14e80 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
14e90 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
14ea0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ef0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
14f00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14f10 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
14f20 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69  es if the dynami
14f30 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
14f40 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65  ile name require
14f50 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20  s a suffix..    
14f60 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69    /// and adds i
14f70 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  t if necessary..
14f80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
14f90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14fa0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
14fb0 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
14fc0 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
14fd0 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
14fe0 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20  brary file name 
14ff0 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20  to inspect...   
15000 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
15010 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
15020 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
15030 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  The dynamic link
15040 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
15050 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64  me, possibly mod
15060 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65  ified to include
15070 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65   an..      /// e
15080 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20  xtension...     
15090 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
150a0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
150b0 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69 78  tatic string Fix
150c0 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a  UpDllFileName(..
150d0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
150e0 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20   fileName /* in 
150f0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
15100 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
15110 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
15120 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69  IsNullOrEmpty(fi
15130 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
15140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15150 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d       if (HelperM
15160 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73  ethods.IsWindows
15170 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
15180 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15190 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69 6c          if (!fil
151a0 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44  eName.EndsWith(D
151b0 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c  llFileExtension,
151c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151d0 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
151e0 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
151f0 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
15200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15210 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15220 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15230 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44  urn fileName + D
15240 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b  llFileExtension;
15250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15260 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15270 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15280 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15290 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
152a0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
152b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
15300 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15310 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
15320 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
15330 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  s the processor 
15340 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
15350 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
15360 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d     /// process..
15370 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15390 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
153a0 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73    /// The proces
153b0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
153c0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
153d0 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c  process -OR- nul
153e0 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f  l if it..      /
153f0 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
15400 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
15410 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
15420 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
15430 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
15440 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
15450 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  ture()..      {.
15460 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
15470 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
15480 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
15490 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f  dSQLite_Processo
154a0 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20 65  rArchitecture" e
154b0 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20  nvironment..    
154c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76        //       v
154d0 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c 20  ariable is set, 
154e0 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20  use it verbatim 
154f0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
15500 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
15510 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
15520 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20  chitecture...   
15530 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
15540 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
15550 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15560 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  e = GetSettingVa
15570 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
15580 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
15590 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68  te_ProcessorArch
155a0 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29  itecture", null)
155b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
155c0 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
155d0 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c  itecture != null
155e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
155f0 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f   return processo
15600 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
15610 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
15620 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
15630 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20 61  BUG: Will this a
15640 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62 6c  lways be reliabl
15650 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e?..          //
15660 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 63  ..          proc
15670 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15680 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  e = GetSettingVa
15690 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41 52  lue(PROCESSOR_AR
156a0 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c  CHITECTURE, null
156b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
156c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
15710 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15720 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
15730 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15740 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b 20   // HACK: Check 
15750 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69 62  for an "impossib
15760 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20 20  le" situation.  
15770 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  If the pointer s
15780 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ize..          /
15790 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62 69  /       is 32-bi
157a0 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ts, the processo
157b0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 63  r architecture c
157c0 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34 22  annot be "AMD64"
157d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
157e0 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 61        In that ca
157f0 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f 73  se, we are almos
15800 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74 74  t certainly hitt
15810 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68 65  ing a bug in the
15820 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
15830 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20 73       operating s
15840 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73  ystem and/or Vis
15850 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74 20  ual Studio that 
15860 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20 20  causes the..    
15870 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50        //       P
15880 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
15890 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e  CTURE environmen
158a0 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63 6f  t variable to co
158b0 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
158c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 72       //       wr
158d0 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d  ong value in som
158e0 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2e  e circumstances.
158f0 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20 74    Please refer t
15900 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20 20  o ticket..      
15910 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39 61      //       [9a
15920 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66 75  c9862611] for fu
15930 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f  rther informatio
15940 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
15950 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
15960 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20  (IntPtr.Size == 
15970 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26 0d  sizeof(int)) &&.
15980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53  .              S
15990 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f  tring.Equals(pro
159a0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
159b0 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20  re, "AMD64",..  
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
159e0 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
159f0 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
15a00 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
15a10 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
15a20 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
15a30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15a40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
15a50 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e 67  TE: When tracing
15a60 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61 76   is enabled, sav
15a70 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79  e the originally
15a80 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20 20   detected..     
15a90 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
15aa0 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
15ab0 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65 20  itecture before 
15ac0 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20  changing it...  
15ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
15af0 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65 73  ring savedProces
15b00 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
15b10 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  = processorArchi
15b20 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66  tecture;..#endif
15b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15b40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
15b50 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
15b60 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61 74  know that operat
15b70 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61 74  ing systems that
15b80 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22 20   return "AMD64" 
15b90 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  as..            
15ba0 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 70    //       the p
15bb0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
15bc0 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61 6c  cture are actual
15bd0 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f 66  ly a superset of
15be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15bf0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78 38  //       the "x8
15c00 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  6" processor arc
15c10 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72 65  hitecture; there
15c20 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20  fore, return..  
15c30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15c40 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e 20       "x86" when 
15c50 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65  the pointer size
15c60 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20   is 32-bits...  
15c70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
15c90 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
15ca0 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a  ure = "x86";....
15cb0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
15cc0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
15cd0 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
15ce0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
15cf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
15d30 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61 20  w that we hit a 
15d40 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20 73  fairly unusual s
15d50 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a  ituation (i.e...
15d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d70 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22    //       the "
15d80 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f 72  wrong" processor
15d90 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77 61   architecture wa
15da0 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20 20  s detected)...  
15db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15dc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
15dd0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
15de0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
15df0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
15e00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15e10 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
15e20 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
15e30 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
15e40 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
15e50 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
15e60 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20  loader detected 
15e70 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20  {0}-bit pointer 
15e80 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
15e90 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65             "size
15ea0 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20   with processor 
15eb0 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b  architecture \"{
15ec0 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d  1}\", using " +.
15ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ee0 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f         "processo
15ef0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c  r architecture \
15f00 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e  "{2}\" instead..
15f10 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
15f20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
15f30 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69  r.Size * 8 /* bi
15f40 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63  ts */, savedProc
15f50 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15f60 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
15f70 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
15f80 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
15f90 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
15fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
15fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
15fc0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
15fd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15fe0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
15ff0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
16000 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
16010 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
16020 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
16030 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
16040 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
16050 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
16060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16070 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16080 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
16090 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
160a0 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74  amework, attempt
160b0 20 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69   to use the nati
160c0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
160d0 20 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32    //       Win32
160e0 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76   API function (v
160f0 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61  ia P/Invoke) tha
16100 74 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73  t can provide us
16110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16120 2f 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68  //       with th
16130 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
16140 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
16150 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16160 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
16170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16190 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
161a0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
161b0 3a 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20  : The output of 
161c0 74 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66  the GetSystemInf
161d0 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  o function will 
161e0 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
161f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
16200 6c 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c  laced here.  Onl
16210 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
16220 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65  architecture fie
16230 6c 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ld..            
16240 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
16250 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d  s used by this m
16260 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
16270 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16290 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
162a0 6f 64 73 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f  odsWin32.SYSTEM_
162b0 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b  INFO systemInfo;
162c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
162d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
162e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
162f0 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73  OTE: Query the s
16300 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
16310 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20  n via P/Invoke, 
16320 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20  thus..          
16330 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16340 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72   filling the str
16350 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
16360 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16380 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
16390 68 6f 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73  hodsWin32.GetSys
163a0 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74  temInfo(out syst
163b0 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
163c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
163d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
163e0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74      // NOTE: Ret
163f0 75 72 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f  urn the processo
16400 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 76  r architecture v
16410 61 6c 75 65 20 61 73 20 61 20 73 74 72 69 6e 67  alue as a string
16420 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16430 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16440 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
16450 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16460 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
16470 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d            system
16480 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41  Info.wProcessorA
16490 72 63 68 69 74 65 63 74 75 72 65 2e 54 6f 53 74  rchitecture.ToSt
164a0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
164b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
164c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
164d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
164e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
164f0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
16500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16510 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
16520 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16530 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70       // NOTE: Up
16540 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75  on failure, retu
16550 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  rn an empty stri
16560 6e 67 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 70  ng.  This will p
16570 72 65 76 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  revent..        
16580 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
16590 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f  he calling metho
165a0 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69  d from consideri
165b0 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20 63  ng this method c
165c0 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20 20 20 20  all a..         
165d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 66       //       "f
165e0 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20 20  ailure"...      
165f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16600 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
16610 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
16620 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
16630 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
16640 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
16650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
166a0 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
166b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
166c0 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
166d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
166e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16720 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16730 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47  ry>..      /// G
16740 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73  iven the process
16750 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
16760 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d   returns the nam
16770 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72  e of the platfor
16780 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  m...      /// </
16790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
167a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
167b0 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
167c0 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
167d0 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
167e0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74  r architecture t
167f0 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20  o be translated 
16800 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61  to a platform na
16810 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16820 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
16830 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
16840 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74      /// The plat
16850 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68  form name for th
16860 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63  e specified proc
16870 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16880 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20  re -OR- null..  
16890 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61      /// if it ca
168a0 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
168b0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
168c0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
168d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
168e0 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f  string GetPlatfo
168f0 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  rmName(..       
16900 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
16910 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
16920 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
16930 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
16940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
16950 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16960 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
16970 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
16980 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
16990 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72  e = GetProcessor
169a0 41 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d  Architecture();.
169b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
169c0 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
169d0 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41  Empty(processorA
169e0 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20  rchitecture)).. 
169f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
16a00 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
16a10 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
16a20 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
16a30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16a40 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
16a50 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
16a60 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
16a70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
16a80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
16a90 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
16aa0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
16ab0 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tformName;....  
16ac0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16ad0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16ae0 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54  cturePlatforms.T
16af0 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  ryGetValue(..   
16b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b10 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
16b20 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c  itecture, out pl
16b30 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20  atformName))..  
16b40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b60 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d   return platform
16b70 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
16b80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16b90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16ba0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
16bb0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
16c10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16c20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
16c30 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ts to load the n
16c40 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
16c50 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68  rary based on th
16c60 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
16c70 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
16c80 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61   and processor a
16c90 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
16ca0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16cb0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
16cc0 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44  aram name="baseD
16cd0 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20  irectory">..    
16ce0 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
16cf0 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c  irectory to use,
16d00 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
16d10 74 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65  t (the base dire
16d20 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20  ctory of..      
16d30 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20  /// the current 
16d40 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
16d50 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63  in).  This direc
16d60 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74  tory should cont
16d70 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ain the..      /
16d80 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
16d90 68 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66  hitecture specif
16da0 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ic sub-directori
16db0 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
16dc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
16dd0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16de0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16df0 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
16e00 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
16e10 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
16e20 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f  tecture, null fo
16e30 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a  r default (the..
16e40 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
16e50 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
16e60 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
16e70 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20  process).  This 
16e80 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20  caller should.. 
16e90 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20       /// almost 
16ea0 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e  always specify n
16eb0 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72  ull for this par
16ec0 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f  ameter...      /
16ed0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16ee0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16ef0 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65  me="nativeModule
16f00 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  FileName">..    
16f10 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64    /// The candid
16f20 61 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  ate native modul
16f30 65 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c  e file name to l
16f40 6f 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72  oad will be stor
16f50 65 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20  ed here,..      
16f60 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79  /// if necessary
16f70 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
16f80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
16f90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
16fa0 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
16fb0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
16fc0 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16fd0 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e  handle as return
16fe0 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72  ed by LoadLibrar
16ff0 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64  y will be stored
17000 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65  ..      /// here
17010 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20  , if necessary. 
17020 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
17030 20 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20   be IntPtr.Zero 
17040 69 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a  if the call to..
17050 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69        /// LoadLi
17060 62 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20  brary fails...  
17070 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17080 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
17090 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
170a0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
170b0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77   native module w
170c0 61 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73  as loaded succes
170d0 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73  sfully; otherwis
170e0 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
170f0 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
17100 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
17110 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
17120 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69  bool PreLoadSQLi
17130 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20  teDll(..        
17140 20 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72    string baseDir
17150 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20  ectory,         
17160 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
17170 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
17180 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
17190 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  ure,    /* in */
171a0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
171b0 73 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64  string nativeMod
171c0 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20  uleFileName, /* 
171d0 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
171e0 20 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74    ref IntPtr nat
171f0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
17200 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
17210 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
17220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
17230 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
17240 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
17250 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63  ified base direc
17260 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73  tory is null, us
17270 65 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20  e the default.. 
17280 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17290 20 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20    (i.e. attempt 
172a0 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
172b0 20 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20   detect it)...  
172c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
172d0 20 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69        if (baseDi
172e0 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
172f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17300 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
17310 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
17320 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
17330 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
17340 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
17350 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
17360 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17370 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
17380 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17390 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72       if (baseDir
173a0 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
173b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
173c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
173d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
173e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
173f0 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
17400 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
17410 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
17420 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
17430 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
17440 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
17450 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
17460 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
17470 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
17480 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17490 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
174a0 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
174b0 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
174c0 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
174d0 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
174e0 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
174f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17500 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
17510 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17520 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
17530 49 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  If the native SQ
17540 4c 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69  Lite library exi
17550 73 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20  sts in the base 
17560 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
17570 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74       //       it
17580 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  self, stop now..
17590 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
175a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
175b0 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
175c0 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
175d0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61 73  eCombinePath(bas
175e0 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20  eDirectory,..   
175f0 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
17600 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
17610 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
17620 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
17630 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
17640 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
17650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
17660 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
17670 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
17680 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  fied processor a
17690 72 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e  rchitecture is n
176a0 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20  ull, use the..  
176b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
176c0 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20   default...     
176d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
176e0 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
176f0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
17700 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17710 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
17720 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
17730 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
17740 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  cture();....    
17750 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17760 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
17770 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65  we failed to que
17780 72 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ry the processor
17790 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73   architecture, s
177a0 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
177b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
177c0 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
177d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
177e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
177f0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
17800 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
17810 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
17820 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
17830 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
17840 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
17850 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
17860 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17870 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
17880 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
17890 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e  chitecture name.
178a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
178b0 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
178c0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
178d0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
178e0 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62  nePath(MaybeComb
178f0 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
17900 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
17910 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72  ctory, processor
17920 41 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 66  Architecture), f
17930 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
17940 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
17950 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
17960 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e  E: If the file n
17970 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ame based on the
17980 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
17990 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20  tecture name..  
179a0 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f          // is no
179b0 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69  t found, try usi
179c0 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  ng the associate
179d0 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  d platform name.
179e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
179f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
17a00 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
17a10 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
17a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17a30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17a40 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
17a50 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74  empt to translat
17a60 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  e the processor 
17a70 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
17a80 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
17a90 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f   //       platfo
17aa0 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
17ab0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17ac0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
17ad0 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20   platformName = 
17ae0 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
17af0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
17b00 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  cture);....     
17b10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17b20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
17b30 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
17b40 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
17b50 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c  e platform name,
17b60 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
17b70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
17b80 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17b90 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20  platformName == 
17ba0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17bb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17bc0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
17bd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17be0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
17bf0 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
17c00 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
17c10 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
17c20 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
17c30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
17c40 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67     library using
17c50 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
17c60 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
17c70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17c80 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
17c90 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
17ca0 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
17cb0 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  h(MaybeCombinePa
17cc0 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
17cd0 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
17ce0 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61  tory, platformNa
17cf0 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  me), fileNameOnl
17d00 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
17d10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17d20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
17d30 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65   If the file doe
17d40 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69  s not exist, ski
17d50 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  p trying to load
17d60 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
17d70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17d80 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
17d90 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
17da0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
17db0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
17dc0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
17dd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  ...          try
17de0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
17df0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
17e00 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
17e10 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
17e20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
17e30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17e40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
17e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e60 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65   // NOTE: Show e
17e70 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20  xactly where we 
17e80 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f  are trying to lo
17e90 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  ad the native.. 
17ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17eb0 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65   //       SQLite
17ec0 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a   library from...
17ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17ee0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17ef0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
17f00 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
17f10 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
17f20 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
17f30 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
17f40 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
17f50 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
17f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
17f70 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
17f80 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69  e-loader is tryi
17f90 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ng to load nativ
17fa0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
17fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
17fc0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
17fd0 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61  0}\"...", fileNa
17fe0 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
17ff0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18000 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18010 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
18020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18030 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
18040 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
18050 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
18060 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
18070 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18080 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
18090 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20  Attempt to load 
180a0 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
180b0 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65  ry.  This will e
180c0 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ither..         
180d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
180e0 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74  turn a valid nat
180f0 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
18100 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72  e, return IntPtr
18110 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20  .Zero,..        
18120 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
18130 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70  r throw an excep
18140 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74  tion.  This must
18150 20 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72   use the appropr
18160 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  iate..          
18170 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49      //       P/I
18180 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72  nvoke method for
18190 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65   the current ope
181a0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a  rating system...
181b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
181c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
181d0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
181e0 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b  Name = fileName;
181f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18200 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
18210 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61  le = NativeLibra
18220 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62  ryHelper.LoadLib
18230 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  rary(fileName);.
18240 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18250 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65 4d   return (nativeM
18260 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49  oduleHandle != I
18270 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
18280 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
18290 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
182a0 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
182b0 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
182c0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
182d0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
182e0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
182f0 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
18300 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
18310 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
18320 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
18330 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
18340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18360 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
18380 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20  TE: First, grab 
18390 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65  the last Win32 e
183a0 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  rror number...  
183b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
183d0 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72        int lastEr
183e0 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65  ror = Marshal.Ge
183f0 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28  tLastWin32Error(
18400 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
18410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18420 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18430 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
18440 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65  E: Show where we
18450 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
18460 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
18470 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
18480 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
18490 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67  brary from along
184a0 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20   with the Win32 
184b0 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a  error code and..
184c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184d0 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70    //       excep
184e0 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tion information
184f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18500 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18510 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
18520 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
18530 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
18540 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
18550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
18560 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
18570 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
18580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18590 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
185a0 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
185b0 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ed to load nativ
185c0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
185d0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
185e0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
185f0 30 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72  0}\" (getLastErr
18600 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c  or = {1}): {2}",
18610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18620 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
18630 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29  , lastError, e))
18640 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
18670 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
18680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18690 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
186a0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
186b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
186c0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
186d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
186e0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
186f0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
18700 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
18710 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
18770 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18780 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a  MEWORK..    //..
18790 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
187a0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
187b0 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20   Framework, the 
187c0 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
187d0 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20  ssembly must..  
187e0 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73    //       be us
187f0 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72  ed because it pr
18800 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77  ovides several w
18810 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e  orkarounds to .N
18820 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
18830 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f  //       Framewo
18840 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  rk limitations i
18850 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f  mportant for pro
18860 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  per operation of
18870 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f   the core..    /
18880 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44  /       System.D
18890 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74  ata.SQLite funct
188a0 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62  ionality (e.g. b
188b0 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e  eing able to bin
188c0 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  d..    //       
188d0 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68  parameters and h
188e0 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c  andle column val
188f0 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74  ues of types Int
18900 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d  64 and Double)..
18910 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
18920 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
18930 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
18940 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
18950 31 30 37 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  107.dll";..#elif
18960 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
18970 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
18980 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
18990 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72  , if the standar
189a0 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
189b0 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65   is enabled, use
189c0 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
189d0 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
189e0 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
189f0 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d  LL = "sqlite3";.
18a00 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52  .#elif USE_INTER
18a10 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a  OP_DLL..    //..
18a20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
18a30 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e  erwise, if the n
18a40 61 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74  ative SQLite int
18a50 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73  erop assembly is
18a60 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f   enabled,..    /
18a70 2f 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d  /       use it..
18a80 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
18a90 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
18aa0 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
18ab0 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
18ac0 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  dll";..#else..  
18ad0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
18ae0 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75  E: Finally, assu
18af0 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65  me that the mixe
18b00 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20  d-mode assembly 
18b10 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a  is being used...
18b20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
18b30 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
18b40 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
18b50 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
18b60 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  te.dll";..#endif
18b70 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20  ....    // This 
18b80 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74  section uses int
18b90 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20  erop calls that 
18ba0 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20  also fetch text 
18bb0 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69  length to optimi
18bc0 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a  ze conversion...
18bd0 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e      // When usin
18be0 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64  g the standard d
18bf0 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61  ll, we can repla
18c00 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77  ce these calls w
18c10 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74  ith normal sqlit
18c20 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20  e calls and..   
18c30 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a   // do unoptimiz
18c40 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69  ed conversions i
18c50 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64  nstead afterward
18c60 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  s..    #region i
18c70 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78  nterop added tex
18c80 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d  tlength calls...
18c90 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
18ca0 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
18cb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18cc0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18cd0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18ce0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18cf0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
18d00 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
18d10 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18d20 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
18d30 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18d40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18d50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18d60 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18d70 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
18d80 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
18d90 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18da0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18db0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18dc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18dd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18df0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18e00 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
18e10 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f  database_name16_
18e20 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
18e30 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
18e40 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
18e50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18e60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18e70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18e80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
18e90 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
18ea0 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28  ecltype_interop(
18eb0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
18ec0 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
18ed0 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
18ee0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ef0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18f00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18f10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18f20 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
18f30 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
18f40 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18f50 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
18f60 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18f70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18f80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18f90 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18fa0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
18fb0 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
18fc0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
18fd0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
18fe0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
18ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19000 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19010 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19020 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19030 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  lumn_name16_inte
19040 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
19050 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
19060 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
19070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19080 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
19090 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
190a0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
190b0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
190c0 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
190d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
190e0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
190f0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
19100 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19110 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
19120 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19130 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
19140 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
19150 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
19160 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19170 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
19180 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19190 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
191a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
191b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
191c0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
191d0 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e  mn_table_name_in
191e0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
191f0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
19200 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
19210 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19220 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19230 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19240 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19250 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
19260 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  le_name16_intero
19270 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
19280 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
19290 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
192a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
192b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
192c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
192d0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
192e0 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e  3_column_text_in
192f0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
19300 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
19310 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
19320 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19330 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19340 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19350 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19360 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
19370 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
19380 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19390 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
193a0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
193b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
193c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
193d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
193e0 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
193f0 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
19400 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65  r db, ref int le
19410 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
19420 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19430 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19440 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19450 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19460 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
19470 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
19480 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
19490 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
194a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
194b0 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
194c0 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69  , ref int nRemai
194d0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
194e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
194f0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19500 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19510 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19520 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
19530 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74  umn_metadata_int
19540 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
19550 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
19560 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
19570 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72  yte[] colName, r
19580 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ef IntPtr ptrDat
19590 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74  aType, ref IntPt
195a0 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65  r ptrCollSeq, re
195b0 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72  f int notNull, r
195c0 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ef int primaryKe
195d0 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49  y, ref int autoI
195e0 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65  nc, ref int dtLe
195f0 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e  n, ref int csLen
19600 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19620 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19630 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
19640 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
19650 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  ue_text_interop(
19660 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
19670 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
19680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19690 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
196a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
196b0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
196c0 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69  3_value_text16_i
196d0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
196e0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
196f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19700 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19720 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
19730 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a  lite3_malloc_siz
19740 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
19750 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45   p);....#if INTE
19760 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c  ROP_LOG..    [Dl
19770 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19780 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19790 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
197a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
197b0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
197c0 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a  log_interop();..
197d0 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
197e0 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
197f0 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
19800 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
19810 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
19820 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e  add existing fun
19830 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f  ctionality on to
19840 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  p of SQLite and 
19850 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65  require a little
19860 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20   effort to..    
19870 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77  // get working w
19880 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74  hen using the st
19890 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
198a0 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67  brary...    #reg
198b0 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
198c0 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d  d functionality.
198d0 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
198e0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
198f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19900 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
19910 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19920 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f  rn IntPtr intero
19930 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  p_libversion();.
19940 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19960 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19970 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19980 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65  r interop_source
19990 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  id();....    [Dl
199a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
199b0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
199c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
199d0 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d   int interop_com
199e0 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
199f0 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29  IntPtr zOptName)
19a00 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19a10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19a20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19a30 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19a40 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  Ptr interop_comp
19a50 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
19a60 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  t N);....    [Dl
19a70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19a80 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19a90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19aa0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19ab0 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
19ac0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
19ad0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19ae0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19af0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19b00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19b10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19b20 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
19b30 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e  ction_interop(In
19b40 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
19b50 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
19b60 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
19b70 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
19b80 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
19b90 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
19ba0 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
19bb0 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
19bc0 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c  nal, int needCol
19bd0 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  lSeq);....    [D
19be0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19bf0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
19c00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
19c10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
19c20 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
19c30 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
19c40 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  r stmt);....    
19c50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19c60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
19c70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19c80 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19c90 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
19ca0 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f  up_finish_intero
19cb0 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  p(IntPtr backup)
19cc0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19cd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19d00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19d10 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f  ite3_blob_close_
19d20 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62  interop(IntPtr b
19d30 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lob);....    [Dl
19d40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19d50 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19d60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19d70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19d80 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e   sqlite3_open_in
19d90 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
19da0 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
19db0 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
19dc0 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
19dd0 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
19de0 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
19df0 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
19e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19e10 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19e20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19e30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19e40 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e  qlite3_open16_in
19e50 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
19e60 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
19e70 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
19e80 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
19e90 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
19ea0 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
19eb0 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
19ec0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19ed0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19ee0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19ef0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19f00 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74  qlite3_reset_int
19f10 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19f20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19f30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19f40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19f50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
19f60 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
19f70 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  s_interop(IntPtr
19f80 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f   db);..#endif../
19f90 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
19fa0 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
19fb0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
19fc0 68 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20  he standard api 
19fd0 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73  call equivalents
19fe0 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e   of the above in
19ff0 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
1a000 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
1a010 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e  d versions of in
1a020 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d  terop functions.
1a030 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
1a040 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50  ANDARD....#if !P
1a050 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a060 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a070 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a080 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a090 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a0a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a0b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a0c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a0d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a0e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a0f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a100 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a110 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  e3_close(IntPtr 
1a120 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54  db);....#if !INT
1a130 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53  EROP_LEGACY_CLOS
1a140 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
1a150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a160 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a190 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a1a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a1b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a1c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a1d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a1e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a1f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1a200 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1a210 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b  e_v2(IntPtr db);
1a220 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a   /* 3.7.14+ */..
1a230 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1a240 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a250 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a270 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a280 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a290 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a2a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a2b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a2c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a2d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a2e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a2f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a300 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
1a310 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  on(IntPtr db, by
1a320 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
1a330 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
1a340 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1a350 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
1a360 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
1a370 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
1a380 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
1a390 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69  k ffinal);....#i
1a3a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a3b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a3c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a3d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a3e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a3f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a400 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a410 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a420 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a430 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a440 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1a450 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1a460 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
1a470 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1a480 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a490 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a4a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a4b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a4c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a4d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a4e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a4f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a500 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a510 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a520 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a530 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1a540 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
1a550 5f 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62  _finish(IntPtr b
1a560 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
1a570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a5a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a5b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a5c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a5d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a5e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a5f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a600 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a610 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a620 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a630 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72  te3_reset(IntPtr
1a640 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1a650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a6a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a6b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a6c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a6d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a6e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a6f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a700 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  tr sqlite3_bind_
1a710 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49  parameter_name(I
1a720 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1a730 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1a740 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a750 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a770 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a780 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a7a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a7b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a7c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a7d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a7e0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a7f0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1a800 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28  n_database_name(
1a810 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1a820 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1a830 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a860 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a870 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a890 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a8a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a8b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a8c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a8d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a8e0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1a8f0 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
1a900 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1a910 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1a920 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a930 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a950 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a960 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a970 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a980 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a990 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a9a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a9b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a9c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a9d0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1a9e0 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49  olumn_decltype(I
1a9f0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1aa00 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1aa10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aa20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1aa30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1aa40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1aa50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1aa60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1aa70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1aa80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1aa90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1aaa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1aab0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1aac0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1aad0 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74  n_decltype16(Int
1aae0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1aaf0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1ab00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ab10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ab20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ab30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ab40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ab50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ab60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ab70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ab80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ab90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1aba0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1abb0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1abc0 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
1abd0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1abe0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1abf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ac00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ac10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1ac20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ac30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ac40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ac50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ac60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1ac70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ac80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ac90 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1aca0 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49  _column_name16(I
1acb0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1acc0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1acd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ace0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1acf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ad00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ad10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ad20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ad30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ad40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ad50 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ad60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ad70 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1ad80 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1ad90 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e  n_origin_name(In
1ada0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1adb0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1adc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1add0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ade0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1adf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ae00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ae10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ae20 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ae30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ae40 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ae50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ae60 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1ae70 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1ae80 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49  _origin_name16(I
1ae90 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1aea0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1aeb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aec0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1aed0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1aee0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1aef0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1af00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1af10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1af20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1af30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1af40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1af50 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1af60 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1af70 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74  n_table_name(Int
1af80 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1af90 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1afa0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1afb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1afc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1afd0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1afe0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1aff0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b000 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b010 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b020 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b040 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1b050 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1b060 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74  table_name16(Int
1b070 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1b080 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1b090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b0a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b0b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b0c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b0d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b0e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b0f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b100 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b110 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b120 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b130 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1b140 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1b150 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
1b160 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1b170 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b180 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b190 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b1a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b1b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b1c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b1d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b1e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b1f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b200 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b210 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b220 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b230 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49  _column_text16(I
1b240 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1b250 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1b260 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b270 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b290 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b2a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b2b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b2c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b2d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b2e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b2f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b300 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b310 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
1b320 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  g(IntPtr db);...
1b330 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b340 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b350 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b360 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b370 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b380 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b390 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b3a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b3b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b3c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b3d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b3e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1b3f0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
1b400 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1b410 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1b420 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1b430 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1b440 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d  r ptrRemain);...
1b450 0a 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45  .#if USE_PREPARE
1b460 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  _V2..#if !PLATFO
1b470 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b480 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b490 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b4a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b4b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b4c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b4d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b4e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b4f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b500 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b510 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1b520 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
1b530 65 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20  epare_v2(IntPtr 
1b540 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
1b550 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66   int nBytes, ref
1b560 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65   IntPtr stmt, re
1b570 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  f IntPtr ptrRema
1b580 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  in);..#endif....
1b590 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b5a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b5b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b5c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b5d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b5e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b5f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b600 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b610 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b620 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b640 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1b650 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1b660 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49  olumn_metadata(I
1b670 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1b680 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
1b690 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
1b6a0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
1b6b0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
1b6c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
1b6d0 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
1b6e0 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
1b6f0 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
1b700 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a   int autoInc);..
1b710 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b720 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b740 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b750 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b770 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b780 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b7a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b7b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b7c0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1b7d0 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74  3_value_text(Int
1b7e0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
1b7f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b820 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b830 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b840 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b850 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b860 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b870 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b890 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b8a0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1b8b0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70  _text16(IntPtr p
1b8c0 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  );....#endif..  
1b8d0 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e    // SQLITE_STAN
1b8e0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
1b8f0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1b900 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
1b910 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20   are custom and 
1b920 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65  have no equivale
1b930 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  nt standard libr
1b940 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  ary method...   
1b950 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20   // All of them 
1b960 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76  are "nice to hav
1b970 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65  es" and not nece
1b980 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f  ssarily "need to
1b990 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72   haves"...    #r
1b9a0 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c  egion no equival
1b9b0 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74  ent standard met
1b9c0 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  hod....#if !SQLI
1b9d0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1b9e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b9f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1ba00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ba10 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ba20 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f  lite3_context_co
1ba30 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e  llseq_interop(In
1ba40 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1ba50 66 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20  f int type, ref 
1ba60 69 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74  int enc, ref int
1ba70 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1ba80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ba90 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1baa0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bab0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1bac0 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72  ntext_collcompar
1bad0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1bae0 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1baf0 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20   p1, int p1len, 
1bb00 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70  byte[] p2, int p
1bb10 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  2len);....    [D
1bb20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bb30 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bb40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bb50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1bb60 65 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72  e sqlite3_cursor
1bb70 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
1bb80 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1bb90 63 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67  cursor, ref long
1bba0 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowid);....    
1bbb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bbc0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1bbd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bbe0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1bbf0 6f 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ode sqlite3_inde
1bc00 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e  x_column_info_in
1bc10 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
1bc20 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c   byte[] catalog,
1bc30 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d   byte[] IndexNam
1bc40 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e  e, byte[] Column
1bc50 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f  Name, ref int so
1bc60 72 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74  rtOrder, ref int
1bc70 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e   onError, ref In
1bc80 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20  tPtr Collation, 
1bc90 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29  ref int colllen)
1bca0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1bcb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bcc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bcd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1bce0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1bcf0 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e  ursor_interop(In
1bd00 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64  tPtr stmt, int d
1bd10 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74  b, int tableRoot
1bd20 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66  Page);....#endif
1bd30 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
1bd40 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
1bd50 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1bd60 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63  / Standard API c
1bd70 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f  alls global acro
1bd80 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68  ss versions.  Th
1bd90 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e  ere are a few in
1bda0 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72  stances of inter
1bdb0 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f  op calls..    //
1bdc0 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65   scattered in he
1bdd0 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65  re, but they are
1bde0 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65   only active whe
1bdf0 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  n PLATFORM_COMPA
1be00 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64  CTFRAMEWORK is d
1be10 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72  eclared...    #r
1be20 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73  egion standard s
1be30 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
1be40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1be50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1be60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1be70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1be80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1be90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1bea0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1beb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1bec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bed0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1bee0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bef0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1bf00 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
1bf10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1bf20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1bf30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1bf40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1bf50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bf60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1bf70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1bf80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1bf90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bfa0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1bfb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1bfc0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1bfd0 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
1bfe0 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
1bff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c010 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c020 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c030 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c040 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c050 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c070 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c090 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c0a0 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
1c0b0 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
1c0c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c0d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c0e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c0f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c100 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c110 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c120 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c130 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c140 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c150 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c160 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1c170 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
1c180 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a  on_used(IntPtr z
1c190 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  OptName);....#if
1c1a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c1b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c1c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c1d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c1e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c1f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c200 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c210 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c220 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c230 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c240 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c250 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
1c260 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
1c270 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt N);....#if !P
1c280 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c290 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c2a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c2b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c2c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c2d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c2e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c2f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c300 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c310 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c320 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c330 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c340 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
1c350 5f 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20  _cache(..       
1c360 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
1c370 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c380 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c390 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c3a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c3b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c3c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c3d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c3e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c3f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c400 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c410 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c420 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1c430 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  e sqlite3_enable
1c440 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
1c450 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c460 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29   db, int enable)
1c470 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c480 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c490 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c4a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c4b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c4c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c4d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c4e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c4f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c500 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c520 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c530 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f  rCode sqlite3_lo
1c540 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
1c550 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
1c560 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d  , byte[] fileNam
1c570 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61  e, byte[] procNa
1c580 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1c590 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  Error);....#if !
1c5a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c5b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c5c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c5d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c5e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c5f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c600 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c610 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c620 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c630 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c640 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c650 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c660 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e  te3_overload_fun
1c670 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
1c680 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69   IntPtr zName, i
1c690 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69  nt nArgs);....#i
1c6a0 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21  f WINDOWS..#if !
1c6b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c6c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c6d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c6e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c6f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c700 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c710 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1c720 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1c730 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c750 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1c760 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1c770 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
1c780 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
1c790 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73  "sqlite3_win32_s
1c7a0 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51  et_directory" SQ
1c7b0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1c7c0 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20  y function is.. 
1c7d0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
1c7e0 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69   supported on Wi
1c7f0 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  ndows...    //..
1c800 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c810 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c820 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c830 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
1c840 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65  ectory(uint type
1c850 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b  , string value);
1c860 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f  ....#if !DEBUG /
1c870 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62  / NOTE: Should b
1c880 65 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20  e "WIN32HEAP && 
1c890 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20  !MEMDEBUG"..#if 
1c8a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c8b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c8c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c8d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c8e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c8f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c900 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c920 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1c930 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1c940 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69   NOTE: The "sqli
1c950 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
1c960 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
1c970 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
1c980 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
1c990 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
1c9a0 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
1c9b0 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
1c9c0 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
1c9d0 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
1c9e0 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
1c9f0 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
1ca00 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
1ca10 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1ca20 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1ca30 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
1ca40 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
1ca50 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1ca60 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
1ca70 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
1ca80 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
1ca90 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
1caa0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
1cab0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1cac0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1cad0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
1cae0 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69  et_heap();....#i
1caf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cb00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cb10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cb20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cb30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1cb40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1cb50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1cb60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cb70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1cb80 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
1cb90 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
1cba0 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70  lite3_win32_comp
1cbb0 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65  act_heap" SQLite
1cbc0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
1cbd0 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
1cbe0 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
1cbf0 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
1cc00 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32  s when the Win32
1cc10 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f   native allocato
1cc20 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20  r is in..    // 
1cc30 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20        use (i.e. 
1cc40 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22  by default, in "
1cc50 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20  Release" builds 
1cc60 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
1cc70 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20  QLite..    //   
1cc80 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64      only).  By d
1cc90 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75  efault, in "Debu
1cca0 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  g" builds of Sys
1ccb0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c  tem.Data.SQLite,
1ccc0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
1ccd0 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f     MEMDEBUG allo
1cce0 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a  cator is used...
1ccf0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
1cd00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cd10 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1cd20 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
1cd30 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65  _compact_heap(re
1cd40 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b  f uint largest);
1cd50 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
1cd60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1cd70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1cd80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1cd90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1cda0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cdb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1cdc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1cdd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1cde0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cdf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ce00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ce10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1ce20 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e  te3_malloc(int n
1ce30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ce40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ce50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ce60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ce70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ce80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ce90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cea0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ceb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cec0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ced0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cee0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1cef0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e  lite3_realloc(In
1cf00 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d  tPtr p, int n);.
1cf10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1cf20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cf30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1cf40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1cf50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1cf60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1cf70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1cf80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1cf90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1cfa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1cfb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cfc0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1cfd0 5f 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b  _free(IntPtr p);
1cfe0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1cff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d000 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d010 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d030 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d040 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d050 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d070 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d090 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1d0a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
1d0b0 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38  n_v2(byte[] utf8
1d0c0 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e  Filename, ref In
1d0d0 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f  tPtr db, SQLiteO
1d0e0 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
1d0f0 67 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  gs, byte[] vfsNa
1d100 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
1d110 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d120 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d130 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d140 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d150 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d160 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
1d170 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
1d180 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
1d190 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d1a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d1b0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1d1c0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
1d1d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d1e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d1f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d200 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74  qlite3_open16(st
1d210 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72  ring fileName, r
1d220 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ef IntPtr db);..
1d230 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d240 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d250 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d260 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d270 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d290 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d2a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d2b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d2c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d2d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d2e0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1d2f0 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
1d300 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
1d310 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d320 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d340 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1d350 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1d360 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1d370 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d380 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
1d390 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
1d3a0 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
1d3b0 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
1d3c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d3d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d3e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d3f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d410 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d420 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d430 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d450 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d460 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d470 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1d480 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20  _changes(IntPtr 
1d490 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
1d4a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d4b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d4c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d4d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d4e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d4f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d500 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d510 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
1d520 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
1d530 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66  _used();..#endif
1d540 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d550 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d560 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d590 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d5a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
1d5b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d5c0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
1d5d0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
1d5e0 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74  hwater(int reset
1d5f0 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Flag);..#endif..
1d600 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d610 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d620 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d630 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d650 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d660 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d670 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d680 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d690 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d6a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d6b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1d6c0 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  de sqlite3_shutd
1d6d0 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  own();....#if !P
1d6e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d6f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d700 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d710 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d720 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d730 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d740 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d750 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d760 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d770 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d780 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d790 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d7a0 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
1d7b0 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d  IntPtr db, int m
1d7c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
1d7d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d7e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d7f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d800 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d810 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d830 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d850 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d860 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d870 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d880 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d890 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49  clear_bindings(I
1d8a0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1d8b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d8c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d8d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d8e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d8f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d900 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d910 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d930 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d940 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d950 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d960 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1d970 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c   sqlite3_bind_bl
1d980 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
1d990 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b  int index, Byte[
1d9a0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
1d9b0 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e  ze, IntPtr nTran
1d9c0 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  sient);....#if !
1d9d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d9e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d9f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1da00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1da10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1da20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1da30 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1da40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1da50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1da60 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1da70 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
1da80 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62   int index, doub
1da90 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
1daa0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1dab0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1dac0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dad0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1dae0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1daf0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1db00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1db10 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1db20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1db30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1db40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db50 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1db60 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1db70 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73  ind_int(IntPtr s
1db80 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1db90 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  int value);.... 
1dba0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1dbb0 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20  TE: This really 
1dbc0 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69  just calls "sqli
1dbd0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68  te3_bind_int"; h
1dbe0 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
1dbf0 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
1dc00 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
1dc10 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
1dc20 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29  nsigned (32-bit)
1dc30 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
1dc40 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
1dc50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1dc60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1dc70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1dc80 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1dc90 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43  te3_bind_int", C
1dca0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dcb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dcc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dcd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dcf0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
1dd00 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29  lite3_bind_int")
1dd10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dd20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dd30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1dd40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
1dd50 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73  nd_uint(IntPtr s
1dd60 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1dd70 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uint value);....
1dd80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dd90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dda0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ddb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ddc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ddd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dde0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1ddf0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1de00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1de10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
1de20 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  d_int64(IntPtr s
1de30 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1de40 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
1de50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ndif....    //..
1de60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
1de70 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
1de80 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
1de90 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65  d_int64"; howeve
1dea0 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
1deb0 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
1dec0 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
1ded0 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
1dee0 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29  ed long (64-bit)
1def0 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
1df00 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
1df10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1df20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1df30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1df40 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1df50 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c  te3_bind_int64",
1df60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1df70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1df80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1df90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dfa0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1dfb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1dfc0 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49  e3_bind_uint64(I
1dfd0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1dfe0 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c  index, ulong val
1dff0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
1e000 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e010 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e020 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e030 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e040 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e050 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e060 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e070 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e080 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e090 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e0a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e0b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e0c0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75   sqlite3_bind_nu
1e0d0 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ll(IntPtr stmt, 
1e0e0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1e0f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e100 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e120 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e150 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e170 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e180 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e190 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e1a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e1b0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
1e1c0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
1e1d0 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d  nt index, byte[]
1e1e0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
1e1f0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1e200 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1e210 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e220 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e230 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e240 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e250 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e260 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e270 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e290 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e2a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e2b0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1e2c0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
1e2d0 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74  eter_count(IntPt
1e2e0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
1e2f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e300 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e310 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e320 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e330 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e340 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e350 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e360 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e370 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e380 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e390 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1e3a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1e3b0 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e  rameter_index(In
1e3c0 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b  tPtr stmt, byte[
1e3d0 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] strName);....#
1e3e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e3f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e400 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e410 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e420 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e430 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e440 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e450 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e460 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e470 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e480 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e490 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
1e4a0 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  mn_count(IntPtr 
1e4b0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1e4c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e4d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e4e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e4f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e500 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e510 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e520 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e530 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e540 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e550 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e560 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e570 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e580 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73  e3_step(IntPtr s
1e590 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1e5a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e5b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e5c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e5d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e5e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e5f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e600 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e610 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e620 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e630 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e640 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1e650 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
1e660 6e 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29  nly(IntPtr stmt)
1e670 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a  ; /* 3.7.4+ */..
1e680 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e690 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e6a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e6b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e6c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e6d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e6e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1e6f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e700 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
1e710 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
1e720 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
1e730 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
1e740 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1e750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e780 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e790 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e7a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e7b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e7c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e7d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e7e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e7f0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e800 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28  ite3_column_int(
1e810 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1e820 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1e830 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e860 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e870 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e890 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1e8a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e8b0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f   long sqlite3_co
1e8c0 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74  lumn_int64(IntPt
1e8d0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e8e0 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
1e8f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e900 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e910 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e920 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e930 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e940 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e950 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e960 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e970 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e980 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e990 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e9a0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1e9b0 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74  olumn_blob(IntPt
1e9c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e9d0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1e9e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e9f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ea00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ea10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ea20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ea30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ea40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ea50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ea60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ea70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ea80 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1ea90 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
1eaa0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1eab0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1eac0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ead0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1eae0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eaf0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1eb00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1eb10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1eb20 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1eb30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1eb40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1eb50 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1eb60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1eb70 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
1eb80 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20  _bytes16(IntPtr 
1eb90 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1eba0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ebb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ebc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ebd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1ebe0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ebf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ec00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ec10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1ec20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ec30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1ec40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ec50 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
1ec60 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ty sqlite3_colum
1ec70 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74  n_type(IntPtr st
1ec80 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1ec90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1eca0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ecb0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ecc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ecd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ece0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ecf0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ed00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ed10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ed20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ed30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ed40 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ed50 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
1ed60 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74  te_collation(Int
1ed70 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
1ed80 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70  trName, int nTyp
1ed90 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
1eda0 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f  , SQLiteCollatio
1edb0 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  n func);....#if 
1edc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1edd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ede0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1edf0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ee00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ee10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ee20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ee30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ee40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ee50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ee60 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1ee70 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
1ee80 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  te_count(IntPtr 
1ee90 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
1eea0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1eeb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1eec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eed0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1eee0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1eef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ef00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
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 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ef30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ef40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ef50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
1ef60 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70  ue_blob(IntPtr p
1ef70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ef80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ef90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1efa0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1efb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1efc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1efd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1efe0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1eff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f000 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f010 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f020 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1f030 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49  e3_value_bytes(I
1f040 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1f050 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f060 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f080 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f090 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f0a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f0b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f0c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f0d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f0e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f0f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f100 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
1f110 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70  bytes16(IntPtr p
1f120 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f130 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f140 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f160 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f170 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f180 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f190 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f1a0 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
1f1b0 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  e sqlite3_value_
1f1c0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29  double(IntPtr p)
1f1d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1f1e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f1f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f210 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f220 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f230 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f240 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f250 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f260 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f270 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f280 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f290 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
1f2a0 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  int(IntPtr p);..
1f2b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f2c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f2d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f2e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f2f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f300 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f310 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1f320 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f330 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
1f340 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28  te3_value_int64(
1f350 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64  IntPtr p);..#end
1f360 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1f370 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f380 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f390 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f3a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f3b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f3c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f3d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f3e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f3f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f400 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f410 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
1f420 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ity sqlite3_valu
1f430 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29  e_type(IntPtr p)
1f440 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f450 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f460 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f470 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f480 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f490 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f4a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f4b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f4c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f4d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f4e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f4f0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1f500 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49  e3_result_blob(I
1f510 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
1f520 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
1f530 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70   nSize, IntPtr p
1f540 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
1f550 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f560 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f580 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f590 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f5a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f5b0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1f5c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f5d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1f5e0 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49  _result_double(I
1f5f0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64  ntPtr context, d
1f600 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
1f610 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1f620 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f630 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f640 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f650 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f660 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f670 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f680 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f690 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f6a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f6b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f6c0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f6d0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1f6e0 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
1f6f0 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
1f700 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
1f710 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f720 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f730 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f740 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f750 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f760 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f770 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f780 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f790 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f7a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f7b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f7c0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1f7d0 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65  esult_error_code
1f7e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1f7f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f800 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
1f810 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f820 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f840 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1f850 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1f860 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1f870 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1f880 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f890 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1f8a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f8b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1f8c0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1f8d0 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e  _error_toobig(In
1f8e0 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
1f8f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f900 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f910 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f920 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f930 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f940 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f950 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f960 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f970 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f980 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f990 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f9a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1f9b0 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d  result_error_nom
1f9c0 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  em(IntPtr contex
1f9d0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1f9e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f9f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fa00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fa10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fa20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fa30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1fa40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1fa50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fa60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1fa70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fa80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1fa90 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
1faa0 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
1fab0 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b  , IntPtr value);
1fac0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1fad0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1fae0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1faf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fb00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fb10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fb20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fb30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1fb40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fb50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1fb60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1fb70 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1fb80 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
1fb90 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
1fba0 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
1fbb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fbc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fbd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fbe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1fbf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fc00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fc10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fc20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fc30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1fc40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1fc50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fc60 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1fc70 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20  sult_int(IntPtr 
1fc80 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c  context, int val
1fc90 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
1fca0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fcb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1fcc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fcd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1fce0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1fcf0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fd00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1fd10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1fd20 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1fd30 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
1fd40 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
1fd50 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
1fd60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fd70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fd80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fd90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1fda0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fdb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fdc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1fdd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fde0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1fdf0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fe00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fe10 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1fe20 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ult_null(IntPtr 
1fe30 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
1fe40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1fe50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1fe60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fe70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1fe80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fe90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1fea0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1feb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fec0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1fed0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1fee0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1fef0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1ff00 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  t_text(IntPtr co
1ff10 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
1ff20 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49  lue, int nLen, I
1ff30 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
1ff40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ff50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ff60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ff70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ff80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ff90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ffa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ffb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ffc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ffd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ffe0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fff0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20000 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
20010 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63  context(IntPtr c
20020 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74  ontext, int nByt
20030 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
20040 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20050 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20060 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20070 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20080 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20090 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
200a0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
200b0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
200c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
200d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
200e0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
200f0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
20100 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20110 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
20120 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
20130 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
20140 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
20150 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e  int index, strin
20160 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65  g value, int nle
20170 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
20180 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
20190 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
201a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
201b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
201c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
201d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
201e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
201f0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
20200 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
20210 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20220 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20230 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
20240 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
20250 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20260 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20270 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
20280 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74  sult_error16(Int
20290 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
202a0 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
202b0 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
202c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
202d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
202e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
202f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20300 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20310 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20320 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
20330 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
20340 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20350 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20360 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
20370 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
20380 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20390 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
203a0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
203b0 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74  esult_text16(Int
203c0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
203d0 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
203e0 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
203f0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
20400 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20  f INTEROP_CODEC 
20410 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55  || INTEROP_INCLU
20420 44 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41  DE_SEE..#if !PLA
20430 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20440 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20450 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20460 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20470 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20480 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20490 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
204a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
204b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
204c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
204d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
204e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
204f0 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  _key(IntPtr db, 
20500 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
20510 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  keylen);....#if 
20520 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20530 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20550 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20560 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20580 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20590 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
205a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
205b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
205c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
205d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
205e0 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74  ite3_rekey(IntPt
205f0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
20600 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a  , int keylen);..
20610 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e  #endif....#if IN
20620 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49  TEROP_INCLUDE_ZI
20630 50 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46  PVFS..#if !PLATF
20640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20650 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20660 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20670 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20680 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20690 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
206a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
206b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
206c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
206d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
206e0 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76  extern void zipv
206f0 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a  fsInit_v2();....
20700 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20710 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20720 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20730 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20740 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20760 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20770 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20780 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20790 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
207a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
207b0 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
207c0 5f 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29  _v3(int regDflt)
207d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
207e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
207f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20810 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20820 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20830 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20840 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20850 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20860 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20870 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20880 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
20890 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72  id sqlite3_progr
208a0 65 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50  ess_handler(IntP
208b0 74 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20  tr db, int ops, 
208c0 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61  SQLiteProgressCa
208d0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
208e0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
208f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20900 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20910 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20920 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20930 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20940 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20950 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20960 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20970 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20980 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20990 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
209a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
209b0 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49  set_authorizer(I
209c0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
209d0 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61  AuthorizerCallba
209e0 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
209f0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
20a00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20a10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20a20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20a30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20a40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20a50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20a60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20a70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20a80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20a90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20aa0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20ab0 50 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61  Ptr sqlite3_upda
20ac0 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  te_hook(IntPtr d
20ad0 62 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43  b, SQLiteUpdateC
20ae0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
20af0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
20b00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20b10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20b20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20b30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20b40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20b50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20b60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20b70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20b80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20b90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20ba0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20bb0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
20bc0 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74  _commit_hook(Int
20bd0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f  Ptr db, SQLiteCo
20be0 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e  mmitCallback fun
20bf0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
20c00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20c10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20c20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20c30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20c40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20c50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20c60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20c70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20c80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20ca0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20cb0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20cc0 6c 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50  lite3_trace(IntP
20cd0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61  tr db, SQLiteTra
20ce0 63 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ceCallback func,
20cf0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
20d00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20d20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20d30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20d40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20d50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20d60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20d70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20d80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20da0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20db0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20dc0 74 65 33 5f 74 72 61 63 65 5f 76 32 28 49 6e 74  te3_trace_v2(Int
20dd0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72  Ptr db, SQLiteTr
20de0 61 63 65 46 6c 61 67 73 20 6d 61 73 6b 2c 20 53  aceFlags mask, S
20df0 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61  QLiteTraceCallba
20e00 63 6b 32 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ck2 func, IntPtr
20e10 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20   pvUser);....   
20e20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
20e30 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73  3_config() takes
20e40 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
20e50 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
20e60 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
20e70 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
20e80 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
20e90 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20  ible calls that 
20ea0 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d  we want to use..
20eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
20ef0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
20f00 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
20f10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20f20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20f30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20f40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20f50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
20f60 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
20f70 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
20f80 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20f90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20fa0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20fb0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e  sqlite3_config_n
20fc0 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  one(SQLiteConfig
20fd0 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a  OpsEnum op);....
20fe0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20ff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21010 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21020 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
21030 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
21040 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21050 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21060 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21070 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21080 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21090 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
210a0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
210b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
210c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
210d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
210e0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e  qlite3_config_in
210f0 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  t(SQLiteConfigOp
21100 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61  sEnum op, int va
21110 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
21120 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21130 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21150 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
21160 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
21170 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
21180 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21190 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
211a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
211b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
211c0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
211d0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
211e0 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
211f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21200 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
21210 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
21220 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74  config_log(SQLit
21230 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
21240 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c  p, SQLiteLogCall
21250 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
21260 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
21270 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21280 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
212a0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
212b0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
212c0 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  b_config", Calli
212d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
212e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
212f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21300 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21310 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
21320 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
21330 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  3_db_config")]..
21340 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21350 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21360 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21370 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  de sqlite3_db_co
21380 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74 28  nfig_int_refint(
21390 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
213a0 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d  eConfigDbOpsEnum
213b0 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c 20   op, int value, 
213c0 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29 3b  ref int result);
213d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
213e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
213f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21400 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21410 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21420 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21430 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21440 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21450 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21460 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21470 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21480 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
21490 74 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f  te3_rollback_hoo
214a0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
214b0 69 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62  iteRollbackCallb
214c0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
214d0 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
214e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
214f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21500 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21510 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21520 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21530 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21540 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21550 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21560 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21570 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21580 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
21590 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f  tPtr sqlite3_db_
215a0 68 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74  handle(IntPtr st
215b0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
215c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
215d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
215e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
215f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21600 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21610 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21620 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21630 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21640 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21650 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21660 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
21670 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
21680 5f 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f  _db_release_memo
21690 72 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ry(IntPtr db);..
216a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
216b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
216c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
216d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
216e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
216f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21700 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21710 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21720 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21730 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21740 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21750 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
21760 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e  3_db_filename(In
21770 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
21780 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
21790 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
217a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
217b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
217c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
217d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
217e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
217f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21810 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21820 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21830 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
21840 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61 64   sqlite3_db_read
21850 6f 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20  only(IntPtr db, 
21860 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d  IntPtr dbName);.
21870 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21880 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21890 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
218a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
218b0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
218c0 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22  te3_db_filename"
218d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
218e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
218f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21900 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21910 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21920 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
21930 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65  "sqlite3_db_file
21940 6e 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  name")]..#endif.
21950 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21960 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
21970 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  tr sqlite3_db_fi
21980 6c 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e 74  lename_bytes(Int
21990 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64  Ptr db, byte[] d
219a0 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
219b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
219c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
219d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
219e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
219f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21a00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21a10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21a20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21a30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21a40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21a50 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
21a60 74 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f  tr sqlite3_next_
21a70 73 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c 20  stmt(IntPtr db, 
21a80 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
21a90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21aa0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21ab0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21ac0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21ad0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21ae0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21af0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21b00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21b10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21b20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21b30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21b40 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21b50 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49  e sqlite3_exec(I
21b60 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
21b70 20 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20   strSql, IntPtr 
21b80 70 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50  pvCallback, IntP
21b90 74 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66 20  tr pvParam, ref 
21ba0 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d  IntPtr errMsg);.
21bb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21bc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21bd0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21be0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21bf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21c00 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21c10 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21c20 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21c30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21c40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21c50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21c60 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
21c70 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69  release_memory(i
21c80 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
21c90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21ca0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21cb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21cc0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21cd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21ce0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21cf0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21d00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21d10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
21d20 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21d30 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21d40 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  int sqlite3_get_
21d50 61 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74  autocommit(IntPt
21d60 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
21d70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21d80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21d90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21da0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21db0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21dc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21dd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21de0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21df0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21e00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21e10 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21e20 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21e30 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
21e40 6c 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20  lt_codes(IntPtr 
21e50 64 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d  db, int onoff);.
21e60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21e70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21e80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21e90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21ea0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21eb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21ec0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21ed0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21ee0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21ef0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21f00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21f10 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21f20 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63  ode sqlite3_errc
21f30 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  ode(IntPtr db);.
21f40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21f50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21f60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21f70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21f80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21f90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21fa0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21fb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21fc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21fd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21fe0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21ff0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
22000 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  ode sqlite3_exte
22010 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74  nded_errcode(Int
22020 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#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 65 72 72 73  Ptr sqlite3_errs
220f0 74 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  tr(SQLiteErrorCo
22100 64 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31  de rc); /* 3.7.1
22110 35 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20  5+ */....    // 
22120 53 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f  Since sqlite3_lo
22130 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69  g() takes a vari
22140 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69  able argument li
22150 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f  st, we have to o
22160 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74  verload declarat
22170 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72  ions..    // for
22180 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61   all possible ca
22190 6c 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77  lls.  For now, w
221a0 65 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73  e are only expos
221b0 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72  ing a single str
221c0 69 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  ing, and..    //
221d0 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63   depend on the c
221e0 61 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20  aller to format 
221f0 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66  the string...#if
22200 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22210 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22220 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22230 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22240 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22250 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22260 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22270 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22280 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22290 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
222a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
222b0 69 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53  id sqlite3_log(S
222c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69  QLiteErrorCode i
222d0 45 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20  ErrCode, byte[] 
222e0 7a 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66  zFormat);....#if
222f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22300 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22310 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22320 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22330 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22340 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22350 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22360 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22370 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22380 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22390 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
223a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
223b0 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
223c0 6f 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  ol(IntPtr db, by
223d0 74 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e  te[] zDbName, in
223e0 74 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72  t op, IntPtr pAr
223f0 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  g);....#if !PLAT
22400 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22410 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22420 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22430 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22440 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22450 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22460 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22470 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22480 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22490 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
224a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
224b0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e  qlite3_backup_in
224c0 69 74 28 49 6e 74 50 74 72 20 64 65 73 74 44 62  it(IntPtr destDb
224d0 2c 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61  , byte[] zDestNa
224e0 6d 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63  me, IntPtr sourc
224f0 65 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75  eDb, byte[] zSou
22500 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  rceName);....#if
22510 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22520 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22530 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22540 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22550 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22560 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22570 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22580 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22590 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
225a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
225b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
225c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
225d0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65  lite3_backup_ste
225e0 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c  p(IntPtr backup,
225f0 20 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a   int nPage);....
22600 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22610 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22620 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22630 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22640 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22660 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22670 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22680 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22690 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
226a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
226b0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63   int sqlite3_bac
226c0 6b 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e  kup_remaining(In
226d0 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
226e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
226f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22700 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22710 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22720 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22730 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22740 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22750 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22760 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22770 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22780 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22790 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61  n int sqlite3_ba
227a0 63 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49  ckup_pagecount(I
227b0 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
227c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
227d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
227e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
227f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22800 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22810 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22820 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22830 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22840 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22850 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22860 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22870 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
22880 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
22890 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c 6f  close(IntPtr blo
228a0 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
228b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
228c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
228d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
228e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
228f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22900 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22910 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22920 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22930 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22940 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22950 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
22960 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28 49  te3_blob_bytes(I
22970 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a  ntPtr blob);....
22980 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22990 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
229a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
229b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
229c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
229d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
229e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
229f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22a00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22a10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22a20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22a30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22a40 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70   sqlite3_blob_op
22a50 65 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  en(IntPtr db, by
22a60 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74  te[] dbName, byt
22a70 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74  e[] tblName, byt
22a80 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e  e[] colName, lon
22a90 67 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c 61  g rowId, int fla
22aa0 67 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  gs, ref IntPtr p
22ab0 74 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20  trBlob);....#if 
22ac0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22ad0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22ae0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22af0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22b00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22b10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22b20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22b30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22b40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22b50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22b60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
22b70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
22b80 69 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28 49  ite3_blob_read(I
22b90 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72  ntPtr blob, [Mar
22ba0 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64  shalAs(Unmanaged
22bb0 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62  Type.LPArray)] b
22bc0 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e  yte[] buffer, in
22bd0 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66  t count, int off
22be0 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  set);....#if !PL
22bf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22c00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22c10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22c20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22c30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22c40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22c50 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22c60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22c70 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22c80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22c90 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22ca0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
22cb0 33 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49 6e  3_blob_reopen(In
22cc0 74 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67 20  tPtr blob, long 
22cd0 72 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20 21  rowId);....#if !
22ce0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22cf0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22d00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22d10 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22d20 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22d30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22d40 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22d50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22d60 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22d70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22d80 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
22d90 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
22da0 74 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28 49  te3_blob_write(I
22db0 6e 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72  ntPtr blob, [Mar
22dc0 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64  shalAs(Unmanaged
22dd0 54 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62  Type.LPArray)] b
22de0 79 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e  yte[] buffer, in
22df0 74 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66  t count, int off
22e00 73 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  set);....#if !PL
22e10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22e20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22e40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22e50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22e60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22e70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22e80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22e90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22ea0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22eb0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
22ec0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
22ed0 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49  3_declare_vtab(I
22ee0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
22ef0 20 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21   zSQL);....#if !
22f00 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22f10 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22f20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22f30 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22f40 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22f60 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22f70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22f80 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22f90 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22fa0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
22fb0 74 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  tr sqlite3_mprin
22fc0 74 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74  tf(IntPtr format
22fd0 2c 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20  , __arglist);.. 
22fe0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
22ff0 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41  .    // SQLite A
23000 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72  PI calls that ar
23010 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77  e provided by "w
23020 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e  ell-known" exten
23030 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62  sions that may b
23040 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20  e statically..  
23050 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68    // linked with
23060 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
23070 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
23080 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65  currently in use
23090 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65  ...    #region e
230a0 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20  xtension sqlite 
230b0 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23  api calls..    #
230c0 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c 20 74  region virtual t
230d0 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52 4f  able..#if INTERO
230e0 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
230f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23100 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23110 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23120 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23130 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23140 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23150 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23160 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23170 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23180 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23190 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
231a0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
231b0 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62  _create_disposab
231c0 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  le_module(IntPtr
231d0 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
231e0 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f  , ref sqlite3_mo
231f0 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74  dule module, Int
23200 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
23210 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20   xDestroyModule 
23220 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69  xDestroy);....#i
23230 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23240 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23250 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23260 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23270 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23280 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23290 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
232a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
232b0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
232c0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
232d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
232e0 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70  oid sqlite3_disp
232f0 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74  ose_module(IntPt
23300 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  r pModule);..#en
23310 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  dif..    #endreg
23320 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
23330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23370 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
23380 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65 78  egion session ex
23390 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e 54  tension..#if INT
233a0 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58 54  EROP_SESSION_EXT
233b0 45 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50 4c 41  ENSION..#if !PLA
233c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
233d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
233e0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
233f0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
23400 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23410 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23420 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 69  ernal delegate i
23430 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  nt xSessionFilte
23440 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  r(IntPtr context
23450 2c 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d  , IntPtr pTblNam
23460 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
23470 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23480 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
23490 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
234a0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
234b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
234c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
234d0 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51  rnal delegate SQ
234e0 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e  LiteChangeSetCon
234f0 66 6c 69 63 74 52 65 73 75 6c 74 20 78 53 65 73  flictResult xSes
23500 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49 6e 74  sionConflict(Int
23510 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
23520 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
23530 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c 20 49  lictType type, I
23540 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b  ntPtr iterator);
23550 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23560 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23570 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
23580 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
23590 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
235a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
235b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
235c0 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  l delegate SQLit
235d0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73  eErrorCode xSess
235e0 69 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74 72 20  ionInput(IntPtr 
235f0 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
23600 70 44 61 74 61 2c 20 72 65 66 20 69 6e 74 20 6e  pData, ref int n
23610 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Data);....#if !P
23620 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23630 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
23640 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
23650 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
23660 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23670 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23680 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
23690 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
236a0 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 28   xSessionOutput(
236b0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
236c0 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 69 6e  IntPtr pData, in
236d0 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20  t nData);....   
236e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
236f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23730 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23740 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23750 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23760 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23770 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23780 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23790 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
237a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
237b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
237c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
237d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
237e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
237f0 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
23800 63 72 65 61 74 65 28 49 6e 74 50 74 72 20 64 62  create(IntPtr db
23810 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c  , byte[] dbName,
23820 20 72 65 66 20 49 6e 74 50 74 72 20 73 65 73 73   ref IntPtr sess
23830 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
23840 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23850 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23860 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23870 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23880 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23890 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
238a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
238b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
238c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
238d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
238e0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
238f0 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 65  qlite3session_de
23900 6c 65 74 65 28 49 6e 74 50 74 72 20 73 65 73 73  lete(IntPtr sess
23910 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
23920 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23930 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23940 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23950 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23960 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23970 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23980 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23990 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
239a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
239b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
239c0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
239d0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61  lite3session_ena
239e0 62 6c 65 28 49 6e 74 50 74 72 20 73 65 73 73 69  ble(IntPtr sessi
239f0 6f 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b  on, int enable);
23a00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23a10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23a20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23a30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23a40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23a50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23a60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23a70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23a80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23a90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23aa0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23ab0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
23ac0 73 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74  session_indirect
23ad0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
23ae0 20 69 6e 74 20 69 6e 64 69 72 65 63 74 29 3b 0d   int indirect);.
23af0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23b00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23b10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23b20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23b30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23b40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23b50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23b60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23b70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23b80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23b90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23ba0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23bb0 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
23bc0 6f 6e 5f 61 74 74 61 63 68 28 49 6e 74 50 74 72  on_attach(IntPtr
23bd0 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d   session, byte[]
23be0 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69   tblName);....#i
23bf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23c00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23c10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23c20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23c30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23c40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23c50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23c60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23c70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23c80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23c90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
23ca0 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73 73 69  oid sqlite3sessi
23cb0 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72 28  on_table_filter(
23cc0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
23cd0 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78  xSessionFilter x
23ce0 46 69 6c 74 65 72 2c 20 49 6e 74 50 74 72 20 63  Filter, IntPtr c
23cf0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
23d00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23d10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23d20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23d30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23d40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23d50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23d60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23d70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23d80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23d90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23da0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
23db0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
23dc0 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e  ite3session_chan
23dd0 67 65 73 65 74 28 49 6e 74 50 74 72 20 73 65 73  geset(IntPtr ses
23de0 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 43  sion, ref int nC
23df0 68 61 6e 67 65 53 65 74 2c 20 72 65 66 20 49 6e  hangeSet, ref In
23e00 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29  tPtr pChangeSet)
23e10 3b 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ;...#if !PLATFOR
23e20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23e30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23e40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23e50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23e60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23e70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23e80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23ea0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23eb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23ec0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23ed0 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
23ee0 69 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74 72 20  ion_diff(IntPtr 
23ef0 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20  session, byte[] 
23f00 66 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79 74 65  fromDbName, byte
23f10 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65 66 20  [] tblName, ref 
23f20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d  IntPtr errMsg);.
23f30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23f40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23f50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23f60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23f70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23f80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23f90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23fa0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23fb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23fc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23fd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23fe0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23ff0 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
24000 6f 6e 5f 70 61 74 63 68 73 65 74 28 49 6e 74 50  on_patchset(IntP
24010 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20  tr session, ref 
24020 69 6e 74 20 6e 50 61 74 63 68 53 65 74 2c 20 72  int nPatchSet, r
24030 65 66 20 49 6e 74 50 74 72 20 70 50 61 74 63 68  ef IntPtr pPatch
24040 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Set);....#if !PL
24050 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24060 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24070 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24080 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24090 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
240a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
240b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
240c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
240d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
240e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
240f0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
24100 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 73 65  lite3session_ise
24110 6d 70 74 79 28 49 6e 74 50 74 72 20 73 65 73 73  mpty(IntPtr sess
24120 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ion);....#if !PL
24130 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24140 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24160 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24170 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24180 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24190 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
241a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
241b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
241c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
241d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
241e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
241f0 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
24200 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65 72  (ref IntPtr iter
24210 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e 67  ator, int nChang
24220 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68  eSet, IntPtr pCh
24230 61 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23 69 66  angeSet);....#if
24240 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24250 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24270 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
24280 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
24290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
242a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
242b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
242c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
242d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
242e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
242f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24300 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e  lite3changeset_n
24310 65 78 74 28 49 6e 74 50 74 72 20 69 74 65 72 61  ext(IntPtr itera
24320 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tor);....#if !PL
24330 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24340 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24350 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24360 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24370 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24380 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24390 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
243a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
243b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
243c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
243d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
243e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
243f0 33 63 68 61 6e 67 65 73 65 74 5f 6f 70 28 49 6e  3changeset_op(In
24400 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72  tPtr iterator, r
24410 65 66 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61  ef IntPtr pTblNa
24420 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c  me, ref int nCol
24430 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69 74 65  umns, ref SQLite
24440 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
24450 43 6f 64 65 20 6f 70 2c 20 72 65 66 20 69 6e 74  Code op, ref int
24460 20 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a   bIndirect);....
24470 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24480 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
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 43 61 6c 6c 69  QLITE_DLL, Calli
244b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
244c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
244d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
244e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
244f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24500 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24510 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24520 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24530 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
24540 74 5f 70 6b 28 49 6e 74 50 74 72 20 69 74 65 72  t_pk(IntPtr iter
24550 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72  ator, ref IntPtr
24560 20 70 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 72   pPrimaryKeys, r
24570 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29  ef int nColumns)
24580 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24590 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
245a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
245b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
245c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
245d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
245e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
245f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24600 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24610 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24620 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24630 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24640 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
24650 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50 74  ngeset_old(IntPt
24660 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20  r iterator, int 
24670 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66  columnIndex, ref
24680 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b   IntPtr pValue);
24690 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
246a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
246b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
246c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
246d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
246e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
246f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24700 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24710 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24720 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24730 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24740 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24750 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
24760 67 65 73 65 74 5f 6e 65 77 28 49 6e 74 50 74 72  geset_new(IntPtr
24770 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63   iterator, int c
24780 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20  olumnIndex, ref 
24790 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d  IntPtr pValue);.
247a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
247b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
247c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
247d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
247e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
247f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24800 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24810 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24820 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24830 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24840 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24850 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24860 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
24870 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49 6e  eset_conflict(In
24880 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69  tPtr iterator, i
24890 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20  nt columnIndex, 
248a0 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75  ref IntPtr pValu
248b0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
248c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
248d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
248e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
248f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24900 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24910 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24920 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24930 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24940 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24950 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24960 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
24970 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
24980 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66  hangeset_fk_conf
24990 6c 69 63 74 73 28 49 6e 74 50 74 72 20 69 74 65  licts(IntPtr ite
249a0 72 61 74 6f 72 2c 20 72 65 66 20 69 6e 74 20 63  rator, ref int c
249b0 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23 69  onflicts);....#i
249c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
249d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
249e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
249f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24a00 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24a10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24a20 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24a30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24a40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24a50 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24a60 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24a70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24a80 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
24a90 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
24aa0 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69  iterator);....#i
24ab0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24ac0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24ad0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24ae0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24af0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24b00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24b10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24b20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24b30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24b40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24b50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24b60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24b70 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
24b80 69 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c 20  invert(int nIn, 
24b90 49 6e 74 50 74 72 20 70 49 6e 2c 20 72 65 66 20  IntPtr pIn, ref 
24ba0 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e  int nOut, ref In
24bb0 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23  tPtr pOut);....#
24bc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24bd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24be0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24bf0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24c00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24c10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24c20 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24c30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24c40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24c50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24c60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24c70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24c80 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
24c90 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c 20  _concat(int nA, 
24ca0 49 6e 74 50 74 72 20 70 41 2c 20 69 6e 74 20 6e  IntPtr pA, int n
24cb0 42 2c 20 49 6e 74 50 74 72 20 70 42 2c 20 72 65  B, IntPtr pB, re
24cc0 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20  f int nOut, ref 
24cd0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
24ce0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24cf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24d00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24d10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24d20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24d30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24d40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24d50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24d60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24d70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24d80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24d90 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24da0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
24db0 72 6f 75 70 5f 6e 65 77 28 72 65 66 20 49 6e 74  roup_new(ref Int
24dc0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29  Ptr changeGroup)
24dd0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24de0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24df0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24e00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24e10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24e20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24e30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24e40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24e50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24e60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24e70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24e80 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24e90 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
24ea0 6e 67 65 67 72 6f 75 70 5f 61 64 64 28 49 6e 74  ngegroup_add(Int
24eb0 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c  Ptr changeGroup,
24ec0 20 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74 50   int nData, IntP
24ed0 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69  tr pData);....#i
24ee0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24ef0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24f00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24f10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24f20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24f30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24f40 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
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 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24f70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24f80 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24f90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24fa0 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
24fb0 70 5f 6f 75 74 70 75 74 28 49 6e 74 50 74 72 20  p_output(IntPtr 
24fc0 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 72 65 66  changeGroup, ref
24fd0 20 69 6e 74 20 6e 44 61 74 61 2c 20 72 65 66 20   int nData, ref 
24fe0 49 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a  IntPtr pData);..
24ff0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25000 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25020 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25030 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25040 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25050 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25060 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25070 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25080 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25090 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
250a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 63  rn void sqlite3c
250b0 68 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65 74  hangegroup_delet
250c0 65 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  e(IntPtr changeG
250d0 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  roup);....#if !P
250e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
250f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25100 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25110 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25120 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25130 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25140 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25160 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25170 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25180 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25190 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
251a0 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c  e3changeset_appl
251b0 79 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  y(IntPtr db, int
251c0 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74   nChangeSet, Int
251d0 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 2c 20  Ptr pChangeSet, 
251e0 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78  xSessionFilter x
251f0 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e  Filter, xSession
25200 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69  Conflict xConfli
25210 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  ct, IntPtr conte
25220 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
25230 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25240 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25250 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25260 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25270 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25280 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25290 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
252a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
252b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
252c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
252d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
252e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
252f0 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f  changeset_apply_
25300 73 74 72 6d 28 49 6e 74 50 74 72 20 64 62 2c 20  strm(IntPtr db, 
25310 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
25320 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e  nput, IntPtr pIn
25330 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  , xSessionFilter
25340 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69   xFilter, xSessi
25350 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66  onConflict xConf
25360 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e  lict, IntPtr con
25370 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
25380 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25390 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
253a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
253b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
253c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
253d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
253e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
253f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25400 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25410 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25420 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25430 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25440 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63  e3changeset_conc
25450 61 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e  at_strm(xSession
25460 49 6e 70 75 74 20 78 49 6e 70 75 74 41 2c 20 49  Input xInputA, I
25470 6e 74 50 74 72 20 70 49 6e 41 2c 20 78 53 65 73  ntPtr pInA, xSes
25480 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
25490 42 2c 20 49 6e 74 50 74 72 20 70 49 6e 42 2c 20  B, IntPtr pInB, 
254a0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
254b0 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
254c0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
254d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
254e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
254f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25500 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
25510 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25530 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
25540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25550 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
25560 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25570 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
25580 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25590 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72  3changeset_inver
255a0 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49  t_strm(xSessionI
255b0 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
255c0 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f  Ptr pIn, xSessio
255d0 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c  nOutput xOutput,
255e0 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
255f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25600 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25610 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25620 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25630 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25640 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25650 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25660 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25680 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25690 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
256a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
256b0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
256c0 73 65 74 5f 73 74 61 72 74 5f 73 74 72 6d 28 72  set_start_strm(r
256d0 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74  ef IntPtr iterat
256e0 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  or, xSessionInpu
256f0 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72  t xInput, IntPtr
25700 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50   pIn);....#if !P
25710 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25720 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25730 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25740 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25750 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25760 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25770 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25780 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25790 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
257a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
257b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
257c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
257d0 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65  e3session_change
257e0 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20  set_strm(IntPtr 
257f0 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f  session, xSessio
25800 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c  nOutput xOutput,
25810 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
25820 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25830 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25840 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25850 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25860 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25870 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25880 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25890 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
258a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
258b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
258c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
258d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
258e0 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
258f0 6e 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28  n_patchset_strm(
25900 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
25910 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
25920 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
25930 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
25940 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25950 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
25960 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25970 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
25980 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25990 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
259a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
259b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
259c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
259d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
259e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
259f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25a00 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64  3changegroup_add
25a10 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61  _strm(IntPtr cha
25a20 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69  ngeGroup, xSessi
25a30 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
25a40 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a  IntPtr pIn);....
25a50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25a60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25a70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25a80 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25a90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25aa0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25ab0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25ac0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25ad0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25ae0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25af0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25b00 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25b10 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
25b20 6f 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28  oup_output_strm(
25b30 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
25b40 75 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70  up, xSessionOutp
25b50 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50  ut xOutput, IntP
25b60 74 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69  tr pOut);..#endi
25b70 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
25b80 6e 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  n..    #endregio
25b90 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
25ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25be0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
25bf0 69 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72  ion sqlite inter
25c00 6f 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e  op api calls (.N
25c10 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
25c20 77 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20  work only)..#if 
25c30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25c40 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
25c50 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
25c60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25c70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
25c80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25c90 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
25ca0 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
25cb0 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e  rowid_interop(In
25cc0 74 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e  tPtr db, ref lon
25cd0 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20  g rowId);....   
25ce0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25cf0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
25d00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25d10 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
25d20 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e  3_memory_used_in
25d30 74 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62  terop(ref long b
25d40 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
25d50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25d60 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
25d70 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25d80 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d  n void sqlite3_m
25d90 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f  emory_highwater_
25da0 69 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65  interop(int rese
25db0 74 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20  tFlag, ref long 
25dc0 62 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b  bytes);....    [
25dd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25de0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
25df0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25e00 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25e10 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
25e20 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
25e30 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
25e40 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
25e50 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
25e60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25e70 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
25e80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25e90 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
25ea0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
25eb0 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  d_int64_interop(
25ec0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
25ed0 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
25ee0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
25ef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25f00 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
25f10 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
25f20 64 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22  d_int64_interop"
25f30 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
25f40 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25f50 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25f60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
25f70 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
25f80 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
25f90 78 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c  x, ref ulong val
25fa0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
25fb0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25fc0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
25fd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25fe0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c  void sqlite3_col
25ff0 75 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  umn_double_inter
26000 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
26010 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64  int index, ref d
26020 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
26030 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26040 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
26050 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26060 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
26070 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74  lite3_column_int
26080 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
26090 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
260a0 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75  x, ref long valu
260b0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
260c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
260d0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
260e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
260f0 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
26100 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70  e_double_interop
26110 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64  (IntPtr p, ref d
26120 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d  ouble value);...
26130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26140 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
26150 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26160 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
26170 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36  lite3_value_int6
26180 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
26190 20 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61   p, ref Int64 va
261a0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
261b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
261c0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
261d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
261e0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
261f0 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  sult_double_inte
26200 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
26210 78 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76  xt, ref double v
26220 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  alue);....    [D
26230 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26240 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
26250 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
26260 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
26270 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65  esult_int64_inte
26280 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
26290 78 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61  xt, ref Int64 va
262a0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
262b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
262c0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
262d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
262e0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
262f0 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
26300 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
26310 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26320 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
26330 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  e, IntPtr pModul
26340 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c  e, int iVersion,
26350 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
26360 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e  ,..        xConn
26370 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42  ect xConnect, xB
26380 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
26390 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74  dex, xDisconnect
263a0 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20   xDisconnect,.. 
263b0 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20         xDestroy 
263c0 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20  xDestroy, xOpen 
263d0 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43  xOpen, xClose xC
263e0 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46  lose, xFilter xF
263f0 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  ilter,..        
26400 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f  xNext xNext, xEo
26410 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20  f xEof, xColumn 
26420 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20  xColumn, xRowId 
26430 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20  xRowId, xUpdate 
26440 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20  xUpdate,..      
26450 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c    xBegin xBegin,
26460 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43   xSync xSync, xC
26470 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78  ommit xCommit, x
26480 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
26490 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69  ck,..        xFi
264a0 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64  ndFunction xFind
264b0 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d  Function, xRenam
264c0 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65  e xRename, xSave
264d0 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
264e0 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65  ,..        xRele
264f0 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52  ase xRelease, xR
26500 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
26510 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43  ackTo, IntPtr pC
26520 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20  lientData,..    
26530 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75      xDestroyModu
26540 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  le xDestroyModul
26550 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
26560 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   // PLATFORM_COM
26570 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26  PACTFRAMEWORK &&
26580 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
26590 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  D..    #endregio
265a0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
265b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
26600 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
26610 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ates..#if INTERO
26620 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
26630 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26640 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26650 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26660 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26670 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26680 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26690 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
266a0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
266b0 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
266c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
266d0 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
266e0 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
266f0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
26700 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
26710 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
26720 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26730 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
26740 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
26750 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
26760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267a0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
267b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
267c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
267d0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
267e0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
267f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26800 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
26810 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
26820 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e  teErrorCode xCon
26830 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
26840 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
26850 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
26860 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
26870 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
26880 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
26890 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
268a0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
268b0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
268c0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26900 2f 2f 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 0d 0a 0d 0a 23 69  //////////....#i
26920 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26930 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26940 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
26950 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
26960 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
26970 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
26980 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
26990 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
269a0 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
269b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
269c0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
269d0 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
269e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
269f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
26a40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26a50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26a60 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
26a70 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
26a80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26a90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26aa0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
26ab0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26ac0 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
26ad0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
26ae0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
26af0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26b40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26b50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26b60 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26b70 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26b80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26b90 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26ba0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
26bb0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
26bc0 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
26bd0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26be0 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
26bf0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
26c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26c50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26c60 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
26c70 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
26c80 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
26c90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
26ca0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
26cb0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
26cc0 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
26cd0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26ce0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
26cf0 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
26d00 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
26d10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
26d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26d60 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26d70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26d80 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
26d90 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
26da0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26db0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
26dc0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
26dd0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
26de0 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
26df0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
26e00 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
26e10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
26e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26e80 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
26e90 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
26ea0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
26eb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
26ec0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
26ed0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
26ee0 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72  rrorCode xFilter
26ef0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26f00 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
26f10 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d      int idxNum,.
26f20 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26f30 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
26f40 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
26f50 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
26f60 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
26f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
26fc0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26fd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26fe0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
26ff0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
27000 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
27010 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
27020 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
27030 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
27040 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
27050 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
27060 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
27070 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
270c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
270d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
270e0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
270f0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
27100 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27110 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
27120 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
27130 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a  gate int xEof(..
27140 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27150 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
27160 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271b0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
271c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
271d0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
271e0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
271f0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
27200 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27210 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
27220 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
27230 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
27240 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
27250 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
27260 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
27270 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69  text,..        i
27280 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b  nt index..    );
27290 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
272a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
272e0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
272f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27300 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
27310 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
27320 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
27330 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
27340 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
27350 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
27360 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
27370 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Id(..        Int
27380 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
27390 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
273a0 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
273b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
273c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27400 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27410 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27420 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27430 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27440 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27450 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27460 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27470 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27480 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
27490 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
274a0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
274b0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
274c0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
274d0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
274e0 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
274f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
27500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
27550 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27560 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
27570 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
27580 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
27590 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
275a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
275b0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
275c0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
275d0 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  in(..        Int
275e0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
275f0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
27600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27640 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
27650 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27660 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
27670 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
27680 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
27690 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
276a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
276b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
276c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79  iteErrorCode xSy
276d0 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nc(..        Int
276e0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
276f0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27740 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
27750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
27770 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
27780 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
27790 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
277a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
277b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
277c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
277d0 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49  mmit(..        I
277e0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
277f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
27800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27840 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
27850 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27860 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
27870 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
27880 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
27890 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
278a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
278b0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
278c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
278d0 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
278e0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
278f0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
27900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
27950 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27960 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27970 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
27980 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
27990 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
279a0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
279b0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
279c0 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  te int xFindFunc
279d0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  tion(..        I
279e0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
279f0 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
27a00 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
27a10 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
27a20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
27a30 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
27a40 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
27a50 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20   pUserData..    
27a60 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
27a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ab0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
27ac0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27ad0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
27ae0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
27af0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
27b00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27b10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
27b20 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
27b30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
27b40 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
27b50 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
27b60 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
27b70 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ew..    );....  
27b80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27bd0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27be0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27bf0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
27c00 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
27c10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27c20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
27c30 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
27c40 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
27c50 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
27c60 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
27c70 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
27c80 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
27c90 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
27ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
27cf0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27d00 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27d10 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27d20 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27d30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27d40 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27d50 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
27d60 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
27d70 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
27d80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27d90 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
27da0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
27db0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
27dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e00 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
27e10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27e20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27e30 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
27e40 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
27e50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27e60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
27e70 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
27e80 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27e90 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
27ea0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
27eb0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
27ec0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
27ed0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
27ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
27f30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27f40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
27f50 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
27f60 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
27f70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27f80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
27f90 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
27fa0 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
27fb0 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  le(IntPtr pClien
27fc0 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d  tData);..#endif.
27fd0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
27fe0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
28040 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75  n Native Structu
28050 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  res..#if INTEROP
28060 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
28070 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
28080 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
28090 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
280a0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
280b0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
280c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
280d0 20 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69     0 */ public i
280e0 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
280f0 20 20 20 20 20 20 2f 2a 20 20 20 38 20 2a 2f 20        /*   8 */ 
28100 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78  public xCreate x
28110 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Create;..       
28120 20 2f 2a 20 20 31 36 20 2a 2f 20 70 75 62 6c 69   /*  16 */ publi
28130 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e  c xConnect xConn
28140 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ect;..        /*
28150 20 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 78    24 */ public x
28160 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
28170 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndex;..        /
28180 2a 20 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20  *  32 */ public 
28190 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
281a0 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  connect;..      
281b0 20 20 2f 2a 20 20 34 30 20 2a 2f 20 70 75 62 6c    /*  40 */ publ
281c0 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
281d0 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f  troy;..        /
281e0 2a 20 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20  *  48 */ public 
281f0 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20  xOpen xOpen;..  
28200 20 20 20 20 20 20 2f 2a 20 20 35 36 20 2a 2f 20        /*  56 */ 
28210 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43  public xClose xC
28220 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lose;..        /
28230 2a 20 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20  *  64 */ public 
28240 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
28250 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 37 32  ..        /*  72
28260 20 2a 2f 20 70 75 62 6c 69 63 20 78 4e 65 78 74   */ public xNext
28270 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20   xNext;..       
28280 20 2f 2a 20 20 38 30 20 2a 2f 20 70 75 62 6c 69   /*  80 */ publi
28290 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20  c xEof xEof;..  
282a0 20 20 20 20 20 20 2f 2a 20 20 38 38 20 2a 2f 20        /*  88 */ 
282b0 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
282c0 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
282d0 20 2f 2a 20 20 39 36 20 2a 2f 20 70 75 62 6c 69   /*  96 */ publi
282e0 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b  c xRowId xRowId;
282f0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 30 34  ..        /* 104
28300 20 2a 2f 20 70 75 62 6c 69 63 20 78 55 70 64 61   */ public xUpda
28310 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
28320 20 20 20 20 20 2f 2a 20 31 31 32 20 2a 2f 20 70       /* 112 */ p
28330 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65  ublic xBegin xBe
28340 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  gin;..        /*
28350 20 31 32 30 20 2a 2f 20 70 75 62 6c 69 63 20 78   120 */ public x
28360 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20  Sync xSync;..   
28370 20 20 20 20 20 2f 2a 20 31 32 38 20 2a 2f 20 70       /* 128 */ p
28380 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
28390 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
283a0 2f 2a 20 31 33 36 20 2a 2f 20 70 75 62 6c 69 63  /* 136 */ public
283b0 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
283c0 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 2f  back;..        /
283d0 2a 20 31 34 34 20 2a 2f 20 70 75 62 6c 69 63 20  * 144 */ public 
283e0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46  xFindFunction xF
283f0 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20  indFunction;..  
28400 20 20 20 20 20 20 2f 2a 20 31 35 32 20 2a 2f 20        /* 152 */ 
28410 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
28420 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
28430 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
28440 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
28450 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
28460 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
28470 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
28480 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
28490 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
284a0 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
284b0 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 30 20  .        /* 160 
284c0 2a 2f 20 70 75 62 6c 69 63 20 78 53 61 76 65 70  */ public xSavep
284d0 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b  oint xSavepoint;
284e0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 38  ..        /* 168
284f0 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 65 6c 65   */ public xRele
28500 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
28510 20 20 20 20 20 20 20 2f 2a 20 31 37 36 20 2a 2f         /* 176 */
28520 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
28530 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b  kTo xRollbackTo;
28540 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
28550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
285a0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
285b0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
285c0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
285d0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
285e0 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b  ite3_vtab..    {
285f0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20  ..        /*  0 
28600 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
28610 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
28620 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c     /*  8 */ publ
28630 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
28640 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
28650 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  /..        /* 16
28660 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74   */ public IntPt
28670 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
28680 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
28690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
286e0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
286f0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
28700 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
28710 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
28720 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
28730 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20  {..        /* 0 
28740 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
28750 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a   pVTab;..    }..
28760 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
28770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287b0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
287c0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
287d0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
287e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
287f0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
28800 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  x_constraint..  
28810 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
28820 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
28830 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  x_constraint(.. 
28840 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
28850 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
28860 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20   constraint..   
28870 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
28880 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
28890 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
288a0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
288b0 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29  straint != null)
288c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
288d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
288e0 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74   iColumn = const
288f0 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  raint.iColumn;..
28900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28910 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  op = constraint.
28920 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
28930 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f       usable = co
28940 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b  nstraint.usable;
28950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28960 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20    iTermOffset = 
28970 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d  constraint.iTerm
28980 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
28990 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
289a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
289b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28a00 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  /* 0 */ public i
28a10 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
28a20 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62       /* 4 */ pub
28a30 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43  lic SQLiteIndexC
28a40 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d  onstraintOp op;.
28a50 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 20 2a 2f  .        /* 5 */
28a60 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
28a70 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ble;..        /*
28a80 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   8 */ public int
28a90 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
28aa0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
28ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28af0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
28b00 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
28b10 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
28b20 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
28b30 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
28b40 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d  3_index_orderby.
28b50 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
28b60 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
28b70 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20  ndex_orderby(.. 
28b80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
28b90 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72  eIndexOrderBy or
28ba0 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
28bb0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
28bc0 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
28bd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28be0 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21     if (orderBy !
28bf0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
28c00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28c10 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
28c20 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d  = orderBy.iColum
28c30 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
28c40 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72      desc = order
28c50 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  By.desc;..      
28c60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
28c70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
28c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28cd0 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20   /* 0 */ public 
28ce0 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
28cf0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
28d00 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a  ..        /* 4 *
28d10 2f 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65  / public byte de
28d20 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f  sc;   /* True fo
28d30 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66  r DESC.  False f
28d40 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20  or ASC. */..    
28d50 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
28d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28da0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
28db0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
28dc0 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
28dd0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
28de0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
28df0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
28e00 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  usage..    {..  
28e10 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
28e20 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
28e30 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20  raint_usage(..  
28e40 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
28e50 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
28e60 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
28e70 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
28e80 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
28e90 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
28ea0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28eb0 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
28ec0 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Usage != null)..
28ed0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
28ef0 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74  rgvIndex = const
28f00 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49  raintUsage.argvI
28f10 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
28f20 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f         omit = co
28f30 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
28f40 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it;..           
28f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
28f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
28f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
28fc0 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
28fd0 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73  ; /* if >0, cons
28fe0 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f  traint is part o
28ff0 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
29000 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
29010 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20  blic byte omit; 
29020 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f      /* Do not co
29030 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
29040 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  is constraint */
29050 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
29060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
290b0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
290c0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
290d0 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
290e0 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
290f0 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d  ite3_index_info.
29100 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
29110 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20  /* Inputs */..  
29120 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70        /*  0 */ p
29130 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74  ublic int nConst
29140 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72  raint; /* Number
29150 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
29160 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
29170 20 20 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20         /*  8 */ 
29180 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
29190 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20  onstraint;..    
291a0 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62      /* 16 */ pub
291b0 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79  lic int nOrderBy
291c0 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  ;    /* Number o
291d0 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72  f entries in aOr
291e0 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20  derBy */..      
291f0 20 20 2f 2a 20 32 34 20 2a 2f 20 70 75 62 6c 69    /* 24 */ publi
29200 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
29210 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
29220 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
29230 20 20 20 2f 2a 20 33 32 20 2a 2f 20 70 75 62 6c     /* 32 */ publ
29240 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
29250 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
29260 20 20 20 20 20 2f 2a 20 34 30 20 2a 2f 20 70 75       /* 40 */ pu
29270 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b  blic int idxNum;
29280 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
29290 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
292a0 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
292b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  */..        /* 4
292c0 38 20 2a 2f 20 70 75 62 6c 69 63 20 73 74 72 69  8 */ public stri
292d0 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
292e0 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
292f0 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
29300 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
29310 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  oc */..        /
29320 2a 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 56 */ public i
29330 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
29340 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
29350 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
29360 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
29370 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
29380 36 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74  60 */ public int
29390 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
293a0 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
293b0 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
293c0 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
293d0 20 20 20 20 2f 2a 20 36 34 20 2a 2f 20 70 75 62      /* 64 */ pub
293e0 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d  lic double estim
293f0 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74  atedCost; /* Est
29400 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
29410 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20  sing this index 
29420 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 37  */..        /* 7
29430 32 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67  2 */ public long
29440 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20   estimatedRows; 
29450 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e    /* Estimated n
29460 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65  umber of rows re
29470 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20  turned */..     
29480 20 20 20 2f 2a 20 38 30 20 2a 2f 20 70 75 62 6c     /* 80 */ publ
29490 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  ic SQLiteIndexFl
294a0 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a  ags idxFlags; /*
294b0 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f   Mask of SQLITE_
294c0 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61  INDEX_SCAN_* fla
294d0 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  gs */..        /
294e0 2a 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 6c  * 88 */ public l
294f0 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20  ong colUsed;    
29500 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d       /* Input: M
29510 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75  ask of columns u
29520 73 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74  sed by statement
29530 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64   */..    }..#end
29540 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
29550 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
29560 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
29570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
295a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
295b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
295c0 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61  egion .NET Compa
295d0 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e  ct Framework (on
295e0 6c 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ly) CriticalHand
295f0 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c  le Class..#if PL
29600 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
29610 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72  AMEWORK..  inter
29620 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61  nal abstract cla
29630 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ss CriticalHandl
29640 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  e : IDisposable.
29650 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74  .  {..    privat
29660 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64  e bool _isClosed
29670 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ;..    protected
29680 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d   IntPtr handle;.
29690 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
296a0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28   CriticalHandle(
296b0 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61  IntPtr invalidHa
296c0 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  ndleValue)..    
296d0 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
296e0 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
296f0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73  alue;..      _is
29700 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d  Closed = false;.
29710 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43  .    }....    ~C
29720 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d  riticalHandle().
29730 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
29740 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
29750 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
29760 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
29770 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
29780 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d   if (!IsClosed).
29790 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
297a0 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64    this._isClosed
297b0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
297c0 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64    if (!IsInvalid
297d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
297e0 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
297f0 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  andle();..      
29800 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
29810 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
29820 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29830 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
29840 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
29850 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
29860 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
29870 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
29880 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
29890 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
298a0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
298b0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
298c0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
298d0 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
298e0 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
298f0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c  .    {..      Cl
29900 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d  eanup();..    }.
29910 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
29920 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52   abstract bool R
29930 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
29940 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
29950 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28   void SetHandle(
29960 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20  IntPtr value).. 
29970 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
29980 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  le = value;..   
29990 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
299a0 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41   void SetHandleA
299b0 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20  sInvalid()..    
299c0 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  {..      _isClos
299d0 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
299e0 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
299f0 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
29a00 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
29a10 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d  c bool IsClosed.
29a20 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
29a30 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c  t { return _isCl
29a40 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  osed; }..    }..
29a50 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73  ..    public abs
29a60 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76  tract bool IsInv
29a70 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
29a80 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a     get;..    }..
29a90 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ..  }..#endif.. 
29aa0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
29ab0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29b00 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
29b10 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
29b20 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
29b30 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75  // Handles the u
29b40 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73  nmanaged databas
29b50 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70  e pointer, and p
29b60 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
29b70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70  tion..    // sup
29b80 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20  port for it...  
29b90 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
29ba0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f  d class SQLiteCo
29bb0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a  nnectionHandle :
29bc0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
29bd0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49  .    {..#if SQLI
29be0 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21  TE_STANDARD && !
29bf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29c00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
29c10 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
29c20 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43  gate void CloseC
29c30 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
29c40 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
29c50 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
29c60 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
29c70 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  tr db);....     
29c80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
29c90 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  ic CloseConnecti
29ca0 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65  onCallback close
29cb0 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20  Connection =..  
29cc0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
29cd0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
29ce0 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
29cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
29d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d40 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
29d50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
29d60 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
29d70 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
29d80 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
29d90 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
29da0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
29db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29df0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
29e00 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
29e10 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  ownHandle;....  
29e20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
29e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29e70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
29e80 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
29e90 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
29ea0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
29eb0 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20  Handle db)..    
29ec0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29ed0 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c     if (db != nul
29ee0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
29ef0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
29f00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29f20 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52    lock (db.syncR
29f30 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
29f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29f60 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68       return db.h
29f70 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
29f80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29f90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29fa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
29fb0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
29fc0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2a020 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2a030 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2a040 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f  le(IntPtr db, bo
2a050 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
2a060 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2a070 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  s(ownHandle)..  
2a080 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2a090 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a0a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2a0b0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2a0c0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2a0d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a0e0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
2a0f0 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e  .ownHandle = own
2a100 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
2a110 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2a120 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20  le(db);..       
2a130 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a140 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2a1a0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2a1b0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62  nnectionHandle(b
2a1c0 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
2a1d0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
2a1e0 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
2a1f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2a200 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2a210 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77            if (ow
2a220 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2a230 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2a240 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
2a250 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2a260 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2a270 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2a280 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a2e0 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2a2f0 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2a300 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2a310 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2a320 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a330 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a340 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2a350 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2a360 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a370 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e          if (!own
2a380 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74  Handle) return t
2a390 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2a3a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2a3b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2a3c0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
2a3d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a3e0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2a3f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
2a400 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
2a410 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
2a420 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a430 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
2a440 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
2a450 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
2a460 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
2a470 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2a480 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2a490 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c                cl
2a4b0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
2a4c0 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  is, localHandle)
2a4d0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2a4e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
2a4f0 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
2a500 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2a510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2a520 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
2a530 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2a540 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
2a550 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45  endif....#if !NE
2a560 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2a570 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2a590 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2a5a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a5b0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2a5c0 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2a5d0 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2a5e0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2a600 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2a610 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a630 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63      "CloseConnec
2a640 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  tion: {0}", loca
2a650 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
2a660 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2a670 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2a680 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2a690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a6a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a6b0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2a6c0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2a6d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2a6e0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
2a6f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2a710 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
2a720 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2a730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2a740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a750 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2a760 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2a770 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c  tion(this, handl
2a780 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2a790 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2a7a0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
2a7b0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2a7c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a7e0 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
2a7f0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2a800 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2a810 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2a820 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2a830 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2a840 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
2a850 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2a860 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2a870 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2a880 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
2a890 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2a8a0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2a8b0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2a8c0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2a8d0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
2a8e0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2a8f0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
2a900 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2a910 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
2a920 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2a930 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2a940 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2a950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a960 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a970 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2a980 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2a990 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2a9a0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2a9c0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2a9d0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9f0 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
2aa00 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  ion: {0}, except
2aa10 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
2aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa30 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
2aa40 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2aa60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aa70 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2aa80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2aa90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2aaa0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2aab0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2aac0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2aad0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2aae0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2aaf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2ab00 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2ab10 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2ab20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ab40 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2ab50 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
2ab60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ab70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ab80 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2ab90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
2aba0 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
2abb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2abc0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
2abd0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2abe0 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ac30 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2ac40 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2ac50 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
2ac60 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
2ac70 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2ac80 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
2ac90 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
2aca0 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
2acb0 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  onCount);..     
2acc0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2acd0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 0d  ///////////////.
2ad20 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2ad30 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  c bool OwnHandle
2ad40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2ad50 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2ad60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2ad70 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2ad80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2ad90 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2ada0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2adb0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2adc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2add0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ade0 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20  rn ownHandle;.. 
2adf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ae00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ae10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ae20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ae70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2ae80 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
2ae90 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
2aea0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2aeb0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2aec0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2aed0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2aee0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2aef0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2af00 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2af10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af30 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
2af40 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2af50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2af60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2af70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2af80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
2afe0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2aff0 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
2b000 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
2b010 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2b020 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b030 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2b040 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2b050 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2b060 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b070 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b080 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
2b090 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2b0a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
2b0b0 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
2b0c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2b0d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b120 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
2b130 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2b140 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2b150 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
2b160 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
2b170 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
2b180 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73  QLite statements
2b190 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
2b1a0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
2b1b0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
2b1c0 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
2b1d0 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
2b1e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b1f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2b200 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
2b210 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
2b220 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2b230 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
2b240 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b270 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
2b290 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2b2a0 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
2b2b0 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
2b2c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2b320 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
2b330 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
2b340 50 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d  Ptr(SQLiteStatem
2b350 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d  entHandle stmt).
2b360 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2b370 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
2b380 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2b390 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2b3a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2b3b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2b3c0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2b3d0 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  tmt.syncRoot)..#
2b3e0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2b3f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b410 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65  turn stmt.handle
2b420 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b430 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2b440 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2b450 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2b460 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2b470 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2b4d0 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61  ternal SQLiteSta
2b4e0 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c  tementHandle(SQL
2b4f0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2b500 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
2b510 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20  stmt)..         
2b520 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2b530 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2b540 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b550 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2b560 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2b570 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2b580 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b590 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2b5a0 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
2b5b0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2b5c0 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20  andle(stmt);..  
2b5d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b5e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2b5f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b640 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
2b650 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
2b660 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
2b670 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
2b680 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
2b690 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
2b6a0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2b6b0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
2b6c0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2b6d0 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
2b6e0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
2b6f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b700 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b750 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
2b760 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
2b770 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
2b780 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b790 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2b7a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
2b7b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2b7c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2b7d0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2b7e0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
2b7f0 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
2b800 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
2b810 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
2b820 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
2b830 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
2b840 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
2b850 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
2b860 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2b870 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2b880 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
2b890 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
2b8a0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
2b8b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2b8c0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2b8d0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2b8e0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2b8f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2b900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b910 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2b920 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2b930 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b950 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2b960 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2b970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b980 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
2b990 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
2b9a0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
2b9b0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2b9e0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2b9f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2ba10 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
2ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2ba30 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ba60 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
2ba70 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2ba80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2ba90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bab0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
2bac0 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
2bad0 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2baf0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
2bb00 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
2bb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2bb30 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2bb40 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2bb50 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2bb60 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
2bb70 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2bb80 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
2bb90 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
2bba0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2bbc0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
2bbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2bbe0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2bbf0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2bc00 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2bc10 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
2bc20 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
2bc30 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2bc40 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
2bc50 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
2bc60 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2bc70 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2bc80 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2bc90 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2bca0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2bcb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcd0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
2bce0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
2bcf0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
2bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd10 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
2bd20 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
2bd30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2bd40 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61             "Fina
2bd50 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b  lizeStatement: {
2bd60 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
2bd70 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
2bd90 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
2bda0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2bdb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2bdc0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2bdd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bde0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bdf0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2be00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2be10 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
2be20 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
2be30 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2be40 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2be50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2be60 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2be70 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2be80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bea0 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
2beb0 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
2bec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2bed0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
2bee0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
2bef0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2bf00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2bf10 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2bf20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2bf30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
2bf90 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2bfa0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
2bfb0 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
2bfc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bfd0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
2bfe0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
2bff0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2c000 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
2c010 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
2c020 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2c030 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c080 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2c090 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
2c0a0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
2c0b0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
2c0c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2c0d0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2c0e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2c100 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2c110 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2c120 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c140 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
2c150 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
2c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2c170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2c180 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2c190 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c1e0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2c1f0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2c200 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
2c210 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
2c220 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2c230 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2c240 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2c250 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2c260 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c270 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c280 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
2c290 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c2b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2c2c0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
2c2d0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
2c2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c330 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2c340 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61  BackupHandle Cla
2c350 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
2c360 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
2c370 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
2c380 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61  anaged SQLite ba
2c390 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  ckup objects... 
2c3a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
2c3b0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42  ed class SQLiteB
2c3c0 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72  ackupHandle : Cr
2c3d0 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
2c3e0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2c3f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2c400 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
2c410 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
2c420 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
2c430 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
2c440 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2c450 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c490 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c4a0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
2c4b0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2c4c0 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
2c4d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c520 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
2c530 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
2c540 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
2c550 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
2c560 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
2c570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c580 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75  if (backup != nu
2c590 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2c5a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2c5b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2c5c0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2c5d0 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e     lock (backup.
2c5e0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2c5f0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2c600 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c610 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c620 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d   backup.handle;.
2c630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c640 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c650 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
2c660 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
2c670 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
2c680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
2c6e0 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75  rnal SQLiteBacku
2c6f0 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  pHandle(SQLiteCo
2c700 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2c710 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75  nn, IntPtr backu
2c720 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p)..            
2c730 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
2c740 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2c750 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2c760 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2c770 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2c780 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2c790 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c7a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
2c7b0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
2c7c0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2c7d0 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20  le(backup);..   
2c7e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c7f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c800 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c840 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c850 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
2c860 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29  teBackupHandle()
2c870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2c880 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
2c890 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2c8a0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2c8b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
2c8c0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
2c8d0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2c8e0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
2c8f0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
2c900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c950 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2c960 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
2c970 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
2c980 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
2c990 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
2c9a0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2c9b0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
2c9c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2c9d0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2c9e0 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
2c9f0 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
2ca00 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
2ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
2ca30 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
2ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca50 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
2ca60 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2ca70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ca80 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
2ca90 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
2caa0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
2cab0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
2cac0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2cad0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2cae0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2caf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb10 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
2cb20 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
2cb30 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
2cb40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb50 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
2cb60 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2cb70 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
2cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
2cb90 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
2cba0 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
2cbb0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2cbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cbe0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2cbf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2cc00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2cc10 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
2cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2cc30 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
2cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cc50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc60 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
2cc70 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2cc80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ccb0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
2ccc0 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61  shBackup(cnn, ha
2ccd0 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
2cce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ccf0 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
2cd00 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
2cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd30 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
2cd40 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2cd60 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
2cd70 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
2cd80 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
2cd90 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
2cda0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
2cdb0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2cdc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2cdd0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
2cde0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2cdf0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2ce00 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2ce10 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
2ce20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
2ce30 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
2ce40 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
2ce50 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2ce60 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
2ce70 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2ce80 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2ce90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2cea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ceb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2cec0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2ced0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2cee0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2cef0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2cf10 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2cf20 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2cf30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf40 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
2cf50 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2cf60 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf80 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2cf90 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2cfa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2cfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2cfc0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2cfd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cfe0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2cff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d000 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2d010 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2d020 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2d030 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2d040 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2d050 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2d060 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2d070 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d090 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2d0a0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2d0b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2d0c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2d0d0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2d0e0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2d0f0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2d100 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2d110 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2d120 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d130 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2d180 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2d190 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2d1a0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2d1b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d1c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d1d0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2d1e0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2d1f0 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
2d200 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
2d210 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2d270 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
2d280 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
2d290 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
2d2a0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
2d2b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2d2c0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2d2d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2d2f0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2d300 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2d310 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d330 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
2d340 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2d360 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d370 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d380 20 20 20 20 20 2f 2f 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 0d 0a 0d 0a  ////////////....
2d3d0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2d3e0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
2d3f0 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
2d400 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
2d410 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2d420 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d430 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2d440 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2d450 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d470 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
2d480 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
2d490 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2d4a0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2d4b0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
2d4c0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
2d4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d520 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
2d530 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  lobHandle Class.
2d540 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
2d550 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
2d560 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
2d570 67 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20  ged SQLite blob 
2d580 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e  objects...    in
2d590 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2d5a0 61 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ass SQLiteBlobHa
2d5b0 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
2d5c0 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
2d5d0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2d5e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2d5f0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
2d600 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
2d610 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
2d620 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
2d630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d680 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
2d690 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
2d6a0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
2d6b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d700 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2d710 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
2d720 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
2d730 6e 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62  ntPtr(SQLiteBlob
2d740 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20  Handle blob)..  
2d750 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d760 20 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d       if (blob !=
2d770 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2d780 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2d790 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2d7a0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2d7b0 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62        lock (blob
2d7c0 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
2d7d0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d7e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d7f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d800 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a  n blob.handle;..
2d810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d820 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2d830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2d840 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
2d850 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2d860 20 20 20 20 20 20 20 20 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 2f 2f 2f 0d  ///////////////.
2d8b0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
2d8c0 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  nal SQLiteBlobHa
2d8d0 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
2d8e0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
2d8f0 20 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20   IntPtr blob).. 
2d900 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2d910 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2d920 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2d930 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2d940 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2d950 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2d960 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d970 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d980 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
2d990 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
2d9a0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c      SetHandle(bl
2d9b0 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ob);..          
2d9c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d9d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
2da30 76 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48  vate SQLiteBlobH
2da40 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
2da50 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
2da60 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2da70 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
2da80 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2da90 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
2daa0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
2dab0 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
2dac0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
2dad0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2dae0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2db30 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
2db40 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
2db50 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
2db60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2db70 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2db80 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
2db90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2dba0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2dbb0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
2dbc0 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
2dbd0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
2dbe0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2dbf0 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
2dc00 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
2dc10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2dc20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2dc30 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2dc40 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2dc50 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2dc60 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
2dc70 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
2dc80 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
2dc90 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2dca0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2dcb0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
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 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2dcf0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2dd00 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2dd10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dd20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2dd30 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2dd40 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2dd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd60 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22  "CloseBlob: {0}"
2dd70 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
2dd80 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2dda0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ddb0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2ddc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ddd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2dde0 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
2ddf0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2de00 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
2de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2de20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de30 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
2de40 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2de50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de80 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
2de90 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  Blob(cnn, handle
2dea0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2deb0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2dec0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
2ded0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2dee0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2def0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2df00 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
2df10 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2df20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
2df30 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2df40 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f  ef DebugData.blo
2df50 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  bCount);..#endif
2df60 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2df80 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
2df90 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
2dfa0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2dfb0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
2dfc0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2dfd0 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2dfe0 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
2dff0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2e000 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2e010 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
2e020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e030 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2e040 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2e050 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2e060 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2e070 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e090 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2e0a0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2e0b0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0d0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2e0e0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2e0f0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2e100 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
2e110 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63  seBlob: {0}, exc
2e120 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
2e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e140 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
2e150 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
2e160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e170 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2e180 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
2e190 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2e1b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2e1c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e1d0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
2e1e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2e1f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2e200 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2e210 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2e220 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2e230 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2e240 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e250 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2e260 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
2e270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e280 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2e290 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
2e2a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e2b0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
2e2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2e2d0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
2e2e0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
2e2f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e340 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
2e350 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
2e360 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
2e370 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
2e380 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e390 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
2e3a0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
2e3b0 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43   DebugData.blobC
2e3c0 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
2e3d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
2e3e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
2e430 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2e440 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
2e450 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
2e460 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
2e470 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
2e480 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2e490 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2e4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e4b0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2e4c0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2e4d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4f0 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
2e500 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2e510 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2e520 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2e530 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2e540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e560 2f 2f 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 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
2e5a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2e5b0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
2e5c0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
2e5d0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2e5e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2e5f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2e600 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2e610 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2e620 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e630 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e640 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
2e650 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2e660 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
2e670 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
2e680 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..