System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact aafcbd77312d912d104a977b8801dbfa6f08d848:


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 38 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  108.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 63 68 61 72 70 74 72 28 49 6e 74  nfig_charptr(Int
21390 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f  Ptr db, SQLiteCo
213a0 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70  nfigDbOpsEnum op
213b0 2c 20 49 6e 74 50 74 72 20 63 68 61 72 50 74 72  , IntPtr charPtr
213c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
213d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
213e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
213f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21400 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
21410 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
21420 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
21430 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21440 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21450 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21470 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
21480 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
21490 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
214a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
214b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
214c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
214d0 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74  e3_db_config_int
214e0 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64  _refint(IntPtr d
214f0 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44  b, SQLiteConfigD
21500 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  bOpsEnum op, int
21510 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20   value, ref int 
21520 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20  result);....#if 
21530 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21540 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21550 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21560 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
21570 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
21580 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
21590 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
215a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
215b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
215c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
215d0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
215e0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
215f0 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  db_config")]..#e
21600 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21610 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21620 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21630 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66   sqlite3_db_conf
21640 69 67 5f 69 6e 74 70 74 72 5f 74 77 6f 5f 69 6e  ig_intptr_two_in
21650 74 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ts(IntPtr db, SQ
21660 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
21670 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 70  num op, IntPtr p
21680 74 72 2c 20 69 6e 74 20 69 6e 74 30 2c 20 69 6e  tr, int int0, in
21690 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23 69 66 20  t int1);....#if 
216a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
216b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
216c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
216d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
216e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
216f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21700 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21710 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21720 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21730 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21740 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
21750 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
21760 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
21770 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
21780 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
21790 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
217a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
217b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
217c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
217d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
217e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
217f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21800 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21810 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21820 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21830 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21840 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21850 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
21860 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
21870 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
21880 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21890 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
218a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
218b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
218c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
218d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
218e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
218f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21900 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21910 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21920 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21930 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21940 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
21950 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
21960 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
21970 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21980 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21990 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
219a0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
219b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
219c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
219d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
219e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
219f0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21a00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21a10 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
21a20 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
21a30 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
21a40 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
21a50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21a60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21a70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21a80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21a90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21aa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21ab0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21ac0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21ad0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21ae0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21af0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21b00 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
21b10 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  _db_readonly(Int
21b20 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
21b30 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
21b40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21b50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21b60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21b70 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
21b80 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
21b90 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
21ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21bb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21bc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21bd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21be0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21bf0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
21c00 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
21c10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21c20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21c30 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
21c40 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
21c50 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
21c60 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
21c70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21c80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21c90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21ca0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21cb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21cc0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21cd0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21ce0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21cf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21d00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21d10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21d20 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
21d30 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
21d40 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
21d50 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
21d60 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21d70 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21d80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21d90 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21da0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21db0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21dc0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21dd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21de0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21df0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21e00 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21e10 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21e20 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
21e30 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
21e40 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
21e50 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
21e60 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
21e70 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
21e80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21e90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21ea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21eb0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21ec0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21ed0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21ee0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21ef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21f00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21f10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21f20 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
21f30 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
21f40 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
21f50 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
21f60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21f70 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21f80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21f90 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21fa0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21fb0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21fc0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21fd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21fe0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21ff0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22000 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
22010 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
22020 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
22030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
220a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
220b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
220c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
220d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
220e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
220f0 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
22100 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
22110 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
22120 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
22130 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22140 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22160 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22170 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22180 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22190 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
221a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
221b0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
221c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
221d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
221e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
221f0 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
22200 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
22210 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22220 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22230 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22240 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22250 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22260 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22270 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22280 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22290 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
222a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
222b0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
222c0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
222d0 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
222e0 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
222f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22300 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22310 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22320 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22330 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22340 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22350 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22360 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22370 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22380 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22390 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
223a0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
223b0 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
223c0 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
223d0 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
223e0 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
223f0 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
22400 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
22410 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
22420 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
22430 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
22440 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
22450 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
22460 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
22470 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
22480 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
22490 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
224a0 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
224b0 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
224c0 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
224d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
224e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
224f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22500 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22510 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22520 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22530 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22540 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22550 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22560 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22570 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
22580 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
22590 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
225a0 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
225b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
225c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
225d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
225e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
225f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22600 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22610 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22620 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22630 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22640 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22650 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22660 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22670 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
22680 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
22690 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
226a0 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
226b0 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
226c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
226d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
226e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
226f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22700 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22710 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22720 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22730 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22740 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22750 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22760 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22770 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
22780 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
22790 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
227a0 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
227b0 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
227c0 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
227d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
227e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
227f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22800 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22820 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22830 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22840 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22850 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22860 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22870 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22880 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22890 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
228a0 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
228b0 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
228c0 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
228d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
228e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
228f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22900 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22910 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22920 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22930 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22940 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22950 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22960 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22970 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
22980 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
22990 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
229a0 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
229b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
229c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
229d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
229e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
229f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22a00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22a10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22a20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22a30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22a40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22a50 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
22a60 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
22a70 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
22a80 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
22a90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22aa0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22ab0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22ac0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22ad0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22ae0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22af0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22b00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22b10 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22b20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22b30 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
22b40 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
22b50 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e  e3_blob_close(In
22b60 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
22b70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22b80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22b90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22ba0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22bb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22bc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22bd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22be0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22bf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22c00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22c10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22c20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  int sqlite3_blob
22c30 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c  _bytes(IntPtr bl
22c40 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
22c50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22c60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22c70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22c80 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22c90 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22ca0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22cb0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22cc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22cd0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22ce0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22cf0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
22d00 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
22d10 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74  _blob_open(IntPt
22d20 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
22d30 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
22d40 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
22d50 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c  ame, long rowId,
22d60 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20   int flags, ref 
22d70 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b  IntPtr ptrBlob);
22d80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22d90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22da0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22db0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22dc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22dd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22de0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22df0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22e00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22e10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22e20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22e30 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
22e40 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
22e50 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c  b_read(IntPtr bl
22e60 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
22e70 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
22e80 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
22e90 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
22ea0 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
22eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22f10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22f30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22f40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22f50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22f60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
22f70 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
22f80 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f  eopen(IntPtr blo
22f90 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  b, long rowId);.
22fa0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22fb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22fc0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22fd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22fe0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22ff0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23000 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23010 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23020 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23030 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23040 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23050 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23060 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
23070 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c  _write(IntPtr bl
23080 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
23090 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
230a0 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
230b0 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
230c0 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
230d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
230e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
230f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23100 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23110 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23120 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23130 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23150 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23160 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23170 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23180 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
23190 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
231a0 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
231b0 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
231c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
231d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
231e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
231f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23200 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23210 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23220 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23230 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23250 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23260 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23270 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
23280 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
23290 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
232a0 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
232b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
232c0 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 73  SQLite API calls
232d0 20 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64   that are provid
232e0 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77  ed by "well-know
232f0 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73 20 74 68  n" extensions th
23300 61 74 20 6d 61 79 20 62 65 20 73 74 61 74 69 63  at may be static
23310 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e  ally..    // lin
23320 6b 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c  ked with the SQL
23330 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20  ite core native 
23340 6c 69 62 72 61 72 79 20 63 75 72 72 65 6e 74 6c  library currentl
23350 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23  y in use...    #
23360 72 65 67 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e  region extension
23370 20 73 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c   sqlite api call
23380 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 76  s..    #region v
23390 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 23 69  irtual table..#i
233a0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
233b0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
233c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
233d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
233e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
233f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23400 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23410 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23420 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23430 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23440 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23450 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23460 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
23470 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
23480 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c  disposable_modul
23490 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
234a0 50 74 72 20 6e 61 6d 65 2c 20 72 65 66 20 73 71  Ptr name, ref sq
234b0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
234c0 75 6c 65 2c 20 49 6e 74 50 74 72 20 70 43 6c 69  ule, IntPtr pCli
234d0 65 6e 74 44 61 74 61 2c 20 78 44 65 73 74 72 6f  entData, xDestro
234e0 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
234f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23500 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23510 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23520 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23530 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23540 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23550 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23560 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23570 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23580 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23590 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
235a0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
235b0 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75  te3_dispose_modu
235c0 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  le(IntPtr pModul
235d0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
235e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
235f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23640 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73 65  ..    #region se
23650 73 73 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 0d  ssion extension.
23660 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 53 45 53  .#if INTEROP_SES
23670 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e 0d 0a  SION_EXTENSION..
23680 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23690 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
236a0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
236b0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
236c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
236d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
236e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65  .    internal de
236f0 6c 65 67 61 74 65 20 69 6e 74 20 78 53 65 73 73  legate int xSess
23700 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74 50 74 72  ionFilter(IntPtr
23710 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72   context, IntPtr
23720 20 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23   pTblName);....#
23730 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23740 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23750 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
23760 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
23770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23780 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23790 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
237a0 65 67 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e  egate SQLiteChan
237b0 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 52 65 73  geSetConflictRes
237c0 75 6c 74 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66  ult xSessionConf
237d0 6c 69 63 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  lict(IntPtr cont
237e0 65 78 74 2c 20 53 51 4c 69 74 65 43 68 61 6e 67  ext, SQLiteChang
237f0 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70 65  eSetConflictType
23800 20 74 79 70 65 2c 20 49 6e 74 50 74 72 20 69 74   type, IntPtr it
23810 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  erator);....#if 
23820 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23830 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23840 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
23850 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
23860 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23870 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
23880 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
23890 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
238a0 64 65 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  de xSessionInput
238b0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
238c0 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20 72   IntPtr pData, r
238d0 65 66 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a  ef int nData);..
238e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
238f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23900 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
23910 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
23920 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23930 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
23940 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
23950 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
23960 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f  rrorCode xSessio
23970 6e 4f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63  nOutput(IntPtr c
23980 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70  ontext, IntPtr p
23990 44 61 74 61 2c 20 69 6e 74 20 6e 44 61 74 61 29  Data, int nData)
239a0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
239b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239f0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
23a00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23a10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23a20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23a30 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23a40 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23a50 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23a60 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23a70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23a80 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23a90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23aa0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23ab0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
23ac0 73 65 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 49  session_create(I
23ad0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
23ae0 20 64 62 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74   dbName, ref Int
23af0 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d  Ptr session);...
23b00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23b10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23b20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23b30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23b40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23b50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23b60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23b70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23b80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23b90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23ba0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23bb0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65  n void sqlite3se
23bc0 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74  ssion_delete(Int
23bd0 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d  Ptr session);...
23be0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
23bf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
23c00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23c10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
23c20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
23c30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23c40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
23c50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23c60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
23c70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23c80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23c90 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73  n int sqlite3ses
23ca0 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50  sion_enable(IntP
23cb0 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20  tr session, int 
23cc0 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  enable);....#if 
23cd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23ce0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23cf0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23d00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23d10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23d20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23d30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23d40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23d50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23d60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23d70 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
23d80 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
23d90 69 6e 64 69 72 65 63 74 28 49 6e 74 50 74 72 20  indirect(IntPtr 
23da0 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64  session, int ind
23db0 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  irect);....#if !
23dc0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23dd0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23de0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23df0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23e00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23e10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23e20 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23e30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23e40 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23e50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23e60 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23e70 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23e80 74 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63  te3session_attac
23e90 68 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  h(IntPtr session
23ea0 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
23eb0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23ec0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23ed0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23ee0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23ef0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23f00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23f10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23f20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23f30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23f40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23f50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23f60 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
23f70 74 65 33 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65  te3session_table
23f80 5f 66 69 6c 74 65 72 28 49 6e 74 50 74 72 20 73  _filter(IntPtr s
23f90 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
23fa0 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20  Filter xFilter, 
23fb0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
23fc0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23fd0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23fe0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23ff0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24000 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24010 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24020 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24030 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24040 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24050 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24060 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24070 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
24080 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73  Code sqlite3sess
24090 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28 49 6e  ion_changeset(In
240a0 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65  tPtr session, re
240b0 66 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74  f int nChangeSet
240c0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 68  , ref IntPtr pCh
240d0 61 6e 67 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20  angeSet);...#if 
240e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
240f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24100 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24110 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24120 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24130 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24140 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24150 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24160 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24170 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24180 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24190 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
241a0 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66  ite3session_diff
241b0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
241c0 20 62 79 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61   byte[] fromDbNa
241d0 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61  me, byte[] tblNa
241e0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  me, ref IntPtr e
241f0 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
24200 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24210 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24220 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24230 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24240 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24250 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24260 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24270 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24280 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24290 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
242a0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
242b0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
242c0 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68  te3session_patch
242d0 73 65 74 28 49 6e 74 50 74 72 20 73 65 73 73 69  set(IntPtr sessi
242e0 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 50 61 74  on, ref int nPat
242f0 63 68 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74  chSet, ref IntPt
24300 72 20 70 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d  r pPatchSet);...
24310 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24320 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24340 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24390 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
243a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
243b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
243c0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73  n int sqlite3ses
243d0 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74  sion_isempty(Int
243e0 50 74 72 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d  Ptr session);...
243f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24400 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24410 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24420 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24430 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24440 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24450 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24460 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24470 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24480 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24490 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
244a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
244b0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
244c0 65 74 5f 73 74 61 72 74 28 72 65 66 20 49 6e 74  et_start(ref Int
244d0 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
244e0 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e  t nChangeSet, In
244f0 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29  tPtr pChangeSet)
24500 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24510 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24520 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24530 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24540 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24550 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24560 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24570 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24580 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24590 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
245a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
245b0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
245c0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
245d0 6e 67 65 73 65 74 5f 6e 65 78 74 28 49 6e 74 50  ngeset_next(IntP
245e0 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d  tr iterator);...
245f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24600 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24610 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24620 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24630 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24640 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24650 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24660 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24670 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24680 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24690 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
246a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
246b0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
246c0 65 74 5f 6f 70 28 49 6e 74 50 74 72 20 69 74 65  et_op(IntPtr ite
246d0 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74  rator, ref IntPt
246e0 72 20 70 54 62 6c 4e 61 6d 65 2c 20 72 65 66 20  r pTblName, ref 
246f0 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65  int nColumns, re
24700 66 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a  f SQLiteAuthoriz
24710 65 72 41 63 74 69 6f 6e 43 6f 64 65 20 6f 70 2c  erActionCode op,
24720 20 72 65 66 20 69 6e 74 20 62 49 6e 64 69 72 65   ref int bIndire
24730 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ct);....#if !PLA
24740 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24750 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24760 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24770 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24780 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24790 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
247a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
247b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
247c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
247d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
247e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
247f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
24800 63 68 61 6e 67 65 73 65 74 5f 70 6b 28 49 6e 74  changeset_pk(Int
24810 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65  Ptr iterator, re
24820 66 20 49 6e 74 50 74 72 20 70 50 72 69 6d 61 72  f IntPtr pPrimar
24830 79 4b 65 79 73 2c 20 72 65 66 20 69 6e 74 20 6e  yKeys, ref int n
24840 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23 69 66  Columns);....#if
24850 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24860 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24870 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24880 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
24890 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
248a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
248b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
248c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
248d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
248e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
248f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
24900 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24910 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f  lite3changeset_o
24920 6c 64 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  ld(IntPtr iterat
24930 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e  or, int columnIn
24940 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20  dex, ref IntPtr 
24950 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20  pValue);....#if 
24960 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24970 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24980 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24990 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
249a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
249b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
249c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
249d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
249e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
249f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24a00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24a10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24a20 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65  ite3changeset_ne
24a30 77 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  w(IntPtr iterato
24a40 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64  r, int columnInd
24a50 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ex, ref IntPtr p
24a60 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  Value);....#if !
24a70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24a80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24a90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24aa0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24ab0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24ac0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24ad0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24ae0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24af0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24b00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24b10 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
24b20 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24b30 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e  te3changeset_con
24b40 66 6c 69 63 74 28 49 6e 74 50 74 72 20 69 74 65  flict(IntPtr ite
24b50 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d  rator, int colum
24b60 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50  nIndex, ref IntP
24b70 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23  tr pValue);....#
24b80 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24b90 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24ba0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24bb0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24bc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24bd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24be0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24bf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24c00 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24c10 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24c20 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24c30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24c40 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
24c50 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28 49 6e  _fk_conflicts(In
24c60 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72  tPtr iterator, r
24c70 65 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73  ef int conflicts
24c80 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24c90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24ca0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24cc0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24cd0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24ce0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24cf0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24d00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24d10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24d20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24d30 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
24d40 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
24d50 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65  angeset_finalize
24d60 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
24d70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24d80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24d90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24da0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24db0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24dc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24dd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24de0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24df0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24e00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24e10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24e20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
24e30 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
24e40 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 28 69  angeset_invert(i
24e50 6e 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72 20 70  nt nIn, IntPtr p
24e60 49 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75 74  In, ref int nOut
24e70 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f 75  , ref IntPtr pOu
24e80 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
24e90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24ea0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24eb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24ec0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24ed0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24ee0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24ef0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24f00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24f10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24f20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24f30 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
24f40 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
24f50 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 28  hangeset_concat(
24f60 69 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72 20 70  int nA, IntPtr p
24f70 41 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74 50 74  A, int nB, IntPt
24f80 72 20 70 42 2c 20 72 65 66 20 69 6e 74 20 6e 4f  r pB, ref int nO
24f90 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ut, ref IntPtr p
24fa0 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
24fb0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24fc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24fd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24fe0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24ff0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25000 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25010 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
25020 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25030 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
25040 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25050 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
25060 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25070 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e 65 77  3changegroup_new
25080 28 72 65 66 20 49 6e 74 50 74 72 20 63 68 61 6e  (ref IntPtr chan
25090 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66  geGroup);....#if
250a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
250b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
250c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
250d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
250e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
250f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25100 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25110 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25120 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
25130 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25140 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
25150 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
25160 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
25170 5f 61 64 64 28 49 6e 74 50 74 72 20 63 68 61 6e  _add(IntPtr chan
25180 67 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e 44 61  geGroup, int nDa
25190 74 61 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61  ta, IntPtr pData
251a0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
251b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
251c0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
251d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
251e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
251f0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25200 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25210 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25220 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25230 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25240 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25250 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25260 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
25270 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74  angegroup_output
25280 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
25290 6f 75 70 2c 20 72 65 66 20 69 6e 74 20 6e 44 61  oup, ref int nDa
252a0 74 61 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ta, ref IntPtr p
252b0 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Data);....#if !P
252c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
252d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
252e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
252f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25300 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25310 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25320 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25330 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25340 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25350 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25360 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
25370 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
25380 75 70 5f 64 65 6c 65 74 65 28 49 6e 74 50 74 72  up_delete(IntPtr
25390 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a   changeGroup);..
253a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
253b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
253c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
253d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
253e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
253f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25400 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25410 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25420 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25430 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25440 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25450 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25460 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
25470 73 65 74 5f 61 70 70 6c 79 28 49 6e 74 50 74 72  set_apply(IntPtr
25480 20 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65   db, int nChange
25490 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61  Set, IntPtr pCha
254a0 6e 67 65 53 65 74 2c 20 78 53 65 73 73 69 6f 6e  ngeSet, xSession
254b0 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20  Filter xFilter, 
254c0 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74  xSessionConflict
254d0 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50   xConflict, IntP
254e0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
254f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25500 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25510 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25520 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25530 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25540 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25550 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25560 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25570 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25580 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25590 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
255a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
255b0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
255c0 74 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49 6e 74  t_apply_strm(Int
255d0 50 74 72 20 64 62 2c 20 78 53 65 73 73 69 6f 6e  Ptr db, xSession
255e0 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e  Input xInput, In
255f0 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69  tPtr pIn, xSessi
25600 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72  onFilter xFilter
25610 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69  , xSessionConfli
25620 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e  ct xConflict, In
25630 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
25640 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25650 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25660 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25670 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25680 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25690 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
256a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
256b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
256c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
256d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
256e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
256f0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25700 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
25710 73 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72 6d 28  set_concat_strm(
25720 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
25730 6e 70 75 74 41 2c 20 49 6e 74 50 74 72 20 70 49  nputA, IntPtr pI
25740 6e 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75  nA, xSessionInpu
25750 74 20 78 49 6e 70 75 74 42 2c 20 49 6e 74 50 74  t xInputB, IntPt
25760 72 20 70 49 6e 42 2c 20 78 53 65 73 73 69 6f 6e  r pInB, xSession
25770 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
25780 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
25790 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
257a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
257b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
257c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
257d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
257e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
257f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25800 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25810 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25820 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25830 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25840 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25850 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
25860 65 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d 28 78  et_invert_strm(x
25870 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
25880 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c  put, IntPtr pIn,
25890 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
258a0 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
258b0 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
258c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
258d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
258e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
258f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25900 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25910 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25920 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25930 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25940 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25950 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25960 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25970 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25980 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72  e3changeset_star
25990 74 5f 73 74 72 6d 28 72 65 66 20 49 6e 74 50 74  t_strm(ref IntPt
259a0 72 20 69 74 65 72 61 74 6f 72 2c 20 78 53 65 73  r iterator, xSes
259b0 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
259c0 2c 20 49 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a  , IntPtr pIn);..
259d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
259e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
259f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25a00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25a10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25a20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25a30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25a40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25a50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25a60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25a70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25a80 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25a90 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
25aa0 6e 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d  n_changeset_strm
25ab0 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
25ac0 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20   xSessionOutput 
25ad0 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20  xOutput, IntPtr 
25ae0 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
25af0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25b00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25b10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25b20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25b30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25b40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25b50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25b60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25b70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25b80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25b90 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25ba0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25bb0 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73  e3session_patchs
25bc0 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73  et_strm(IntPtr s
25bd0 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
25be0 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
25bf0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
25c00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25c10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25c20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25c30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
25c40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
25c50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25c70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25c80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25c90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25ca0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25cb0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25cc0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
25cd0 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e  roup_add_strm(In
25ce0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
25cf0 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
25d00 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
25d10 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  In);....#if !PLA
25d20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25d30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25d40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25d50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25d60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25d70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25d80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25d90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25da0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25db0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25dc0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
25dd0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
25de0 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70  changegroup_outp
25df0 75 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63  ut_strm(IntPtr c
25e00 68 61 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73  hangeGroup, xSes
25e10 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
25e20 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
25e30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  ;..#endif..    #
25e40 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23  endregion..    #
25e50 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25e60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25eb0 20 20 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69      #region sqli
25ec0 74 65 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63  te interop api c
25ed0 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61  alls (.NET Compa
25ee0 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c  ct Framework onl
25ef0 79 29 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  y)..#if PLATFORM
25f00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25f10 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41  K && !SQLITE_STA
25f20 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49  NDARD..    [DllI
25f30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25f40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
25f50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
25f60 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  oid sqlite3_last
25f70 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e  _insert_rowid_in
25f80 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
25f90 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29   ref long rowId)
25fa0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
25fb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25fc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25fd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
25fe0 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
25ff0 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65  _used_interop(re
26000 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a  f long bytes);..
26010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26020 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
26030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26040 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
26050 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
26060 67 68 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28  ghwater_interop(
26070 69 6e 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72  int resetFlag, r
26080 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d  ef long bytes);.
26090 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
260a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
260b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
260c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
260d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
260e0 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69  e3_bind_double_i
260f0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
26100 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
26110 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
26120 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
26130 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
26140 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
26150 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
26160 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
26170 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
26180 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
26190 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
261a0 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ref long value);
261b0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
261c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
261d0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
261e0 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f  ite3_bind_int64_
261f0 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20  interop")]..    
26200 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26210 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
26220 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
26230 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72  ind_uint64_inter
26240 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
26250 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75  int index, ref u
26260 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  long value);....
26270 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26280 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
26290 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
262a0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
262b0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62  ite3_column_doub
262c0 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
262d0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
262e0 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
262f0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
26300 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26310 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
26320 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26330 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f   void sqlite3_co
26340 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72  lumn_int64_inter
26350 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
26360 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c  int index, ref l
26370 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ong value);.... 
26380 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26390 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
263a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
263b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
263c0 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
263d0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
263e0 70 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  p, ref double va
263f0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
26400 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26410 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
26420 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26430 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61   void sqlite3_va
26440 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f  lue_int64_intero
26450 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
26460 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
26470 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26480 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
26490 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
264a0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
264b0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
264c0 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
264d0 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
264e0 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
264f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26500 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
26510 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26520 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
26530 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
26540 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
26550 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20  tr context, ref 
26560 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d  Int64 value);...
26570 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26580 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
26590 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
265a0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
265b0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
265c0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
265d0 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20  _interop(..     
265e0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e     IntPtr db, In
265f0 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74  tPtr name, IntPt
26600 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69  r pModule, int i
26610 56 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65  Version, xCreate
26620 20 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20   xCreate,..     
26630 20 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e     xConnect xCon
26640 6e 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78  nect, xBestIndex
26650 20 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69   xBestIndex, xDi
26660 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e  sconnect xDiscon
26670 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78  nect,..        x
26680 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
26690 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78  , xOpen xOpen, x
266a0 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46  Close xClose, xF
266b0 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a  ilter xFilter,..
266c0 20 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e          xNext xN
266d0 65 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20  ext, xEof xEof, 
266e0 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c  xColumn xColumn,
266f0 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20   xRowId xRowId, 
26700 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c  xUpdate xUpdate,
26710 0d 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e  ..        xBegin
26720 20 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78   xBegin, xSync x
26730 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43  Sync, xCommit xC
26740 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b  ommit, xRollback
26750 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20   xRollback,..   
26760 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69       xFindFuncti
26770 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
26780 2c 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  , xRename xRenam
26790 65 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53  e, xSavepoint xS
267a0 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20  avepoint,..     
267b0 20 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c     xRelease xRel
267c0 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54  ease, xRollbackT
267d0 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  o xRollbackTo, I
267e0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
267f0 61 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  a,..        xDes
26800 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
26810 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e  royModule);..#en
26820 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54  dif..    // PLAT
26830 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26840 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
26850 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23  _STANDARD..    #
26860 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
26870 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
268c0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
268d0 76 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69  ve Delegates..#i
268e0 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
268f0 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c  L_TABLE..#if !PL
26900 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26910 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26920 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26930 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26940 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26950 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26960 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
26970 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
26980 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
26990 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
269a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
269b0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61  ,..        int a
269c0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  rgc,..        In
269d0 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
269e0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
269f0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
26a00 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
26a10 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
26a70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26a80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26a90 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
26aa0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
26ab0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26ac0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
26ad0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
26ae0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
26af0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
26b00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
26b10 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
26b20 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
26b30 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
26b40 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
26b50 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
26b60 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
26b70 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
26b80 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
26b90 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26be0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
26bf0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26c00 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
26c10 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
26c20 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
26c30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26c40 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
26c50 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
26c60 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74  eErrorCode xBest
26c70 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
26c80 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
26c90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
26ca0 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
26cb0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26d00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26d10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26d20 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26d30 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26d40 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26d50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26d60 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26d70 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26d80 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
26d90 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
26da0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
26db0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
26dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e00 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
26e10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26e20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26e30 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26e40 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26e50 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26e60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
26e70 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
26e80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44  LiteErrorCode xD
26e90 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
26ea0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
26eb0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
26ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
26f10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26f20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26f30 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
26f40 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
26f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26f60 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
26f70 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
26f80 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26f90 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
26fa0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
26fb0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
26fc0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
26fd0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
26fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
27030 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27040 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
27050 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
27060 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
27070 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27080 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
27090 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
270a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
270b0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  lose(..        I
270c0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
270d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
270e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27120 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
27130 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27140 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27150 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
27160 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
27170 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27180 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
27190 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
271a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
271b0 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20   xFilter(..     
271c0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
271d0 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
271e0 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
271f0 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
27200 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
27210 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
27220 74 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d  tr argv..    );.
27230 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27280 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
27290 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
272a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
272b0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
272c0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
272d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
272e0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
272f0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
27300 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
27310 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
27320 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
27330 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
27340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27380 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
27390 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
273a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
273b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
273c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
273d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
273e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
273f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74  lic delegate int
27400 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
27410 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
27420 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
27430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27470 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27480 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
274a0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
274b0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
274c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
274d0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
274e0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
274f0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
27500 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  e xColumn(..    
27510 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
27520 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  or,..        Int
27530 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
27540 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
27550 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
27560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
275b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
275c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
275d0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
275e0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
275f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27600 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27610 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
27620 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
27630 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20  ode xRowId(..   
27640 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
27650 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  sor,..        re
27660 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
27670 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
27680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
276d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
276e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
276f0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
27700 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
27710 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27720 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
27730 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
27740 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27750 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
27760 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
27770 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
27780 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
27790 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
277a0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
277b0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
277c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
27810 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27820 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27830 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27840 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27850 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27860 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27870 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
27880 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
27890 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
278a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
278b0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
278c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
278d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27910 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27920 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27930 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
27940 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
27950 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27960 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
27970 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
27980 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
27990 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20  Code xSync(..   
279a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
279b0 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
279c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
279d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27a10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27a20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27a30 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
27a40 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
27a50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27a60 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
27a70 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
27a80 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
27a90 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
27aa0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27ab0 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  tab..    );.... 
27ac0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27b10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
27b20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27b30 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
27b40 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
27b50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27b60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
27b70 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
27b80 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
27b90 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
27ba0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
27bb0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
27bc0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
27c20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27c30 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
27c40 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
27c50 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
27c60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
27c70 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
27c80 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  c delegate int x
27c90 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
27ca0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27cb0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
27cc0 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20  t nArg,..       
27cd0 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
27ce0 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
27cf0 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62  teCallback callb
27d00 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ack,..        re
27d10 66 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61  f IntPtr pUserDa
27d20 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ta..    );....  
27d30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27d80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27d90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27da0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
27db0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
27dc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27dd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
27de0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
27df0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
27e00 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
27e10 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27e20 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
27e30 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
27e40 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
27e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e90 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
27ea0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27eb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
27ec0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
27ed0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
27ee0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
27f00 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
27f10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
27f20 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
27f30 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
27f40 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
27f50 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
27f60 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
27f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fb0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
27fc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27fd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
27fe0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
27ff0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
28000 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
28010 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
28020 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
28030 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c  teErrorCode xRel
28040 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49  ease(..        I
28050 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
28060 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
28070 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  oint..    );....
28080 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
280d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
280e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
280f0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
28100 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
28110 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
28120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
28130 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
28140 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
28150 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
28160 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  kTo(..        In
28170 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
28180 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
28190 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
281a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
281b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
281f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
28200 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
28210 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
28220 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
28230 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28240 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
28250 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
28260 6c 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73  legate void xDes
28270 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74  troyModule(IntPt
28280 72 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d  r pClientData);.
28290 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
282a0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
282b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
28300 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
28310 20 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66   Structures..#if
28320 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
28330 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72  _TABLE..    [Str
28340 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
28350 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
28360 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
28370 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d  struct sqlite3_m
28380 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
28390 20 20 20 20 20 20 2f 2a 20 20 20 30 20 2a 2f 20        /*   0 */ 
283a0 70 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73  public int iVers
283b0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ion;..        /*
283c0 20 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 78     8 */ public x
283d0 43 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d  Create xCreate;.
283e0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 31 36 20  .        /*  16 
283f0 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65  */ public xConne
28400 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20  ct xConnect;..  
28410 20 20 20 20 20 20 2f 2a 20 20 32 34 20 2a 2f 20        /*  24 */ 
28420 70 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65  public xBestInde
28430 78 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20  x xBestIndex;.. 
28440 20 20 20 20 20 20 20 2f 2a 20 20 33 32 20 2a 2f         /*  32 */
28450 20 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e   public xDisconn
28460 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b  ect xDisconnect;
28470 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34 30  ..        /*  40
28480 20 2a 2f 20 70 75 62 6c 69 63 20 78 44 65 73 74   */ public xDest
28490 72 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20  roy xDestroy;.. 
284a0 20 20 20 20 20 20 20 2f 2a 20 20 34 38 20 2a 2f         /*  48 */
284b0 20 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f   public xOpen xO
284c0 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  pen;..        /*
284d0 20 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 78    56 */ public x
284e0 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20  Close xClose;.. 
284f0 20 20 20 20 20 20 20 2f 2a 20 20 36 34 20 2a 2f         /*  64 */
28500 20 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20   public xFilter 
28510 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20  xFilter;..      
28520 20 20 2f 2a 20 20 37 32 20 2a 2f 20 70 75 62 6c    /*  72 */ publ
28530 69 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d  ic xNext xNext;.
28540 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38 30 20  .        /*  80 
28550 2a 2f 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78  */ public xEof x
28560 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  Eof;..        /*
28570 20 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 78    88 */ public x
28580 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d  Column xColumn;.
28590 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 39 36 20  .        /*  96 
285a0 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64  */ public xRowId
285b0 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20   xRowId;..      
285c0 20 20 2f 2a 20 31 30 34 20 2a 2f 20 70 75 62 6c    /* 104 */ publ
285d0 69 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61  ic xUpdate xUpda
285e0 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  te;..        /* 
285f0 31 31 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 42  112 */ public xB
28600 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20  egin xBegin;..  
28610 20 20 20 20 20 20 2f 2a 20 31 32 30 20 2a 2f 20        /* 120 */ 
28620 70 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79  public xSync xSy
28630 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  nc;..        /* 
28640 31 32 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43  128 */ public xC
28650 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a  ommit xCommit;..
28660 20 20 20 20 20 20 20 20 2f 2a 20 31 33 36 20 2a          /* 136 *
28670 2f 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61  / public xRollba
28680 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20  ck xRollback;.. 
28690 20 20 20 20 20 20 20 2f 2a 20 31 34 34 20 2a 2f         /* 144 */
286a0 20 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e   public xFindFun
286b0 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74  ction xFindFunct
286c0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ion;..        /*
286d0 20 31 35 32 20 2a 2f 20 70 75 62 6c 69 63 20 78   152 */ public x
286e0 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d  Rename xRename;.
286f0 0a 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20  .        /* The 
28700 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72  methods above ar
28710 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f  e in version 1 o
28720 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f  f the sqlite3_mo
28730 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a  dule..         *
28740 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20   object.  Those 
28750 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65  below are for ve
28760 72 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61  rsion 2 and grea
28770 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ter. */..       
28780 20 2f 2a 20 31 36 30 20 2a 2f 20 70 75 62 6c 69   /* 160 */ publi
28790 63 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  c xSavepoint xSa
287a0 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20  vepoint;..      
287b0 20 20 2f 2a 20 31 36 38 20 2a 2f 20 70 75 62 6c    /* 168 */ publ
287c0 69 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c  ic xRelease xRel
287d0 65 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ease;..        /
287e0 2a 20 31 37 36 20 2a 2f 20 70 75 62 6c 69 63 20  * 176 */ public 
287f0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c  xRollbackTo xRol
28800 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d  lbackTo;..    }.
28810 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
28820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28860 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
28870 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
28880 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
28890 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
288a0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61  ruct sqlite3_vta
288b0 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  b..    {..      
288c0 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69    /*  0 */ publi
288d0 63 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  c IntPtr pModule
288e0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38  ;..        /*  8
288f0 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
28900 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45  Ref; /* NO LONGE
28910 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  R USED */..     
28920 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c     /* 16 */ publ
28930 69 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73  ic IntPtr zErrMs
28940 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  g;..    }....   
28950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
289a0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
289b0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
289c0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
289d0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
289e0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
289f0 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  or..    {..     
28a00 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69     /* 0 */ publi
28a10 63 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d  c IntPtr pVTab;.
28a20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
28a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28a80 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
28a90 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
28aa0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
28ab0 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
28ac0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
28ad0 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
28ae0 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
28af0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
28b00 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
28b10 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f     SQLiteIndexCo
28b20 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
28b30 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
28b40 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
28b50 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
28b60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28b70 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20   if (constraint 
28b80 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
28b90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28ba0 20 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e           iColumn
28bb0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43   = constraint.iC
28bc0 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
28bd0 20 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e          op = con
28be0 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20  straint.op;..   
28bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61               usa
28c00 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  ble = constraint
28c10 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20  .usable;..      
28c20 20 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f            iTermO
28c30 66 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69  ffset = constrai
28c40 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d  nt.iTermOffset;.
28c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
28c60 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28c70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
28cc0 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20          /* 0 */ 
28cd0 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
28ce0 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  mn;..        /* 
28cf0 34 20 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69  4 */ public SQLi
28d00 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
28d10 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  tOp op;..       
28d20 20 2f 2a 20 35 20 2a 2f 20 70 75 62 6c 69 63 20   /* 5 */ public 
28d30 62 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20  byte usable;..  
28d40 20 20 20 20 20 20 2f 2a 20 38 20 2a 2f 20 70 75        /* 8 */ pu
28d50 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66  blic int iTermOf
28d60 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  fset;..    }....
28d70 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28dc0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
28dd0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
28de0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
28df0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
28e00 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
28e10 6f 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a  orderby..    {..
28e20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
28e30 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
28e40 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
28e50 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72     SQLiteIndexOr
28e60 64 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20  derBy orderBy.. 
28e70 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28e80 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
28e90 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
28ea0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
28eb0 72 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d  rderBy != null).
28ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
28ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ee0 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42  iColumn = orderB
28ef0 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  y.iColumn;..    
28f00 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63              desc
28f10 20 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b   = orderBy.desc;
28f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
28f30 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
28f40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
28f90 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f  .        /* 0 */
28fa0 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c   public int iCol
28fb0 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e  umn; /* Column n
28fc0 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  umber */..      
28fd0 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63    /* 4 */ public
28fe0 20 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a   byte desc;   /*
28ff0 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
29000 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
29010 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
29020 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29070 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
29080 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
29090 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
290a0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
290b0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
290c0 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
290d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75     {..        pu
290e0 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64  blic sqlite3_ind
290f0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
29100 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
29110 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
29120 73 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e  straintUsage con
29130 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
29140 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29150 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
29160 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
29170 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
29180 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
29190 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
291a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
291b0 20 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78         argvIndex
291c0 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
291d0 67 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20  ge.argvIndex;.. 
291e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
291f0 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  mit = constraint
29200 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20  Usage.omit;..   
29210 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29220 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29230 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29270 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29280 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61      public int a
29290 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20  rgvIndex; /* if 
292a0 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  >0, constraint i
292b0 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
292c0 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20  o xFilter */..  
292d0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
292e0 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44  e omit;     /* D
292f0 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
29300 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74  t for this const
29310 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  raint */..    }.
29320 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29370 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
29380 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
29390 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
293a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
293b0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
293c0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a  ex_info..    {..
293d0 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74          /* Input
293e0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  s */..        /*
293f0 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e    0 */ public in
29400 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f  t nConstraint; /
29410 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72  * Number of entr
29420 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69  ies in aConstrai
29430 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  nt */..        /
29440 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 49  *  8 */ public I
29450 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
29460 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  t;..        /* 1
29470 36 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  6 */ public int 
29480 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20  nOrderBy;    /* 
29490 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65  Number of entrie
294a0 73 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f  s in aOrderBy */
294b0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 32 34 20  ..        /* 24 
294c0 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
294d0 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20   aOrderBy;..    
294e0 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a      /* Outputs *
294f0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 33 32  /..        /* 32
29500 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74   */ public IntPt
29510 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r aConstraintUsa
29520 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  ge;..        /* 
29530 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74  40 */ public int
29540 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20   idxNum;        
29550 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65     /* Number use
29560 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68  d to identify th
29570 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20  e index */..    
29580 20 20 20 20 2f 2a 20 34 38 20 2a 2f 20 70 75 62      /* 48 */ pub
29590 6c 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74  lic string idxSt
295a0 72 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72  r;        /* Str
295b0 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62  ing, possibly ob
295c0 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69  tained from sqli
295d0 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20  te3_malloc */.. 
295e0 20 20 20 20 20 20 20 2f 2a 20 35 36 20 2a 2f 20         /* 56 */ 
295f0 70 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54  public int needT
29600 6f 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20  oFreeIdxStr; /* 
29610 46 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e  Free idxStr usin
29620 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29  g sqlite3_free()
29630 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20   if true */..   
29640 20 20 20 20 20 2f 2a 20 36 30 20 2a 2f 20 70 75       /* 60 */ pu
29650 62 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79  blic int orderBy
29660 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72  Consumed;  /* Tr
29670 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20  ue if output is 
29680 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20  already ordered 
29690 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 36  */..        /* 6
296a0 34 20 2a 2f 20 70 75 62 6c 69 63 20 64 6f 75 62  4 */ public doub
296b0 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  le estimatedCost
296c0 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63  ; /* Estimated c
296d0 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69  ost of using thi
296e0 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20  s index */..    
296f0 20 20 20 20 2f 2a 20 37 32 20 2a 2f 20 70 75 62      /* 72 */ pub
29700 6c 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74  lic long estimat
29710 65 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74  edRows;   /* Est
29720 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66  imated number of
29730 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a   rows returned *
29740 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 30  /..        /* 80
29750 20 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74   */ public SQLit
29760 65 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46  eIndexFlags idxF
29770 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66  lags; /* Mask of
29780 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43   SQLITE_INDEX_SC
29790 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20  AN_* flags */.. 
297a0 20 20 20 20 20 20 20 2f 2a 20 38 38 20 2a 2f 20         /* 88 */ 
297b0 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55  public long colU
297c0 73 65 64 3b 20 20 20 20 20 20 20 20 20 2f 2a 20  sed;         /* 
297d0 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63  Input: Mask of c
297e0 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62 79 20 73  olumns used by s
297f0 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20  tatement */..   
29800 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
29810 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
29820 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
29830 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
29840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29880 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 2e 4e  ....  #region .N
29890 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
298a0 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72 69 74  work (only) Crit
298b0 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61 73 73  icalHandle Class
298c0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
298d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
298e0 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74  .  internal abst
298f0 72 61 63 74 20 63 6c 61 73 73 20 43 72 69 74 69  ract class Criti
29900 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73  calHandle : IDis
29910 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  posable..  {..  
29920 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f    private bool _
29930 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70  isClosed;..    p
29940 72 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72 20  rotected IntPtr 
29950 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70  handle;....    p
29960 72 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61  rotected Critica
29970 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69  lHandle(IntPtr i
29980 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75  nvalidHandleValu
29990 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
299a0 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69   handle = invali
299b0 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20  dHandleValue;.. 
299c0 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
299d0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a   false;..    }..
299e0 0d 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48  ..    ~CriticalH
299f0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  andle()..    {..
29a00 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61        Dispose(fa
29a10 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lse);..    }....
29a20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
29a30 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20   Cleanup()..    
29a40 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73  {..      if (!Is
29a50 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b  Closed)..      {
29a60 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f  ..        this._
29a70 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b  isClosed = true;
29a80 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49  ..        if (!I
29a90 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20  sInvalid)..     
29aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29ab0 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b  ReleaseHandle();
29ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53  ..          GC.S
29ad0 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
29ae0 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
29af0 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
29b00 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
29b10 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20  void Close()..  
29b20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
29b30 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
29b40 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
29b50 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
29b60 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70     {..      Disp
29b70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
29b80 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  }....    protect
29b90 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
29ba0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
29bb0 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a  posing)..    {..
29bc0 20 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b        Cleanup();
29bd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
29be0 72 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63  rotected abstrac
29bf0 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  t bool ReleaseHa
29c00 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70  ndle();....    p
29c10 72 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65  rotected void Se
29c20 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76  tHandle(IntPtr v
29c30 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
29c40 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c      handle = val
29c50 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ue;..    }....  
29c60 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
29c70 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
29c80 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
29c90 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75   _isClosed = tru
29ca0 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70  e;..      GC.Sup
29cb0 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
29cc0 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  is);..    }.... 
29cd0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49     public bool I
29ce0 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a  sClosed..    {..
29cf0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
29d00 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d  rn _isClosed; }.
29d10 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75  .    }....    pu
29d20 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f  blic abstract bo
29d30 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
29d40 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d    {..      get;.
29d50 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23  .    }....  }..#
29d60 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
29d70 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
29d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
29dd0 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e  egion SQLiteConn
29de0 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61  ectionHandle Cla
29df0 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c  ss..    // Handl
29e00 65 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64  es the unmanaged
29e10 20 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65   database pointe
29e20 72 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20  r, and provides 
29e30 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20  finalization..  
29e40 20 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72    // support for
29e50 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e   it...    intern
29e60 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
29e70 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
29e80 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
29e90 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
29ea0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
29eb0 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d  ARD && !PLATFORM
29ec0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
29ed0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
29ee0 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69  nal delegate voi
29ef0 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  d CloseConnectio
29f00 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  nCallback(..    
29f10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
29f20 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68  nnectionHandle h
29f30 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d  dl, IntPtr db);.
29f40 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
29f50 6e 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65  nal static Close
29f60 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61  ConnectionCallba
29f70 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  ck closeConnecti
29f80 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  on =..          
29f90 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
29fa0 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23  seConnection;..#
29fb0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
29fc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a000 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a010 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a020 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2a030 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
2a040 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
2a050 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2a060 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
2a070 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a0c0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2a0d0 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c  te bool ownHandl
2a0e0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a130 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a140 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
2a150 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
2a160 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f   IntPtr(SQLiteCo
2a170 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64  nnectionHandle d
2a180 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  b)..        {.. 
2a190 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
2a1a0 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  b != null)..    
2a1b0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2a1c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a1d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2a1e0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2a1f0 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  db.syncRoot)..#e
2a200 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2a210 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2a230 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a  urn db.handle;..
2a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a250 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2a260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2a270 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
2a280 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2a290 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a2e0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
2a2f0 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  nal SQLiteConnec
2a300 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74  tionHandle(IntPt
2a310 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61  r db, bool ownHa
2a320 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
2a330 20 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e     : this(ownHan
2a340 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  dle)..        {.
2a350 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2a360 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2a370 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2a380 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2a390 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2a3a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a3b0 20 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64      this.ownHand
2a3c0 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  le = ownHandle;.
2a3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a3e0 20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d   SetHandle(db);.
2a3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2a400 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a410 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a460 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2a470 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2a480 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48  Handle(bool ownH
2a490 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  andle)..        
2a4a0 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
2a4b0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2a4c0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
2a4d0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2a4e0 20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29    if (ownHandle)
2a4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a500 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
2a510 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2a520 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e  gData.connection
2a530 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
2a540 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2a550 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a5a0 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2a5b0 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
2a5c0 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
2a5d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2a5e0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2a5f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a600 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2a610 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2a620 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a640 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20  if (!ownHandle) 
2a650 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
2a660 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a670 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2a680 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2a690 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a6a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2a6c0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
2a6d0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
2a6e0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
2a6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a700 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
2a710 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20  r.Zero);....#if 
2a720 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
2a730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a740 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
2a750 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2a760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a770 20 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65        closeConne
2a780 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
2a790 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65  lHandle);..#else
2a7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a7b0 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
2a7c0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2a7d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a7e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
2a7f0 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  e.CloseConnectio
2a800 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e  n(this, localHan
2a810 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dle);..#endif...
2a820 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2a830 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2a840 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2a850 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2a860 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a880 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2a890 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2a8a0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2a8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8c0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2a8d0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2a8e0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2a8f0 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
2a900 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30  seConnection: {0
2a910 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
2a920 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2a930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a940 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2a950 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2a960 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a970 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a980 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
2a990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2a9a0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2a9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a9d0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
2a9e0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2a9f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2aa00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2aa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
2aa30 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
2aa40 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  s, handle);..   
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa60 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
2aa70 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2aaa0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2aab0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2aac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2aad0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
2aae0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2aaf0 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e  gData.connection
2ab00 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
2ab10 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2ab20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ab30 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
2ab40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ab50 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2ab60 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2ab70 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2ab80 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
2ab90 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
2aba0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2abb0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
2abc0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
2abd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2abe0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2abf0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2ac00 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2ac10 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2ac20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ac30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac40 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
2ac50 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
2ac60 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
2ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac80 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
2ac90 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
2aca0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2acb0 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
2acc0 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
2acd0 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
2ace0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2acf0 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
2ad00 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
2ad10 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2ad20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ad30 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ad60 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2ad70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2ad80 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2ad90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ada0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2adb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2add0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2ade0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2adf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2ae00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae10 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
2ae20 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
2ae30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ae40 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
2ae50 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2ae60 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
2ae70 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2ae80 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2ae90 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2aea0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aef0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
2af00 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2af10 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
2af20 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
2af30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2af40 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
2af50 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2af60 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2af70 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29  connectionCount)
2af80 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
2af90 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2aff0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f     public bool O
2b000 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20  wnHandle..      
2b010 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b020 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
2b030 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2b040 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b050 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2b060 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2b070 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2b080 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0a0 20 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48 61      return ownHa
2b0b0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
2b0c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b0d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2b0e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b140 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
2b150 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
2b160 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2b170 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
2b180 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2b190 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b1a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2b1b0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2b1c0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2b1d0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2b1e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b1f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b200 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  n (handle == Int
2b210 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
2b220 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2b230 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b240 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b250 20 20 20 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 2f  ////////////////
2b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2b2a0 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
2b2b0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
2b2c0 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
2b2d0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2b2e0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2b2f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b300 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2b310 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2b320 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2b330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b340 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e    return handle.
2b350 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
2b360 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b370 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2b380 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
2b390 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
2b3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
2b3f0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61  region SQLiteSta
2b400 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61  tementHandle Cla
2b410 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
2b420 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
2b430 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
2b440 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74  anaged SQLite st
2b450 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69  atements...    i
2b460 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
2b470 6c 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65  lass SQLiteState
2b480 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69  mentHandle : Cri
2b490 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
2b4a0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2b4b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2b4c0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
2b4d0 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
2b4e0 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
2b4f0 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
2b500 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b560 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
2b570 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2b580 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
2b590 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b5e0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
2b5f0 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
2b600 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
2b610 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
2b620 65 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20  e stmt)..       
2b630 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b640 69 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c  if (stmt != null
2b650 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2b660 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2b670 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b690 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63   lock (stmt.sync
2b6a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2b6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b6d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d        return stm
2b6e0 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  t.handle;..     
2b6f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b700 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b710 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b720 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
2b730 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b740 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b790 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
2b7a0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2b7b0 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
2b7c0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
2b7d0 20 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20   IntPtr stmt).. 
2b7e0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2b7f0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2b800 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2b810 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2b820 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2b830 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2b840 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2b850 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b860 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
2b870 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
2b880 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74      SetHandle(st
2b890 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mt);..          
2b8a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2b8b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b900 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
2b910 76 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65  vate SQLiteState
2b920 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20  mentHandle()..  
2b930 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
2b940 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
2b950 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
2b960 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2b970 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2b980 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
2b990 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
2b9a0 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
2b9b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2b9c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2ba20 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
2ba30 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
2ba40 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
2ba50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
2ba60 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
2ba70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2ba80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2ba90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2baa0 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
2bab0 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
2bac0 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
2bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bae0 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
2baf0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
2bb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2bb10 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
2bb20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2bb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb40 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
2bb50 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74  inalizeStatement
2bb60 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c  (cnn, localHandl
2bb70 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  e);....#if !NET_
2bb80 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2bb90 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2bba0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2bbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bbc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2bbd0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2bbe0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2bbf0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2bc00 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2bc10 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2bc20 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2bc30 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc50 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65    "FinalizeState
2bc60 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  ment: {0}", loca
2bc70 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
2bc80 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2bc90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2bca0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2bcb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bcc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bcd0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2bce0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2bcf0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2bd00 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
2bd10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2bd30 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
2bd40 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2bd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2bd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd70 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2bd80 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61  Base.FinalizeSta
2bd90 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64  tement(cnn, hand
2bda0 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2bdc0 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a  tHandle(IntPtr.Z
2bdd0 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
2bde0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2be00 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55  .#endif..#if COU
2be10 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2be20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2be30 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
2be40 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73  (ref DebugData.s
2be50 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d  tatementCount);.
2be60 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
2be70 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2be80 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2be90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2bea0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
2beb0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2bec0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2bed0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2bee0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2bef0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
2bf00 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2bf10 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
2bf20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2bf30 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
2bf40 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2bf50 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2bf60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2bf70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bf90 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2bfa0 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2bfb0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2bfc0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2bfe0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2bff0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c010 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74     "FinalizeStat
2c020 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65  ement: {0}, exce
2c030 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
2c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c050 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
2c060 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2c070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c080 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2c090 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
2c0a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c0c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2c0d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2c0e0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
2c0f0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2c100 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c110 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2c120 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2c130 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2c140 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2c150 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c160 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
2c170 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
2c180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c190 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c1a0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
2c1b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c1c0 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
2c1d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2c1e0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
2c1f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2c200 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c250 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
2c260 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
2c270 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
2c280 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
2c290 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
2c2a0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
2c2b0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
2c2c0 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d  DebugData.statem
2c2d0 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20  entCount);..    
2c2e0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
2c2f0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
2c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
2c350 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ic override bool
2c360 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20   IsInvalid..    
2c370 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c380 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
2c390 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2c3a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c3b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2c3c0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2c3d0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2c3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c400 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61        return (ha
2c410 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
2c420 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
2c430 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c440 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2c450 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42  /////....#if DEB
2c4b0 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  UG..        publ
2c4c0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
2c4d0 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
2c4e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2c4f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2c500 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2c510 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2c520 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2c530 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c540 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c550 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72  urn handle.ToStr
2c560 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
2c570 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2c580 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
2c590 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
2c5a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5f0 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
2c600 6e 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  n SQLiteBackupHa
2c610 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2c620 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
2c630 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
2c640 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
2c650 51 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a  QLite backup obj
2c660 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72  ects...    inter
2c670 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
2c680 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
2c690 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
2c6a0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
2c6b0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2c6c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2c6d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
2c6e0 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
2c6f0 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
2c700 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
2c710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2c770 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
2c780 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
2c790 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
2c7f0 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
2c800 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
2c810 74 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75  tPtr(SQLiteBacku
2c820 70 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d  pHandle backup).
2c830 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2c840 20 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b          if (back
2c850 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  up != null)..   
2c860 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2c870 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2c880 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2c890 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2c8a0 28 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74  (backup.syncRoot
2c8b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2c8c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8e0 20 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e    return backup.
2c8f0 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  handle;..       
2c900 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c920 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
2c930 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
2c940 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c990 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c9a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
2c9b0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28  iteBackupHandle(
2c9c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2c9d0 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
2c9e0 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20  tr backup)..    
2c9f0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2ca00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2ca10 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2ca20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2ca30 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2ca40 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2ca50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca70 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
2ca80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ca90 20 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75   SetHandle(backu
2caa0 70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  p);..           
2cab0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2cac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2cad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2cb20 61 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ate SQLiteBackup
2cb30 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2cb40 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74        : base(Int
2cb50 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2cb60 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f     {..#if COUNT_
2cb70 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2cb80 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
2cb90 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Increment(ref De
2cba0 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f  bugData.backupCo
2cbb0 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  unt);..#endif.. 
2cbc0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2cbd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2cbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2cc20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
2cc30 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52   override bool R
2cc40 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a  eleaseHandle()..
2cc50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cc60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2cc70 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
2cc80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2cc90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2cca0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ccb0 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20  r localHandle = 
2ccc0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68  Interlocked.Exch
2ccd0 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ange(..         
2cce0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68             ref h
2ccf0 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65  andle, IntPtr.Ze
2cd00 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
2cd10 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
2cd20 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
2cd30 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2cd40 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2cd50 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
2cd60 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ckup(cnn, localH
2cd70 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
2cd80 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2cd90 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cdb0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2cdc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cdd0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2cde0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
2cdf0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
2ce00 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
2ce30 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
2ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce50 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63        "FinishBac
2ce60 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  kup: {0}", local
2ce70 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
2ce80 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2ce90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2cea0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2ceb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cec0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ced0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2cee0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2cef0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2cf00 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2cf10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2cf30 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
2cf40 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2cf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2cf60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cf70 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2cf80 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70  ase.FinishBackup
2cf90 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
2cfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cfb0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2cfc0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
2cfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cfe0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2cff0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2d000 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
2d010 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2d020 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2d030 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2d040 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43  ebugData.backupC
2d050 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2d060 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2d070 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d080 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2d090 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d0a0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2d0b0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2d0c0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2d0d0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2d0e0 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
2d0f0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
2d100 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2d110 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
2d120 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2d130 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2d140 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2d150 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2d160 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2d170 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d190 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2d1a0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2d1b0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1d0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2d1e0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2d1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d200 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
2d210 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78  hBackup: {0}, ex
2d220 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a  ception: {1}",..
2d230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d240 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20          handle, 
2d250 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
2d260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d270 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2d280 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2d290 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2d2b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2d2c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d2d0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
2d2e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2d2f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2d300 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2d310 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2d320 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2d330 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d340 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d350 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2d360 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29  andleAsInvalid()
2d370 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2d380 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d390 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    }..#if DEBUG..
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d3b0 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65  rn false;..#else
2d3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2d3d0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
2d3e0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
2d3f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d440 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  ....#if COUNT_HA
2d450 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75  NDLE..        pu
2d460 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65  blic int WasRele
2d470 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20  asedOk()..      
2d480 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d490 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
2d4a0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
2d4b0 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
2d4c0 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  upCount);..     
2d4d0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2d4e0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d530 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2d540 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
2d550 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
2d560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d570 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
2d580 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2d590 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2d5a0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2d5b0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2d5c0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2d5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2d5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d5f0 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
2d600 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
2d610 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2d620 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d630 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d640 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d690 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
2d6a0 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
2d6b0 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
2d6c0 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
2d6d0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2d6e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2d6f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2d700 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2d710 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2d720 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d730 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d740 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
2d750 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
2d760 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2d770 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
2d780 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d790 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7e0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2d7f0 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
2d800 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
2d810 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
2d820 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
2d830 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
2d840 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74 73 2e  te blob objects.
2d850 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2d860 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2d870 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a 20 43  teBlobHandle : C
2d880 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20  riticalHandle.. 
2d890 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2d8a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2d8b0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ORK..        int
2d8c0 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
2d8d0 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d  bject syncRoot =
2d8e0 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
2d8f0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
2d900 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d950 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
2d960 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2d970 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20  dle cnn;....    
2d980 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d9d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
2d9e0 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70  atic implicit op
2d9f0 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51  erator IntPtr(SQ
2da00 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 62  LiteBlobHandle b
2da10 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lob)..        {.
2da20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2da30 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (blob != null)..
2da40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2da50 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2da60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2da70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2da80 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52 6f 6f  ck (blob.syncRoo
2da90 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2daa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dac0 20 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 2e 68     return blob.h
2dad0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2dae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2daf0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2db00 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2db10 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2db20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2db80 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2db90 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53 51 4c  teBlobHandle(SQL
2dba0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2dbb0 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
2dbc0 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 20  blob)..         
2dbd0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2dbe0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2dbf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2dc00 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2dc10 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2dc20 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2dc30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2dc40 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2dc50 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
2dc60 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2dc70 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20 20  andle(blob);..  
2dc80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2dc90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2dca0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2dcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2dcf0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
2dd00 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 29 0d  iteBlobHandle().
2dd10 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
2dd20 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
2dd30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2dd40 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2dd50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2dd60 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
2dd70 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
2dd80 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  lobCount);..#end
2dd90 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
2dda0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
2de00 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
2de10 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
2de20 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
2de30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2de40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2de50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2de60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de80 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64  IntPtr localHand
2de90 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64  le = Interlocked
2dea0 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20  .Exchange(..    
2deb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dec0 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50  ref handle, IntP
2ded0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20  tr.Zero);....   
2dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2def0 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20  (localHandle != 
2df00 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2df10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f    SQLiteBase.Clo
2df30 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63 61  seBlob(cnn, loca
2df40 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66  lHandle);....#if
2df50 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2df60 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2df70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2df80 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2df90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2dfb0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
2dfc0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
2dfd0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dff0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2e000 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2e010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e020 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
2e030 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  ob: {0}", localH
2e040 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
2e050 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2e060 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e070 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e090 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e0a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
2e0b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2e0c0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2e0d0 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
2e0e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2e100 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
2e110 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2e120 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
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 20 53 51 4c 69 74 65 42 61          SQLiteBa
2e150 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e  se.CloseBlob(cnn
2e160 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
2e190 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2e1c0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2e1d0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2e1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e1f0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
2e200 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2e210 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b  Data.blobCount);
2e220 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45  ..#endif..#if DE
2e230 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
2e240 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2e250 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2e260 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
2e270 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2e280 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2e290 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2e2a0 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
2e2b0 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
2e2c0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2e2d0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29  SQLiteException)
2e2e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2e2f0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
2e300 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2e310 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e330 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2e340 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e350 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2e360 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2e370 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2e380 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2e3a0 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2e3b0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20      "CloseBlob: 
2e3e0 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
2e3f0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
2e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
2e410 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
2e420 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2e430 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e440 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2e450 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2e460 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e470 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2e480 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e490 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
2e4a0 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
2e4b0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e4c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e4d0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2e4e0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2e4f0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2e500 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e520 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
2e530 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
2e540 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e550 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
2e560 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
2e570 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2e580 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2e590 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2e5a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2e5b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e600 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
2e610 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2e620 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
2e630 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
2e640 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2e650 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2e660 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2e670 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2e680 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
2e690 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2e6a0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2e700 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2e710 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
2e720 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e730 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2e740 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2e750 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2e760 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2e770 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2e780 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2e790 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2e7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e7b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e7c0 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
2e7d0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2e7e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2e7f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e800 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e810 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2e860 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2e870 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2e880 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
2e890 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2e8a0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2e8b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2e8c0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2e8d0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2e8e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e8f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e900 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
2e910 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
2e920 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e930 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2e940 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2e950 69 6f 6e 0d 0a 7d 0d 0a                          ion..}..