System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 49d9feeebdfa361725dffb487ad410c89c544751:


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 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7840: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74       /// This st
7850: 72 75 63 74 75 72 65 20 69 73 20 75 73 65 64 20  ructure is used 
7860: 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
7870: 50 4f 53 49 58 20 6f 70 65 72 61 74 69 6e 67 20  POSIX operating 
7880: 73 79 73 74 65 6d 73 0d 0a 20 20 20 20 20 20 2f  systems..      /
7890: 2f 2f 20 74 6f 20 73 74 6f 72 65 20 69 6e 66 6f  // to store info
78a0: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
78b0: 65 20 63 75 72 72 65 6e 74 20 6d 61 63 68 69 6e  e current machin
78c0: 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  e, including the
78d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 75 6d 61  ..      /// huma
78e0: 6e 20 72 65 61 64 61 62 6c 65 20 6e 61 6d 65 20  n readable name 
78f0: 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  of the operating
7900: 20 73 79 73 74 65 6d 20 61 73 20 77 65 6c 6c 20   system as well 
7910: 61 73 20 74 68 61 74 20 6f 66 0d 0a 20 20 20 20  as that of..    
7920: 20 20 2f 2f 2f 20 74 68 65 20 75 6e 64 65 72 6c    /// the underl
7930: 79 69 6e 67 20 68 61 72 64 77 61 72 65 2e 0d 0a  ying hardware...
7940: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
7960: 72 6e 61 6c 20 73 74 72 75 63 74 20 75 74 73 6e  rnal struct utsn
7970: 61 6d 65 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ame..      {..  
7980: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
7990: 74 72 69 6e 67 20 73 79 73 6e 61 6d 65 3b 20 20  tring sysname;  
79a0: 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 69 73 20  /* Name of this 
79b0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
79c0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
79d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79e0: 20 20 20 20 20 20 2a 20 74 68 65 20 6f 70 65 72        * the oper
79f0: 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 2a 2f  ating system. */
7a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
7a10: 69 63 20 73 74 72 69 6e 67 20 6e 6f 64 65 6e 61  ic string nodena
7a20: 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74  me; /* Name of t
7a30: 68 69 73 20 6e 6f 64 65 20 77 69 74 68 69 6e 20  his node within 
7a40: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
7a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a60: 20 20 20 20 20 20 20 20 2a 20 63 6f 6d 6d 75 6e          * commun
7a70: 69 63 61 74 69 6f 6e 73 20 6e 65 74 77 6f 72 6b  ications network
7a80: 20 74 6f 20 77 68 69 63 68 0d 0a 20 20 20 20 20   to which..     
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
7ab0: 74 68 69 73 20 6e 6f 64 65 20 69 73 20 61 74 74  this node is att
7ac0: 61 63 68 65 64 2c 20 69 66 20 61 6e 79 2e 20 2a  ached, if any. *
7ad0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
7ae0: 6c 69 63 20 73 74 72 69 6e 67 20 72 65 6c 65 61  lic string relea
7af0: 73 65 3b 20 20 2f 2a 20 43 75 72 72 65 6e 74 20  se;  /* Current 
7b00: 72 65 6c 65 61 73 65 20 6c 65 76 65 6c 20 6f 66  release level of
7b10: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20   this..         
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b30: 20 20 20 20 20 20 20 20 20 20 2a 20 69 6d 70 6c            * impl
7b40: 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 2a 2f 0d 0a  ementation. */..
7b50: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
7b60: 20 73 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 3b   string version;
7b70: 20 20 2f 2a 20 43 75 72 72 65 6e 74 20 76 65 72    /* Current ver
7b80: 73 69 6f 6e 20 6c 65 76 65 6c 20 6f 66 20 74 68  sion level of th
7b90: 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  is..            
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bb0: 20 20 20 20 20 20 20 2a 20 72 65 6c 65 61 73 65         * release
7bc0: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  . */..          
7bd0: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 6d 61  public string ma
7be0: 63 68 69 6e 65 3b 20 20 2f 2a 20 4e 61 6d 65 20  chine;  /* Name 
7bf0: 6f 66 20 74 68 65 20 68 61 72 64 77 61 72 65 20  of the hardware 
7c00: 74 79 70 65 20 6f 6e 0d 0a 20 20 20 20 20 20 20  type on..       
7c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 77 68              * wh
7c30: 69 63 68 20 74 68 65 20 73 79 73 74 65 6d 20 69  ich the system i
7c40: 73 20 72 75 6e 6e 69 6e 67 2e 20 2a 2f 0d 0a 20  s running. */.. 
7c50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7cb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7cc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
7cd0: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 70 61   structure is pa
7ce0: 73 73 65 64 20 64 69 72 65 63 74 6c 79 20 74 6f  ssed directly to
7cf0: 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65   the P/Invoke me
7d00: 74 68 6f 64 20 74 6f 0d 0a 20 20 20 20 20 20 2f  thod to..      /
7d10: 2f 2f 20 6f 62 74 61 69 6e 20 74 68 65 20 69 6e  // obtain the in
7d20: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
7d30: 74 68 65 20 63 75 72 72 65 6e 74 20 6d 61 63 68  the current mach
7d40: 69 6e 65 2c 20 69 6e 63 6c 75 64 69 6e 67 0d 0a  ine, including..
7d50: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 68 75        /// the hu
7d60: 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 6e 61 6d  man readable nam
7d70: 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69  e of the operati
7d80: 6e 67 20 73 79 73 74 65 6d 20 61 73 20 77 65 6c  ng system as wel
7d90: 6c 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l as..      /// 
7da0: 74 68 61 74 20 6f 66 20 74 68 65 20 75 6e 64 65  that of the unde
7db0: 72 6c 79 69 6e 67 20 68 61 72 64 77 61 72 65 2e  rlying hardware.
7dc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
7dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53  mmary>..      [S
7de0: 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
7df0: 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
7e00: 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76 61  l)]..      priva
7e10: 74 65 20 73 74 72 75 63 74 20 75 74 73 6e 61 6d  te struct utsnam
7e20: 65 5f 69 6e 74 65 72 6f 70 0d 0a 20 20 20 20 20  e_interop..     
7e30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
7e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
7e50: 4f 54 45 3a 20 54 68 65 20 66 6f 6c 6c 6f 77 69  OTE: The followi
7e60: 6e 67 20 73 74 72 69 6e 67 20 66 69 65 6c 64 73  ng string fields
7e70: 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65 73 65   should be prese
7e80: 6e 74 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 20  nt in..         
7e90: 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73 20 62   //       this b
7ea0: 75 66 66 65 72 2c 20 61 6c 6c 20 6f 66 20 77 68  uffer, all of wh
7eb0: 69 63 68 20 77 69 6c 6c 20 62 65 20 7a 65 72 6f  ich will be zero
7ec0: 2d 74 65 72 6d 69 6e 61 74 65 64 3a 0d 0a 20 20  -terminated:..  
7ed0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7ee0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20        //        
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79                sy
7f00: 73 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  sname..         
7f10: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20   //             
7f20: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 6e 61 6d           nodenam
7f30: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f50: 20 20 20 20 20 72 65 6c 65 61 73 65 0d 0a 20 20       release..  
7f60: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f80: 76 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20  version..       
7f90: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20     //           
7fa0: 20 20 20 20 20 20 20 20 20 20 20 6d 61 63 68 69             machi
7fb0: 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ne..          //
7fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 4d 61 72  ..          [Mar
7fd0: 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64  shalAs(Unmanaged
7fe0: 54 79 70 65 2e 42 79 56 61 6c 41 72 72 61 79 2c  Type.ByValArray,
7ff0: 20 53 69 7a 65 43 6f 6e 73 74 20 3d 20 34 30 39   SizeConst = 409
8000: 36 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 70  6)]..          p
8010: 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 62 75 66  ublic byte[] buf
8020: 66 65 72 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  fer;..      }...
8030: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
8090: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
80a0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
80b0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
80c0: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
80d0: 74 69 76 65 20 55 6e 69 78 20 75 6e 61 6d 65 0d  tive Unix uname.
80e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
80f0: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f  ion.  See the PO
8100: 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SIX documentatio
8110: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
8120: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
8130: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
8140: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
8150: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8160: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
8170: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  e">..      /// S
8180: 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e  tructure contain
8190: 69 6e 67 20 61 20 70 72 65 61 6c 6c 6f 63 61 74  ing a preallocat
81a0: 65 64 20 62 79 74 65 20 62 75 66 66 65 72 20 74  ed byte buffer t
81b0: 6f 20 66 69 6c 6c 20 77 69 74 68 20 74 68 65 0d  o fill with the.
81c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 71 75 65  .      /// reque
81d0: 73 74 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  sted information
81e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
81f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
8200: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
8210: 20 20 2f 2f 2f 20 5a 65 72 6f 20 66 6f 72 20 73    /// Zero for s
8220: 75 63 63 65 73 73 20 61 6e 64 20 6c 65 73 73 20  uccess and less 
8230: 74 68 61 6e 20 7a 65 72 6f 20 75 70 6f 6e 20 66  than zero upon f
8240: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
8250: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23  // </returns>..#
8260: 69 66 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f  if NET_STANDARD_
8270: 32 30 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d  20..      [DllIm
8280: 70 6f 72 74 28 22 6c 69 62 63 22 2c 0d 0a 23 65  port("libc",..#e
8290: 6c 73 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49  lse..      [DllI
82a0: 6d 70 6f 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61  mport("__Interna
82b0: 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l",..#endif..   
82c0: 20 20 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f         CallingCo
82d0: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
82e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
82f0: 63 6c 29 5d 0d 0a 20 20 20 20 20 20 70 72 69 76  cl)]..      priv
8300: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
8310: 6e 20 69 6e 74 20 75 6e 61 6d 65 28 6f 75 74 20  n int uname(out 
8320: 75 74 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 20  utsname_interop 
8330: 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
8340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
8390: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
83a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
83b0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
83c0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
83d0: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
83e0: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
83f0: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
8400: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
8410: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
8420: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
8430: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
8440: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
8450: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8460: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8470: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
8480: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
8490: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
84a0: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
84b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
84c0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
84d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
84e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
84f0: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
8500: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
8510: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
8520: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
8530: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
8540: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
8550: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
8560: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
8570: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
8580: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8590: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
85a0: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
85b0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
85c0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
85d0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
85e0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
85f0: 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44 41  ..#if NET_STANDA
8600: 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44 6c  RD_20..      [Dl
8610: 6c 49 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22 2c  lImport("libdl",
8620: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
8630: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
8640: 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  ernal",..#endif.
8650: 0a 20 20 20 20 20 20 20 20 20 20 45 6e 74 72 79  .          Entry
8660: 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22  Point = "dlopen"
8670: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c  ,..          Cal
8680: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
8690: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
86a0: 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
86b0: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69  t = CharSet.Ansi
86c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  ,..          Bes
86d0: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
86e0: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
86f0: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
8700: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65  e,..          Se
8710: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75  tLastError = tru
8720: 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  e)]..      inter
8730: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
8740: 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28  n IntPtr dlopen(
8750: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
8760: 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20   int mode);.... 
8770: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
87c0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
87d0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
87e0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
87f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
8800: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
8810: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
8820: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a  nction calls laz
8830: 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ily...      /// 
8840: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8850: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
8860: 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d   int RTLD_LAZY =
8870: 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x1;....      /
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 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
88d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
88e0: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
88f0: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
8900: 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61  bind function ca
8910: 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  lls immediately.
8920: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8930: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
8940: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
8950: 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b   RTLD_NOW = 0x2;
8960: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
8970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89b0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
89c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
89d0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
89e0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20   dlopen(), make 
89f0: 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79  symbols globally
8a00: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
8a10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8a20: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
8a30: 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  l const int RTLD
8a40: 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b  _GLOBAL = 0x100;
8a50: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
8a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8aa0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
8ab0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8ac0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
8ad0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73   dlopen(), oppos
8ae0: 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42  ite of RTLD_GLOB
8af0: 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  AL, and the defa
8b00: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
8b10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8b20: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
8b30: 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20   int RTLD_LOCAL 
8b40: 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20  = 0x000;....    
8b50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
8ba0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8bb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
8bc0: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
8bd0: 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20  ), the defaults 
8be0: 75 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  used by this cla
8bf0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
8c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8c10: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
8c20: 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54  int RTLD_DEFAULT
8c30: 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54   = RTLD_NOW | RT
8c40: 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 20 20  LD_GLOBAL;..    
8c50: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8c60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8cb0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
8cc0: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
8cd0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8ce0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
8cf0: 65 73 65 20 61 72 65 20 74 68 65 20 63 68 61 72  ese are the char
8d00: 61 63 74 65 72 73 20 75 73 65 64 20 74 6f 20 73  acters used to s
8d10: 65 70 61 72 61 74 65 20 74 68 65 20 73 74 72 69  eparate the stri
8d20: 6e 67 20 66 69 65 6c 64 73 20 77 69 74 68 69 6e  ng fields within
8d30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
8d40: 72 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72  raw buffer retur
8d50: 6e 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20  ned by the <see 
8d60: 63 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20  cref="uname" /> 
8d70: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e  P/Invoke method.
8d80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8d90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
8da0: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
8db0: 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 75 74 73  donly char[] uts
8dc0: 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73 20 3d  NameSeparators =
8dd0: 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a 20 20 20 20   { '\0' };..    
8de0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8df0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8e40: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
8e50: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
8e60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8e70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
8e80: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
8e90: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
8ea0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
8eb0: 75 6e 61 6d 65 22 20 2f 3e 20 50 2f 49 6e 76 6f  uname" /> P/Invo
8ec0: 6b 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ke..      /// me
8ed0: 74 68 6f 64 20 74 68 61 74 20 65 78 74 72 61 63  thod that extrac
8ee0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
8ef0: 68 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  he human readabl
8f00: 65 20 73 74 72 69 6e 67 73 20 66 72 6f 6d 0d 0a  e strings from..
8f10: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 61        /// the ra
8f20: 77 20 62 75 66 66 65 72 2e 0d 0a 20 20 20 20 20  w buffer...     
8f30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8f40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
8f50: 6d 20 6e 61 6d 65 3d 22 75 74 73 4e 61 6d 65 22  m name="utsName"
8f60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
8f70: 73 20 73 74 72 75 63 74 75 72 65 2c 20 77 68 69  s structure, whi
8f80: 63 68 20 63 6f 6e 74 61 69 6e 73 20 73 74 72 69  ch contains stri
8f90: 6e 67 73 2c 20 77 69 6c 6c 20 62 65 20 66 69 6c  ngs, will be fil
8fa0: 6c 65 64 20 62 61 73 65 64 20 6f 6e 20 74 68 65  led based on the
8fb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
8fc0: 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 72   placed in the r
8fd0: 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72 6e  aw buffer return
8fe0: 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  ed by the <see c
8ff0: 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 0d 0a  ref="uname" />..
9000: 20 20 20 20 20 20 2f 2f 2f 20 50 2f 49 6e 76 6f        /// P/Invo
9010: 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ke method...    
9020: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9030: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
9040: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
9050: 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
9060: 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  cess; otherwise,
9070: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
9080: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9090: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
90a0: 74 69 63 20 62 6f 6f 6c 20 47 65 74 4f 73 56 65  tic bool GetOsVe
90b0: 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20  rsionInfo(..    
90c0: 20 20 20 20 20 20 72 65 66 20 75 74 73 6e 61 6d        ref utsnam
90d0: 65 20 75 74 73 4e 61 6d 65 0d 0a 20 20 20 20 20  e utsName..     
90e0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
90f0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
9100: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9110: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
9120: 6d 65 5f 69 6e 74 65 72 6f 70 20 75 74 66 4e 61  me_interop utfNa
9130: 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a 0d 0a 20 20  meInterop;....  
9140: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9150: 75 6e 61 6d 65 28 6f 75 74 20 75 74 66 4e 61 6d  uname(out utfNam
9160: 65 49 6e 74 65 72 6f 70 29 20 3c 20 30 29 0d 0a  eInterop) < 0)..
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
9190: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
91a0: 20 69 66 20 28 75 74 66 4e 61 6d 65 49 6e 74 65   if (utfNameInte
91b0: 72 6f 70 2e 62 75 66 66 65 72 20 3d 3d 20 6e 75  rop.buffer == nu
91c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
91d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
91e0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
91f0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 75 66        string buf
9200: 66 65 72 41 73 53 74 72 69 6e 67 20 3d 20 45 6e  ferAsString = En
9210: 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65 74 53  coding.UTF8.GetS
9220: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
9230: 20 20 20 20 20 20 20 20 20 20 75 74 66 4e 61 6d            utfNam
9240: 65 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 29  eInterop.buffer)
9250: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9260: 20 20 20 69 66 20 28 28 62 75 66 66 65 72 41 73     if ((bufferAs
9270: 53 74 72 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 20  String == null) 
9280: 7c 7c 20 28 75 74 73 4e 61 6d 65 53 65 70 61 72  || (utsNameSepar
9290: 61 74 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ators == null)).
92a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
92b0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
92c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
92d0: 20 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67    bufferAsString
92e0: 20 3d 20 62 75 66 66 65 72 41 73 53 74 72 69 6e   = bufferAsStrin
92f0: 67 2e 54 72 69 6d 28 75 74 73 4e 61 6d 65 53 65  g.Trim(utsNameSe
9300: 70 61 72 61 74 6f 72 73 29 3b 0d 0a 0d 0a 20 20  parators);....  
9310: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9320: 6e 67 5b 5d 20 70 61 72 74 73 20 3d 20 62 75 66  ng[] parts = buf
9330: 66 65 72 41 73 53 74 72 69 6e 67 2e 53 70 6c 69  ferAsString.Spli
9340: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
9350: 20 20 20 20 20 20 75 74 73 4e 61 6d 65 53 65 70        utsNameSep
9360: 61 72 61 74 6f 72 73 2c 20 53 74 72 69 6e 67 53  arators, StringS
9370: 70 6c 69 74 4f 70 74 69 6f 6e 73 2e 52 65 6d 6f  plitOptions.Remo
9380: 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 29 3b  veEmptyEntries);
9390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
93a0: 20 20 69 66 20 28 70 61 72 74 73 20 3d 3d 20 6e    if (parts == n
93b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
93c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
93d0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
93e0: 20 20 20 20 20 20 20 75 74 73 6e 61 6d 65 20 6c         utsname l
93f0: 6f 63 61 6c 55 74 73 4e 61 6d 65 20 3d 20 6e 65  ocalUtsName = ne
9400: 77 20 75 74 73 6e 61 6d 65 28 29 3b 0d 0a 0d 0a  w utsname();....
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
9420: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
9430: 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1)..          
9440: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
9450: 4e 61 6d 65 2e 73 79 73 6e 61 6d 65 20 3d 20 70  Name.sysname = p
9460: 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  arts[0];....    
9470: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
9480: 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 32 29  rts.Length >= 2)
9490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
94a0: 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65      localUtsName
94b0: 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20 70 61 72 74  .nodename = part
94c0: 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[1];....       
94d0: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
94e0: 2e 4c 65 6e 67 74 68 20 3e 3d 20 33 29 0d 0a 20  .Length >= 3).. 
94f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9500: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 72 65   localUtsName.re
9510: 6c 65 61 73 65 20 3d 20 70 61 72 74 73 5b 32 5d  lease = parts[2]
9520: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9530: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
9540: 67 74 68 20 3e 3d 20 34 29 0d 0a 20 20 20 20 20  gth >= 4)..     
9550: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
9560: 61 6c 55 74 73 4e 61 6d 65 2e 76 65 72 73 69 6f  alUtsName.versio
9570: 6e 20 3d 20 70 61 72 74 73 5b 33 5d 3b 0d 0a 0d  n = parts[3];...
9580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
9590: 66 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20  f (parts.Length 
95a0: 3e 3d 20 35 29 0d 0a 20 20 20 20 20 20 20 20 20  >= 5)..         
95b0: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74           localUt
95c0: 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 20 3d 20  sName.machine = 
95d0: 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d 0a 20 20 20  parts[4];....   
95e0: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61             utsNa
95f0: 6d 65 20 3d 20 6c 6f 63 61 6c 55 74 73 4e 61 6d  me = localUtsNam
9600: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
9610: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
9620: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9630: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
9640: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9650: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
9660: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
9670: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9680: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
9690: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
96a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
96b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
96c0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
96d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9710: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
9720: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
9730: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
9740: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69  Static Class (Wi
9750: 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  n32)..  /// <sum
9760: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
9770: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
9780: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
9790: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
97a0: 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20   Win32 APIs...  
97b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
97c0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
97d0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
97e0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
97f0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
9800: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
9810: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
9820: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
9830: 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b  ethodsWin32..  {
9840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
98a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
98b0: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
98c0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
98d0: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
98e0: 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69  ive Win32 LoadLi
98f0: 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
9900: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
9910: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
9920: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
9930: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
9940: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
9950: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
9960: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9970: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9980: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
9990: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
99a0: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
99b0: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
99c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
99d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
99e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
99f0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
9a00: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
9a10: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
9a20: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
9a30: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
9a40: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50  returns>..#if !P
9a50: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
9a60: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
9a70: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e  [DllImport("kern
9a80: 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20  el32",..#else.. 
9a90: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
9aa0: 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64  "coredll",..#end
9ab0: 69 66 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  if.. CallingConv
9ac0: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9ad0: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70  Convention.Winap
9ae0: 69 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  i, CharSet = Cha
9af0: 72 53 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20  rSet.Auto,..#if 
9b00: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
9b10: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
9b20: 20 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70        BestFitMap
9b30: 70 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68  ping = false, Th
9b40: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
9b50: 68 61 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e  har = true,..#en
9b60: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53  dif..          S
9b70: 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72  etLastError = tr
9b80: 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65  ue)]..      inte
9b90: 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
9ba0: 72 6e 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  rn IntPtr LoadLi
9bb0: 62 72 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c  brary(string fil
9bc0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
9bd0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
9c20: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
9c30: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
9c40: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
9c60: 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65   is the P/Invoke
9c70: 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61   method that wra
9c80: 70 73 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ps the native Wi
9c90: 6e 33 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66  n32 GetSystemInf
9ca0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  o..      /// fun
9cb0: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
9cc0: 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69  MSDN documentati
9cd0: 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61  on for full deta
9ce0: 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a  ils on what it..
9cf0: 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d        /// does..
9d00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
9d10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
9d20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79   <param name="sy
9d30: 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20  stemInfo">..    
9d40: 20 20 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d    /// The system
9d50: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72   information str
9d60: 75 63 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c  ucture to be fil
9d70: 6c 65 64 20 69 6e 20 62 79 20 74 68 65 20 66 75  led in by the fu
9d80: 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  nction...      /
9d90: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9da0: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
9db0: 6f 72 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67  oredll", Calling
9dc0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
9dd0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
9de0: 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69  inapi)]..      i
9df0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9e00: 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79  xtern void GetSy
9e10: 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53  stemInfo(out SYS
9e20: 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49  TEM_INFO systemI
9e30: 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  nfo);....      /
9e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
9e90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9ea0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e       /// This en
9eb0: 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69  umeration contai
9ec0: 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20  ns the possible 
9ed0: 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70  values for the p
9ee0: 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20  rocessor..      
9ef0: 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72 65  /// architecture
9f00: 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79   field of the sy
9f10: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
9f20: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
9f30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9f40: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
9f50: 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72  l enum Processor
9f60: 41 72 63 68 69 74 65 63 74 75 72 65 20 3a 20 75  Architecture : u
9f70: 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a  short /* COMPAT:
9f80: 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20   Win32. */..    
9f90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49    {..          I
9fa0: 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20  ntel = 0,..     
9fb0: 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a       MIPS = 1,..
9fc0: 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 20            Alpha 
9fd0: 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2,..          
9fe0: 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20  PowerPC = 3,..  
9ff0: 20 20 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c          SHx = 4,
a000: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52 4d 20  ..          ARM 
a010: 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 5,..          
a020: 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20  IA64 = 6,..     
a030: 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37       Alpha64 = 7
a040: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49  ,..          MSI
a050: 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20  L = 8,..        
a060: 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20    AMD64 = 9,..  
a070: 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f          IA32_on_
a080: 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20  Win64 = 10,..   
a090: 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d         Unknown =
a0a0: 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d   0xFFFF..      }
a0b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a100: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a110: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a120: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
a130: 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f  re contains info
a140: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
a150: 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74  e current comput
a160: 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  er. This..      
a170: 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65  /// includes the
a180: 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c   processor type,
a190: 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f   page size, memo
a1a0: 72 79 20 61 64 64 72 65 73 73 65 73 2c 20 65 74  ry addresses, et
a1b0: 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  c...      /// </
a1c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a1d0: 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
a1e0: 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
a1f0: 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  ial)]..      int
a200: 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53  ernal struct SYS
a210: 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20  TEM_INFO..      
a220: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  {..          pub
a230: 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63  lic ProcessorArc
a240: 68 69 74 65 63 74 75 72 65 20 77 50 72 6f 63 65  hitecture wProce
a250: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
a260: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  ;..          pub
a270: 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65 73 65  lic ushort wRese
a280: 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  rved; /* NOT USE
a290: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
a2a0: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61  public uint dwPa
a2b0: 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55  geSize; /* NOT U
a2c0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
a2d0: 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20    public IntPtr 
a2e0: 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61  lpMinimumApplica
a2f0: 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20  tionAddress; /* 
a300: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
a310: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e         public In
a320: 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70  tPtr lpMaximumAp
a330: 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73  plicationAddress
a340: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
a350: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
a360: 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76 65  ic uint dwActive
a370: 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f  ProcessorMask; /
a380: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
a390: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
a3a0: 75 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50  uint dwNumberOfP
a3b0: 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f  rocessors; /* NO
a3c0: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
a3d0: 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74       public uint
a3e0: 20 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65   dwProcessorType
a3f0: 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f  ; /* NOT USED */
a400: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
a410: 69 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61  ic uint dwAlloca
a420: 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b  tionGranularity;
a430: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
a440: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
a450: 63 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73  c ushort wProces
a460: 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54  sorLevel; /* NOT
a470: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
a480: 20 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72      public ushor
a490: 74 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69  t wProcessorRevi
a4a0: 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  sion; /* NOT USE
a4b0: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  D */..      }..#
a4c0: 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65  endif..  }..  #e
a4d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f  ndregion....  //
a4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
a530: 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67   #region Unmanag
a540: 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f  ed Interop Metho
a550: 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20  ds Static Class 
a560: 28 53 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20  (SQLite)..  /// 
a570: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
a580: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
a590: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
a5a0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
a5b0: 74 69 76 65 20 53 51 4c 69 74 65 20 41 50 49 73  tive SQLite APIs
a5c0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
a5d0: 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
a5e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
a5f0: 4f 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73  ORK..  [Suppress
a600: 55 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63  UnmanagedCodeSec
a610: 75 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a  urity]..#endif..
a620: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a630: 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61  c class UnsafeNa
a640: 74 69 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b  tiveMethods..  {
a650: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 63  ..      public c
a660: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 78 63 65  onst string Exce
a670: 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d  ptionMessageForm
a680: 61 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  at =..          
a690: 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
a6a0: 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74  n in \"{0}\" met
a6b0: 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20  hod: {1}";....  
a6c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
a710: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53  .      #region S
a720: 68 61 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c  hared Native SQL
a730: 69 74 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d  ite Library Pre-
a740: 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20  Loading Code..  
a750: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
a760: 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
a770: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a780: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
a790: 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e  e file extension
a7a0: 20 75 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69   used for dynami
a7b0: 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73  c link libraries
a7c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a7d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
a7e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
a7f0: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c  adonly string Dl
a800: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  lFileExtension =
a810: 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20   ".dll";....    
a820: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
a870: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a880: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
a890: 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75  file extension u
a8a0: 73 65 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20  sed for the XML 
a8b0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
a8c0: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
a8d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a8e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
a8f0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
a900: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
a910: 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b  ion = ".config";
a920: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a970: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a980: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a990: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
a9a0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20  name of the XML 
a9b0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
a9c0: 6c 65 20 73 70 65 63 69 66 69 63 20 74 6f 20 74  le specific to t
a9d0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79  he..      /// Sy
a9e0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
a9f0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
aa00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
aa10: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
aa20: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
aa30: 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67  string XmlConfig
aa40: 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20  FileName =..    
aa50: 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73        typeof(Uns
aa60: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
aa70: 29 2e 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c  ).Namespace + Dl
aa80: 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b  lFileExtension +
aa90: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66  ..          Conf
aaa0: 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b  igFileExtension;
aab0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
aac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
ab10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ab20: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
ab30: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 72 69  XML configuratri
ab40: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74 68  on file token th
ab50: 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61  at will be repla
ab60: 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ced with..      
ab70: 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65  /// the qualifie
ab80: 64 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69  d path to the di
ab90: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
aba0: 6e 67 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ng the XML confi
abb0: 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  guration..      
abc0: 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  /// file...     
abd0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
abe0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
abf0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
ac00: 74 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 44  tring XmlConfigD
ac10: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d  irectoryToken =.
ac20: 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72 65  .          "%Pre
ac30: 4c 6f 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43 6f  LoadSQLite_XmlCo
ac40: 6e 66 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b  nfigDirectory%";
ac50: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
ac60: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
ac70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acb0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
acc0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
acd0: 6f 6e 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f  onstants (Deskto
ace0: 70 20 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79  p Framework Only
acf0: 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  )..#if !PLATFORM
ad00: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
ad10: 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  K..      /// <su
ad20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ad30: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 65 6e  / This is the en
ad40: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
ad50: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
ad60: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
ad70: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
ad80: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
ad90: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
ada0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
adb0: 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  is assembly...  
adc0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
add0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
ade0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
adf0: 79 20 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c  y string Assembl
ae00: 79 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20  yDirectoryToken 
ae10: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
ae20: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73 73  reLoadSQLite_Ass
ae30: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 25 22  emblyDirectory%"
ae40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
aea0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
aeb0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
aec0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
aed0: 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74  iable token that
aee0: 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65   will be replace
aef0: 64 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  d with an..     
af00: 20 2f 2f 2f 20 61 62 62 72 65 76 69 61 74 69 6f   /// abbreviatio
af10: 6e 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20  n of the target 
af20: 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
af30: 75 74 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69  ute value associ
af40: 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
af50: 20 2f 2f 2f 20 74 68 69 73 20 61 73 73 65 6d 62   /// this assemb
af60: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
af70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
af80: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
af90: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
afa0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54  TargetFrameworkT
afb0: 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  oken =..        
afc0: 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74    "%PreLoadSQLit
afd0: 65 5f 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  e_TargetFramewor
afe0: 6b 25 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  k%";..#endif..  
aff0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
b000: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
b060: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
b070: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
b080: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
b090: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
b0a0: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65  d to protect the
b0b0: 20 73 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e   static _SQLiteN
b0c0: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
b0d0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame,..      /// 
b0e0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
b0f0: 75 6c 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70  uleHandle, and p
b100: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b110: 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69  turePlatforms fi
b120: 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  elds...      ///
b130: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b140: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b150: 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63  c readonly objec
b160: 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74  t staticSyncRoot
b170: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
b180: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b1e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b1f0: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
b200: 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 61  re is used to ca
b210: 63 68 65 20 74 68 65 20 68 75 6d 61 6e 20 72 65  che the human re
b220: 61 64 61 62 6c 65 20 73 74 72 69 6e 67 73 20 65  adable strings e
b230: 78 74 72 61 63 74 65 64 0d 0a 20 20 20 20 20 20  xtracted..      
b240: 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 72 61 77  /// from the raw
b250: 20 62 75 66 66 65 72 20 70 61 73 73 65 64 20 74   buffer passed t
b260: 6f 20 74 68 65 20 75 6e 61 6d 65 20 50 2f 49 6e  o the uname P/In
b270: 76 6f 6b 65 20 6d 65 74 68 6f 64 2e 20 20 49 74  voke method.  It
b280: 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
b290: 2f 2f 2f 20 75 73 65 64 20 6f 6e 20 50 4f 53 49  /// used on POSI
b2a0: 58 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  X operating syst
b2b0: 65 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ems...      /// 
b2c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b2d0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b2e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
b2f0: 68 6f 64 73 50 6f 73 69 78 2e 75 74 73 6e 61 6d  hodsPosix.utsnam
b300: 65 20 75 74 73 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  e utsName;....  
b310: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
b360: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b370: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
b380: 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73 74  is dictionary st
b390: 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e 67  ores the mapping
b3a0: 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65 73  s between proces
b3b0: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
b3c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
b3d0: 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e  s and platform n
b3e0: 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61 70  ames.  These map
b3f0: 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75 73  pings are now us
b400: 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20  ed for two..    
b410: 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20    /// purposes. 
b420: 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72 65   First, they are
b430: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
b440: 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d 62  ne if the assemb
b450: 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f  ly code..      /
b460: 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20 62  // base should b
b470: 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f  e used instead o
b480: 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20  f the location, 
b490: 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74 68  based upon wheth
b4a0: 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f  er one..      //
b4b0: 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65  / or more of the
b4c0: 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65 63   named sub-direc
b4d0: 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69 74  tories exist wit
b4e0: 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79  hin the assembly
b4f0: 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   code..      ///
b500: 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20   base.  Second, 
b510: 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74 6f  they are used to
b520: 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64 69   assist in loadi
b530: 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  ng the appropria
b540: 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51  te..      /// SQ
b550: 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73  Lite interop ass
b560: 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20 63  embly into the c
b570: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d  urrent process..
b580: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b590: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
b5a0: 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74  vate static Dict
b5b0: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
b5c0: 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72  tring> processor
b5d0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
b5e0: 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  forms;....      
b5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
b640: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b650: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
b660: 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65 74  s the cached ret
b670: 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74  urn value from t
b680: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
b690: 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65  ee cref="GetAsse
b6a0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
b6b0: 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75  > method -OR- nu
b6c0: 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  ll if that metho
b6d0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 73  d..      /// has
b6e0: 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64 20   never returned 
b6f0: 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a  a valid value...
b700: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
b710: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
b720: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
b730: 67 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79  g cachedAssembly
b740: 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20  Directory;....  
b750: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
b7a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b7b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
b7c0: 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69 73  en this field is
b7d0: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e   non-zero, it in
b7e0: 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20 20  dicates the..   
b7f0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
b800: 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
b810: 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
b820: 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20 74  d was not able t
b830: 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20 20  o locate a..    
b840: 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20 61    /// suitable a
b850: 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
b860: 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  y.  The..      /
b870: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  // <see cref="Ge
b880: 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
b890: 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
b8a0: 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74  hod will check t
b8b0: 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  his..      /// f
b8c0: 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63  ield and skips c
b8d0: 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73  alls into the <s
b8e0: 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65  ee cref="GetAsse
b8f0: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
b900: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  >..      /// met
b910: 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20  hod whenever it 
b920: 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20  is non-zero...  
b930: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b940: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
b950: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f  e static bool no
b960: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
b970: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  y;....      ////
b980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9c0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
b9d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b9e0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
b9f0: 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e 20  e cached return 
ba00: 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a  value from the..
ba10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
ba20: 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69  ref="GetXmlConfi
ba30: 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65  gFileName" /> me
ba40: 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  thod -OR- null i
ba50: 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20  f that method.. 
ba60: 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76       /// has nev
ba70: 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76 61  er returned a va
ba80: 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  lid value...    
ba90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
baa0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
bab0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63 61  static string ca
bac0: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
bad0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
bae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
baf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
bb30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bb40: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74        /// When t
bb50: 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e  his field is non
bb60: 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61  -zero, it indica
bb70: 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  tes the..      /
bb80: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  // <see cref="Ge
bb90: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
bba0: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61  me" /> method wa
bbb0: 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f  s not able to lo
bbc0: 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f  cate a..      //
bbd0: 2f 20 73 75 69 74 61 62 6c 65 20 58 4d 4c 20 63  / suitable XML c
bbe0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
bbf0: 65 20 6e 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20  e name.  The..  
bc00: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
bc10: 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43  f="GetCachedXmlC
bc20: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
bc30: 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 68  > method will ch
bc40: 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20 20  eck this..      
bc50: 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73 6b  /// field and sk
bc60: 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74  ips calls into t
bc70: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
bc80: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
bc90: 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  me" />..      //
bca0: 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76 65  / method wheneve
bcb0: 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  r it is non-zero
bcc0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
bcd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
bce0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
bcf0: 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69  ol noXmlConfigFi
bd00: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23  leName;..      #
bd10: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
bd20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
bd70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
bd80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
bd90: 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68 6f   now, this metho
bda0: 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74  d simply calls t
bdb0: 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65  he Initialize me
bdc0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
bdd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
bde0: 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66 65     static Unsafe
bdf0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29 0d  NativeMethods().
be00: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
be10: 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 29      Initialize()
be20: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
be30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
be40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
be80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
be90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
bea0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69 61  tempts to initia
beb0: 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73 20  lize this class 
bec0: 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74  by pre-loading t
bed0: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
bee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
bef0: 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f 63  ary for the proc
bf00: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
bf10: 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
bf20: 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  t process...    
bf30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
bf40: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
bf50: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69   static void Ini
bf60: 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20  tialize()..     
bf70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
bf80: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
bf90: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
bfa0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  G..          //.
bfb0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
bfc0: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6c  TE: Create the l
bfd0: 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74 69  ists of statisti
bfe0: 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e  cs that will con
bff0: 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tain..          
c000: 2f 2f 20 20 20 20 20 20 20 76 61 72 69 6f 75 73  //       various
c010: 20 63 6f 75 6e 74 73 20 75 73 65 64 20 69 6e 20   counts used in 
c020: 64 65 62 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75  debugging, inclu
c030: 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ding the..      
c040: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d      //       num
c050: 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61 63  ber of times eac
c060: 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20  h setting value 
c070: 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a  has been read...
c080: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c090: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
c0a0: 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d  a.Initialize();.
c0b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
c0c0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c0d0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
c0e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
c0f0: 3a 20 43 68 65 63 6b 20 69 66 20 61 20 64 65 62  : Check if a deb
c100: 75 67 67 65 72 20 6e 65 65 64 73 20 74 6f 20 62  ugger needs to b
c110: 65 20 61 74 74 61 63 68 65 64 20 62 65 66 6f 72  e attached befor
c120: 65 20 64 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20  e doing any..   
c130: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
c140: 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20  real work...    
c150: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c160: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
c170: 73 2e 4d 61 79 62 65 42 72 65 61 6b 49 6e 74 6f  s.MaybeBreakInto
c180: 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23  Debugger();....#
c190: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
c1a0: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
c1b0: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
c1c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c1d0: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
c1e0: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
c1f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
c200: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
c210: 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c   If the "No_PreL
c220: 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69 72  oadSQLite" envir
c230: 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
c240: 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20 20  is set (to..    
c250: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
c260: 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20 61  nything), skip a
c270: 6c 6c 20 6f 66 20 6f 75 72 20 73 70 65 63 69 61  ll of our specia
c280: 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c  l code and simpl
c290: 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20  y return...     
c2a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
c2b0: 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e     if (GetSettin
c2c0: 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f  gValue("No_PreLo
c2d0: 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29  adSQLite", null)
c2e0: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
c2f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
c300: 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
c310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  ....          lo
c320: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
c330: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
c340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c350: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
c360: 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20    // TODO: Make 
c370: 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20 69  sure this list i
c380: 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68 65  s updated if the
c390: 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20   supported..    
c3a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
c3b0: 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
c3c0: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 20  hitecture names 
c3d0: 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20  and/or platform 
c3e0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
c3f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68       //       ch
c400: 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  anges...        
c410: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
c420: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
c430: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
c440: 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75  ePlatforms == nu
c450: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
c460: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c470: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
c480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c490: 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68   NOTE: Create th
c4a0: 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73 73  e map of process
c4b0: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
c4c0: 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
c4d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
c4e0: 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61    to platform na
c4f0: 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73 65  mes using a case
c500: 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74 72  -insensitive str
c510: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
c520: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
c530: 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20 20  comparer...     
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
c550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c560: 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
c570: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
c580: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
c590: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 44             new D
c5a0: 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
c5b0: 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20  , string>(..    
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
c5e0: 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  arer.OrdinalIgno
c5f0: 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  reCase);....    
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
c610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c620: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74      // NOTE: Set
c630: 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20 70  up the list of p
c640: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73  latform names as
c650: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
c660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c670: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73 75   //       the su
c680: 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73 6f  pported processo
c690: 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73 2e  r architectures.
c6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6b0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
c6c0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
c6d0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
c6e0: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38  latforms.Add("x8
c6f0: 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20  6", "Win32");.. 
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c710: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
c720: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
c730: 41 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36  Add("AMD64", "x6
c740: 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4");..          
c750: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
c760: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
c770: 74 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34  tforms.Add("IA64
c780: 22 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a  ", "Itanium");..
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7a0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
c7b0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
c7c0: 2e 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e  .Add("ARM", "Win
c7d0: 43 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  CE");..         
c7e0: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51       }....#if SQ
c7f0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c  LITE_STANDARD ||
c800: 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
c810: 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   || PLATFORM_COM
c820: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23  PACTFRAMEWORK..#
c830: 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56  if PRELOAD_NATIV
c840: 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20  E_LIBRARY..     
c850: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
c860: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55             // BU
c870: 47 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74  GBUG: What about
c880: 20 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69   other applicati
c890: 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20  on domains?..   
c8a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c8c0: 28 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  (_SQLiteNativeMo
c8d0: 64 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e  duleHandle == In
c8e0: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
c8f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
c910: 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
c920: 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
c940: 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
c950: 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75  rchitecture = nu
c960: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
c970: 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f           /* IGNO
c980: 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
c990: 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63 68            Search
c9a0: 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  ForDirectory(.. 
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69 72       ref baseDir
c9d0: 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f 63  ectory, ref proc
c9e0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
c9f0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
ca00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ca20: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
ca30: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
ca40: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
ca50: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
ca60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
ca70: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
ca80: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
ca90: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
caa0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
cab0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
cac0: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
cad0: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
cae0: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
caf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
cb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb10: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
cb20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb30: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
cb40: 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Dll(..          
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65              base
cb60: 44 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65  Directory, proce
cb70: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
cb80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
cb90: 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51           ref _SQ
cba0: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
cbb0: 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbd0: 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69   ref _SQLiteNati
cbe0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29 3b  veModuleHandle);
cbf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cc00: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  }..#endif..#endi
cc10: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
cc20: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cc30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
cc80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cc90: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62 69  .      /// Combi
cca0: 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74 72  nes two path str
ccb0: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
ccc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ccd0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
cce0: 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20 20  me="path1">..   
ccf0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74     /// The first
cd00: 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e   path -OR- null.
cd10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
cd20: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
cd30: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74  <param name="pat
cd40: 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h2">..      /// 
cd50: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68 20  The second path 
cd60: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
cd70: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
cd80: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
cd90: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
cda0: 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74 68  he combined path
cdb0: 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75 6c   string -OR- nul
cdc0: 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68 65  l if both of the
cdd0: 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d 0a   original path..
cde0: 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
cdf0: 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  s are null...   
ce00: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
ce10: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
ce20: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4d   static string M
ce30: 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
ce40: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
ce50: 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20 20  ng path1,..     
ce60: 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74 68       string path
ce70: 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  2..          )..
ce80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ce90: 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d 20     if (path1 != 
cea0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
ceb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
cec0: 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e    if (path2 != n
ced0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
cee0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
cef0: 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74 68  ath.Combine(path
cf00: 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20  1, path2);..    
cf10: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
cf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf30: 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b 0d    return path1;.
cf40: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
cf50: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
cf60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cf70: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
cf80: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
cfa0: 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20 20  eturn path2;..  
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
cfc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cfd0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
cfe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
cff0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d050: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d060: 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73        /// Resets
d070: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
d080: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
d090: 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 2c 20 74  le name value, t
d0a0: 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65 0d  hus forcing the.
d0b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20  .      /// next 
d0c0: 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72 65  call to <see cre
d0d0: 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c 43  f="GetCachedXmlC
d0e0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
d0f0: 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c 79  > method to rely
d100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e  ..      /// upon
d110: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
d120: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
d130: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
d140: 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20 20  to fetch the..  
d150: 20 20 20 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e 66      /// XML conf
d160: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
d170: 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
d180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d190: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
d1a0: 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68 65   void ResetCache
d1b0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
d1c0: 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  me()..      {.. 
d1d0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
d1e0: 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
d1f0: 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
d200: 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
d210: 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  a.IncrementOther
d220: 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65  Count("Method_Re
d230: 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  setCachedXmlConf
d240: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
d250: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
d260: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
d270: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
d280: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
d290: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d2a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
d2b0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
d2c0: 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
d2d0: 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c 43            noXmlC
d2e0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
d2f0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
d300: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
d310: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
d320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d360: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d370: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d380: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
d390: 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20 58  rns the cached X
d3a0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
d3b0: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
d3c0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  he..      /// as
d3d0: 73 65 6d 62 6c 79 20 63 6f 6e 74 61 69 6e 69 6e  sembly containin
d3e0: 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79  g the managed Sy
d3f0: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
d400: 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 69 66 0d   components, if.
d410: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c  .      /// avail
d420: 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61  able.  If the ca
d430: 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ched XML configu
d440: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
d450: 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 0d 0a 20   value is not.. 
d460: 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62       /// availab
d470: 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  le, the <see cre
d480: 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  f="GetXmlConfigF
d490: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
d4a0: 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f  od will..      /
d4b0: 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62  // be used to ob
d4c0: 74 61 69 6e 20 74 68 65 20 58 4d 4c 20 63 6f 6e  tain the XML con
d4d0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
d4e0: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
d4f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d500: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
d510: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
d520: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
d530: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d  n file name -OR-
d540: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
d550: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
d560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64  ..      /// or d
d570: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a  oes not exist...
d580: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
d590: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
d5a0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
d5b0: 67 20 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  g GetCachedXmlCo
d5c0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
d5d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d5e0: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
d5f0: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
d600: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
d610: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
d620: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
d630: 22 4d 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65  "Method_GetCache
d640: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
d650: 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  me");..#endif.. 
d660: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
d670: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
d680: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
d690: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
d6a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d6b0: 20 20 20 69 66 20 28 63 61 63 68 65 64 58 6d 6c     if (cachedXml
d6c0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 21  ConfigFileName !
d6d0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d6e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d6f0: 6e 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  n cachedXmlConfi
d700: 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  gFileName;....  
d710: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d720: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
d730: 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ame)..          
d740: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
d750: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
d760: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
d770: 65 74 75 72 6e 20 47 65 74 58 6d 6c 43 6f 6e 66  eturn GetXmlConf
d780: 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 20  igFileName();.. 
d790: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d7f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d800: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
d810: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
d820: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
d830: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ion file name fo
d840: 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d 0a  r the assembly..
d850: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
d860: 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64  ning the managed
d870: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
d880: 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0d  ite components..
d890: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d8a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d8b0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
d8c0: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
d8d0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
d8e0: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
d8f0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
d900: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
d910: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
d920: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
d930: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
d940: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
d950: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 58  atic string GetX
d960: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
d970: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
d980: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
d990: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
d9a0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
d9b0: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
d9c0: 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
d9d0: 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 58  unt("Method_GetX
d9e0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
d9f0: 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
da00: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
da10: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  n....          s
da20: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 3b  tring directory;
da30: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
da40: 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  ng fileName;....
da50: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
da60: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
da70: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
da80: 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e  ory = AppDomain.
da90: 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61  CurrentDomain.Ba
daa0: 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  seDirectory;..  
dab0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
dac0: 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50   = MaybeCombineP
dad0: 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58  ath(directory, X
dae0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
daf0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
db00: 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28  if (File.Exists(
db10: 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
db20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
db30: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
db40: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
db50: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db70: 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67   cachedXmlConfig
db80: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e  FileName = fileN
db90: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
dba0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
dbb0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
dbc0: 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
dbd0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
dbe0: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
dbf0: 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65 64 41  ory = GetCachedA
dc00: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
dc10: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ();..          f
dc20: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
dc30: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
dc40: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
dc50: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
dc60: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
dc70: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
dc80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
dca0: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
dcb0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
dcc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dcd0: 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58 6d          cachedXm
dce0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
dcf0: 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
dd00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dd20: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
dd30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
dd40: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
dd50: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
dd60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
dd70: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c             noXml
dd80: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
dd90: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
dda0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ddb0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
ddc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ddd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
de20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
de30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e  ..      /// If n
de40: 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63  ecessary, replac
de50: 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64  es all supported
de60: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
de70: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 0d 0a  on file tokens..
de80: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
de90: 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64 20  heir associated 
dea0: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
deb0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
dec0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ded0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
dee0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
def0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20  name of the XML 
df00: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
df10: 6c 65 20 62 65 69 6e 67 20 72 65 61 64 2e 0d 0a  le being read...
df20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
df30: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
df40: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
df50: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  ">..      /// A 
df60: 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65  setting value re
df70: 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20  ad from the XML 
df80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
df90: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
dfa0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
dfb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
dfc0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
dfd0: 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72  e of the <paramr
dfe0: 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20  ef name="value" 
dff0: 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70  /> will all supp
e000: 6f 72 74 65 64 20 58 4d 4c 0d 0a 20 20 20 20 20  orted XML..     
e010: 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
e020: 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 20 72  on file tokens r
e030: 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65 74  eplaced.  No ret
e040: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65 73  urn value is res
e050: 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  erved..      ///
e060: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e 20   to indicate an 
e070: 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65 74  error.  This met
e080: 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c 2e  hod cannot fail.
e090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
e0a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
e0b0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
e0c0: 69 6e 67 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f  ing ReplaceXmlCo
e0d0: 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 0d  nfigFileTokens(.
e0e0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
e0f0: 67 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  g fileName,..   
e100: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
e110: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
e120: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
e130: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
e140: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
e150: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
e160: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e170: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
e180: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
e190: 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
e1a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e1b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
e1c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e1d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
e1f0: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
e200: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
e210: 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  Name(fileName);.
e220: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e230: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
e240: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
e250: 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
e260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e270: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e290: 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
e2a0: 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2c0: 20 20 20 20 20 20 20 20 20 58 6d 6c 43 6f 6e 66           XmlConf
e2d0: 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e  igDirectoryToken
e2e0: 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20  , directory);.. 
e2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e300: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e310: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
e320: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e330: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
e340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e350: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
e360: 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e380: 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
e390: 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
e3b0: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e3c0: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
e3d0: 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
e3f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e400: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e420: 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
e430: 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
e440: 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
e450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e470: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
e480: 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
e490: 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
e4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
e4c0: 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
e4d0: 64 20 74 6f 20 72 65 70 6c 61 63 65 20 58 4d 4c  d to replace XML
e4e0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e500: 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69      "configurati
e510: 6f 6e 20 66 69 6c 65 20 5c 22 7b 30 7d 5c 22 20  on file \"{0}\" 
e520: 74 6f 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a 20  tokens: {1}",.. 
e530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e540: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
e550: 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74  eName, e)); /* t
e560: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
e570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e590: 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5d0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
e5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5f0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
e600: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
e610: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e620: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e630: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e640: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
e650: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
e660: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e6b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
e6c0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
e6d0: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
e6e0: 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
e6f0: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
e700: 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 0d  ting, using the.
e710: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69  .      /// speci
e720: 66 69 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  fied XML configu
e730: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
e740: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e750: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
e760: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e  aram name="fileN
e770: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
e780: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
e790: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
e7a0: 6f 6e 20 66 69 6c 65 20 74 6f 20 72 65 61 64 2e  on file to read.
e7b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
e7c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
e7d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
e7e0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
e7f0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73  he name of the s
e800: 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  etting...      /
e810: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e820: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e830: 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20  me="default">.. 
e840: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
e850: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
e860: 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e 67  d if the setting
e870: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
e880: 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20 20  t explicitly..  
e890: 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f      /// or canno
e8a0: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
e8b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
e8c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
e8d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78 70  <param name="exp
e8e0: 61 6e 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  and">..      ///
e8f0: 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78 70   Non-zero to exp
e900: 61 6e 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e 6d  and any environm
e910: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 72 65 66  ent variable ref
e920: 65 72 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e 65  erences containe
e930: 64 20 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d in..      /// 
e940: 74 68 65 20 73 65 74 74 69 6e 67 20 76 61 6c 75  the setting valu
e950: 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  e to be returned
e960: 2e 20 20 54 68 69 73 20 68 61 73 20 6e 6f 20 65  .  This has no e
e970: 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e 45  ffect on the .NE
e980: 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d  T..      /// Com
e990: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
e9a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
e9b0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
e9c0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e9d0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
e9e0: 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f 52   the setting -OR
e9f0: 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  - the default va
ea00: 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62 79  lue specified by
ea10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
ea20: 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61  amref name="defa
ea30: 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68 61  ult" /> if it ha
ea40: 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65  s not been set e
ea50: 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20  xplicitly or..  
ea60: 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62      /// cannot b
ea70: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
ea80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
ea90: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
eaa0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
eab0: 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65   GetSettingValue
eac0: 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ViaXmlConfigFile
ead0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
eae0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f 2a  ing fileName, /*
eaf0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
eb00: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20    string name,  
eb10: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
eb20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
eb30: 65 66 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f  efault, /* in */
eb40: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
eb50: 20 65 78 70 61 6e 64 20 20 20 20 20 20 2f 2a 20   expand      /* 
eb60: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
eb70: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
eb80: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
eb90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
eba0: 20 20 20 20 20 20 20 69 66 20 28 28 66 69 6c 65         if ((file
ebb0: 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  Name == null) ||
ebc0: 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29   (name == null))
ebd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ebe0: 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
ebf0: 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
ec00: 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65 6e        XmlDocumen
ec10: 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65 77  t document = new
ec20: 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b 0d   XmlDocument();.
ec30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ec40: 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28 66   document.Load(f
ec50: 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72  ileName); /* thr
ec60: 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
ec70: 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e         XmlElemen
ec80: 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75  t element = docu
ec90: 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67 6c  ment.SelectSingl
eca0: 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20  eNode(..        
ecb0: 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72            Helper
ecc0: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
ecd0: 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
ece0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
ecf0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
ed00: 20 20 20 20 20 20 22 2f 63 6f 6e 66 69 67 75 72        "/configur
ed10: 61 74 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e 67  ation/appSetting
ed20: 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d 27  s/add[@key='{0}'
ed30: 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a 20  ]", name)) as.. 
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed50: 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a 20   XmlElement; /* 
ed60: 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
ed70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c            if (el
ed80: 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ement != null)..
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
eda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
edb0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20     string value 
edc0: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
edd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ede0: 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74 72  (element.HasAttr
edf0: 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29 0d  ibute("value")).
ee00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ee10: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 65         value = e
ee20: 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69 62  lement.GetAttrib
ee30: 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d  ute("value");...
ee40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ee50: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
ee60: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c  sNullOrEmpty(val
ee70: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
ee80: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
ee90: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
eea0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eec0: 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a 20 20   if (expand)..  
eed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eee0: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
eef0: 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
ef00: 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
ef10: 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
ef20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ef30: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
ef40: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
ef50: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
ef60: 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66  (value);..#endif
ef70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ef80: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
ef90: 3d 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66  = ReplaceXmlConf
efa0: 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 66 69 6c  igFileTokens(fil
efb0: 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a  eName, value);..
efc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efd0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
efe0: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
eff0: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
f000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f010: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
f020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f030: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
f040: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
f050: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
f060: 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63  RED..          c
f070: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
f080: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
f090: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
f0a0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
f0b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
f0c0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
f0d0: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
f0e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f0f0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
f100: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f110: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
f120: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
f130: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
f140: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
f150: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
f160: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
f170: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
f180: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61    "pre-loader fa
f1b0: 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74 74  iled to get sett
f1c0: 69 6e 67 20 5c 22 7b 30 7d 5c 22 20 76 61 6c 75  ing \"{0}\" valu
f1d0: 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
f1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 72               "fr
f1f0: 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  om XML configura
f200: 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 31 7d 5c  tion file \"{1}\
f210: 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d 0a  ": {2}", name,..
f220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f230: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20        fileName, 
f240: 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
f250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f260: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
f270: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
f280: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f290: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
f2a0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
f2b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
f2c0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
f2d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
f2e0: 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20  urn @default;.. 
f2f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
f350: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
f360: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
f370: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f380: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
f390: 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69 6e  mpts to determin
f3a0: 65 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61  e the target fra
f3b0: 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65  mework attribute
f3c0: 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 0d 0a   value that is..
f3d0: 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
f3e0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 70  ated with the sp
f3f0: 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 20  ecified managed 
f400: 61 73 73 65 6d 62 6c 79 2c 20 69 66 20 61 70 70  assembly, if app
f410: 6c 69 63 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  licable...      
f420: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f430: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
f440: 20 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 22   name="assembly"
f450: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
f460: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
f470: 79 20 74 6f 20 72 65 61 64 20 74 68 65 20 74 61  y to read the ta
f480: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
f490: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 0d 0a  ttribute value..
f4a0: 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 2e 0d        /// from..
f4b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
f4c0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
f4d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
f4e0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
f4f0: 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d   the target fram
f500: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
f510: 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 73 70  value for the sp
f520: 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f  ecified..      /
f530: 2f 2f 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  // managed assem
f540: 62 6c 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  bly -OR- null if
f550: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
f560: 74 65 72 6d 69 6e 65 64 2e 20 20 49 66 20 74 68  termined.  If th
f570: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  is..      /// as
f580: 73 65 6d 62 6c 79 20 77 61 73 20 63 6f 6d 70 69  sembly was compi
f590: 6c 65 64 20 77 69 74 68 20 61 20 76 65 72 73 69  led with a versi
f5a0: 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46  on of the .NET F
f5b0: 72 61 6d 65 77 6f 72 6b 20 70 72 69 6f 72 20 74  ramework prior t
f5c0: 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 65 72  o..      /// ver
f5d0: 73 69 6f 6e 20 34 2e 30 2c 20 74 68 65 20 76 61  sion 4.0, the va
f5e0: 6c 75 65 20 72 65 74 75 72 6e 65 64 20 4d 41 59  lue returned MAY
f5f0: 20 72 65 66 6c 65 63 74 20 74 68 61 74 20 76 65   reflect that ve
f600: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45  rsion of the .NE
f610: 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 72 61  T..      /// Fra
f620: 6d 65 77 6f 72 6b 20 69 6e 73 74 65 61 64 20 6f  mework instead o
f630: 66 20 74 68 65 20 6f 6e 65 20 61 73 73 6f 63 69  f the one associ
f640: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73 70  ated with the sp
f650: 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64 0d  ecified managed.
f660: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d  .      /// assem
f670: 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  bly...      /// 
f680: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
f690: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f6a0: 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d   string GetAssem
f6b0: 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f  blyTargetFramewo
f6c0: 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  rk(..          A
f6d0: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
f6e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
f6f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f700: 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21    if (assembly !
f710: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
f720: 20 20 20 7b 0d 0a 23 69 66 20 4e 45 54 5f 34 30     {..#if NET_40
f730: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
f740: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
f750: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
f760: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
f770: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
f780: 54 5f 34 37 31 0d 0a 20 20 20 20 20 20 20 20 20  T_471..         
f790: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
f7a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f7c0: 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69  (assembly.IsDefi
f7d0: 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ned(..          
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7f0: 74 79 70 65 6f 66 28 54 61 72 67 65 74 46 72 61  typeof(TargetFra
f800: 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29  meworkAttribute)
f810: 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20  , false))..     
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f840: 20 20 20 20 20 20 54 61 72 67 65 74 46 72 61 6d        TargetFram
f850: 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 20 74  eworkAttribute t
f860: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d  argetFramework =
f870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f880: 20 20 20 20 20 20 20 20 20 20 20 20 28 54 61 72              (Tar
f890: 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72  getFrameworkAttr
f8a0: 69 62 75 74 65 29 0d 0a 20 20 20 20 20 20 20 20  ibute)..        
f8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8c0: 20 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75    assembly.GetCu
f8d0: 73 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d  stomAttributes(.
f8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f900: 79 70 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d  ypeof(TargetFram
f910: 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c  eworkAttribute),
f920: 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20   false)[0];.... 
f930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f940: 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 72 67       return targ
f950: 65 74 46 72 61 6d 65 77 6f 72 6b 2e 46 72 61 6d  etFramework.Fram
f960: 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a 20 20 20 20  eworkName;..    
f970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
f990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f9a0: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
f9b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f9c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
f9d0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
f9e0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 69 66          }..#elif
f9f0: 20 4e 45 54 5f 33 35 0d 0a 20 20 20 20 20 20 20   NET_35..       
fa00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 2e         return ".
fa10: 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72  NETFramework,Ver
fa20: 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d 0a 23 65 6c  sion=v3.5";..#el
fa30: 69 66 20 4e 45 54 5f 32 30 0d 0a 20 20 20 20 20  if NET_20..     
fa40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fa50: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
fa60: 65 72 73 69 6f 6e 3d 76 32 2e 30 22 3b 0d 0a 23  ersion=v2.0";..#
fa70: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
fa80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
fa90: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
faa0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
fab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
fb00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
fb10: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  .      /// Accep
fb20: 74 73 20 61 20 6c 6f 6e 67 20 74 61 72 67 65 74  ts a long target
fb30: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
fb40: 62 75 74 65 20 76 61 6c 75 65 20 61 6e 64 20 6d  bute value and m
fb50: 61 6b 65 73 20 69 74 20 69 6e 74 6f 20 61 0d 0a  akes it into a..
fb60: 20 20 20 20 20 20 2f 2f 2f 20 6d 75 63 68 20 73        /// much s
fb70: 68 6f 72 74 65 72 20 76 65 72 73 69 6f 6e 2c 20  horter version, 
fb80: 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73 65  suitable for use
fb90: 20 77 69 74 68 20 4e 75 47 65 74 20 70 61 63 6b   with NuGet pack
fba0: 61 67 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ages...      ///
fbb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
fbc0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
fbd0: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
fbe0: 20 20 20 2f 2f 2f 20 54 68 65 20 6c 6f 6e 67 20     /// The long 
fbf0: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
fc00: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
fc10: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
fc20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
fc30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
fc40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
fc50: 20 54 68 65 20 73 68 6f 72 74 20 74 61 72 67 65   The short targe
fc60: 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72  t framework attr
fc70: 69 62 75 74 65 20 76 61 6c 75 65 20 2d 4f 52 2d  ibute value -OR-
fc80: 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e   null if it cann
fc90: 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ot..      /// be
fca0: 20 64 65 74 65 72 6d 69 6e 65 64 20 6f 72 20 63   determined or c
fcb0: 6f 6e 76 65 72 74 65 64 2e 0d 0a 20 20 20 20 20  onverted...     
fcc0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
fcd0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
fce0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 41 62 62  tatic string Abb
fcf0: 72 65 76 69 61 74 65 54 61 72 67 65 74 46 72 61  reviateTargetFra
fd00: 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
fd10: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d     string value.
fd20: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
fd30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fd40: 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
fd50: 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
fd60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
fd70: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
fd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
fd90: 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63  e = value.Replac
fda0: 65 28 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  e(".NETFramework
fdb0: 2c 56 65 72 73 69 6f 6e 3d 76 22 2c 20 22 6e 65  ,Version=v", "ne
fdc0: 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t");..          
fdd0: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
fde0: 70 6c 61 63 65 28 22 2e 22 2c 20 53 74 72 69 6e  place(".", Strin
fdf0: 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d 0a 20 20 20  g.Empty);....   
fe00: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
fe10: 20 3d 20 76 61 6c 75 65 2e 49 6e 64 65 78 4f 66   = value.IndexOf
fe20: 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (',');....      
fe30: 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 21 3d      if (index !=
fe40: 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20   -1)..          
fe50: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
fe60: 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  e.Substring(0, i
fe70: 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ndex);....      
fe80: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
fe90: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
fea0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
feb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
fef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
ff00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ff10: 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20 72 65  If necessary, re
ff20: 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70 70 6f  places all suppo
ff30: 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  rted environment
ff40: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73   variable tokens
ff50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
ff60: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
ff70: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
ff80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ff90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
ffa0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
ffb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 65 74  .      /// A set
ffc0: 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61 64 20  ting value read 
ffd0: 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72 6f 6e 6d  from an environm
ffe0: 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a 20  ent variable... 
fff0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
10000 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
10010 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
10020 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
10030 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  he <paramref nam
10040 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c  e="value" /> wil
10050 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 0d  l all supported.
10060 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72  .      /// envir
10070 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
10080 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e  tokens replaced.
10090 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75    No return valu
100a0 65 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20  e is reserved.. 
100b0 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69       /// to indi
100c0 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20  cate an error.  
100d0 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e  This method cann
100e0 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20  ot fail...      
100f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
10100 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
10110 61 74 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c  atic string Repl
10120 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
10130 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20  riableTokens(.. 
10140 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
10150 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
10160 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
10170 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
10180 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
10190 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
101a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
101b0 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
101c0 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65  ctory = GetCache
101d0 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
101e0 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ry();....       
101f0 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
10200 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
10210 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20  (directory))..  
10220 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10240 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
10250 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10270 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52   value = value.R
10280 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20  eplace(..       
10290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102a0 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72 65 63     AssemblyDirec
102b0 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63  toryToken, direc
102c0 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  tory);..        
102d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
102e0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
102f0 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
10300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10310 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
10320 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10340 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
10350 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
10360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10370 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
10380 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
10390 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
103a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
103b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103e0 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
103f0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
10400 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
10410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10430 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
10440 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74  entCulture, "Nat
10450 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d  ive library " +.
10460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
10480 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
10490 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61 73 73  d to replace ass
104a0 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20 20 20  embly " +..     
104b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104c0 20 20 20 20 20 20 20 20 20 22 64 69 72 65 63 74           "direct
104d0 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c  ory token: {0}",
104e0 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
104f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
10500 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
10560 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
10570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10580 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
10590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
105a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
105b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
105c0 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
105d0 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  mbly = null;....
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
105f0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
10600 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10610 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20 3d        assembly =
10620 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65   Assembly.GetExe
10630 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29  cutingAssembly()
10640 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10650 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
10660 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
10670 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
10680 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
10690 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
106a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
106b0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
106c0 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
106d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
106e0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
106f0 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
10700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10710 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
10720 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
10750 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
10760 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
10770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10780 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
10790 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
107a0 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
107b0 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
107c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107d0 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65        "pre-loade
107e0 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62 74 61  r failed to obta
107f0 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22 20 2b  in executing " +
10800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10810 20 20 20 20 20 20 20 20 20 20 20 20 22 61 73 73              "ass
10820 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29  embly: {0}", e))
10830 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10850 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10860 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
10870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10890 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
108a0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
108b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
108c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
108d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
108e0 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 61 72        string tar
108f0 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 20 41  getFramework = A
10900 62 62 72 65 76 69 61 74 65 54 61 72 67 65 74 46  bbreviateTargetF
10910 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20  ramework(..     
10920 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
10930 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72  AssemblyTargetFr
10940 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62 6c 79  amework(assembly
10950 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
10960 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
10970 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
10980 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 29  argetFramework))
10990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
109a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
109b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
109c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
109d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
109e0 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
109f0 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
10a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a10 20 20 20 20 20 20 20 54 61 72 67 65 74 46 72 61         TargetFra
10a20 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74 61 72  meworkToken, tar
10a30 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b 0d 0a  getFramework);..
10a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a50 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
10a60 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
10a70 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
10a80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
10a90 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
10aa0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
10ab0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
10ac0 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
10ad0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
10ae0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
10af0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
10b00 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
10b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10b50 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
10b60 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
10b70 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
10b80 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ba0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
10bb0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
10bc0 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72  re, "Native libr
10bd0 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ary " +..       
10be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10bf0 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64         "pre-load
10c00 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70  er failed to rep
10c10 6c 61 63 65 20 74 61 72 67 65 74 20 22 20 2b 0d  lace target " +.
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 20 20 20 20 20 20 20 20 22                 "
10c40 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65 6e 3a  framework token:
10c50 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
10c60 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
10c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c90 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
10ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10cf0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
10d00 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
10d10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10d20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10d30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10d40 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
10d50 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
10d60 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
10d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10db0 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
10dc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10dd0 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
10de0 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75  returns the valu
10df0 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
10e00 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e  ed setting, usin
10e10 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20  g the XML..     
10e20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69   /// configurati
10e30 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72 20 74  on file and/or t
10e40 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  he environment v
10e50 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74 68 65  ariables for the
10e60 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
10e70 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e 64 2f  /// process and/
10e80 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  or the current s
10e90 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76 61 69  ystem, when avai
10ea0 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  lable...      //
10eb0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10ec0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10ed0 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
10ee0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
10ef0 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d  of the setting..
10f00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
10f10 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
10f20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61  param name="defa
10f30 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ult">..      ///
10f40 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
10f50 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
10f60 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74   setting has not
10f70 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
10f80 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  itly..      /// 
10f90 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  or cannot be det
10fa0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
10fb0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10fc0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
10fd0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10fe0 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65   value of the se
10ff0 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64  tting -OR- the d
11000 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65  efault value spe
11010 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20  cified by..     
11020 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e   /// <paramref n
11030 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e  ame="default" />
11040 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
11050 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74  een set explicit
11060 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  ly or..      ///
11070 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
11080 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66 61 75  mined.  By defau
11090 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65 6e 63  lt, all referenc
110a0 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67 0d 0a  es to existing..
110b0 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69 72 6f        /// enviro
110c0 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20  nment variables 
110d0 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64 65 64  will be expanded
110e0 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72 65 73   to their corres
110f0 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73 0d 0a  ponding values..
11100 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 69 6e        /// within
11110 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   the value to be
11120 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65 73 73   returned unless
11130 20 65 69 74 68 65 72 20 74 68 65 20 22 4e 6f 5f   either the "No_
11140 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20 20 20  Expand" or..    
11150 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61 6e 64    /// "No_Expand
11160 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d  _<paramref name=
11170 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76 69 72  "name" />" envir
11180 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20  onment variable 
11190 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20 20 20  is set [to..    
111a0 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67 5d 2e    /// anything].
111b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
111c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
111d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
111e0 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56  ring GetSettingV
111f0 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
11200 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20   string name,   
11210 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
11220 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
11230 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ault /* in */.. 
11240 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
11250 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
11260 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11270 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
11280 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
11290 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65  NOTE: If the spe
112a0 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74 65 47  cial "No_SQLiteG
112b0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 22 20  etSettingValue" 
112c0 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
112d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
112e0 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
112f0 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74  [to anything], t
11300 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  his method will 
11310 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20  always..        
11320 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72    //       retur
11330 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  n the default va
11340 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
11350 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
11360 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
11370 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
11380 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
11390 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74         "No_SQLit
113a0 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
113b0 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ") != null)..   
113c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
113d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
113e0 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
113f0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
11400 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
11460 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d   (name == null).
11470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
11480 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d  eturn @default;.
11490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
114a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
114f0 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
11500 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
11510 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  BUG..          /
11520 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
11530 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f  NOTE: We are abo
11540 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65 74  ut to read a set
11550 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20  ting value from 
11560 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  the environment.
11570 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
11580 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c 79 20      or possibly 
11590 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e  from the XML con
115a0 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b  figuration file;
115b0 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20 20 20   create or..    
115c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
115d0 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70 70  ncrement the app
115e0 72 6f 70 72 69 61 74 65 20 73 74 61 74 69 73 74  ropriate statist
115f0 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ic now...       
11600 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11610 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
11620 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43  mentSettingReadC
11630 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c 73 65  ount(name, false
11640 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
11650 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
11660 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
11670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
116b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
116c0 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d 20 74   bool expand = t
116d0 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44 3a 20  rue; /* SHARED: 
116e0 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41 4e 44  Environment -AND
116f0 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66 69 6c  - XML config fil
11700 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  e. */....       
11710 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11750 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
11760 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11770 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11780 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
11790 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  ue = null;....  
117a0 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
117b0 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
117c0 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 22  onmentVariable("
117d0 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d 20 6e  No_Expand") != n
117e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
117f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11800 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65 3b   expand = false;
11810 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
11820 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
11830 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65   (Environment.Ge
11840 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  tEnvironmentVari
11850 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
11860 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d           HelperM
11870 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
11880 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
11890 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
118a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
118b0 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e 64 5f       "No_Expand_
118c0 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21 3d 20  {0}", name)) != 
118d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
118e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
118f0 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73 65    expand = false
11900 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
11910 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75  ..          valu
11920 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
11930 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
11940 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d 0a 0d  riable(name);...
11950 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
11960 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
11970 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
11980 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11990 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70           if (exp
119a0 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  and)..          
119b0 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
119c0 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70 61  Environment.Expa
119d0 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ndEnvironmentVar
119e0 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d 0a  iables(value);..
119f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11a00 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45  value = ReplaceE
11a10 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
11a20 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b  leTokens(value);
11a30 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
11a40 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76  .          if (v
11a50 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11a70 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  urn value;....  
11a80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11a90 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
11aa0 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65  f the "No_SQLite
11ab0 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 20 65  XmlConfigFile" e
11ac0 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
11ad0 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ble is..        
11ae0 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74 20 5b    //       set [
11af0 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20 74 68  to anything], th
11b00 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 4e  is method will N
11b10 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d 20 74  EVER read from t
11b20 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
11b30 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e 66 69         XML confi
11b40 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
11b50 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
11b60 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
11b70 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
11b80 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
11b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11ba0 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f   "No_SQLiteXmlCo
11bb0 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20 6e 75  nfigFile") != nu
11bc0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ll)..          {
11bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11be0 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b  return @default;
11bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
11c00 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
11c10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11c60 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
11c70 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
11c80 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
11c90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11ca0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61     // NOTE: We a
11cb0 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64  re about to read
11cc0 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65   a setting value
11cd0 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20   from the XML.. 
11ce0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
11cf0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20    configuration 
11d00 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 20  file; create or 
11d10 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61 70  increment the ap
11d20 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 20  propriate..     
11d30 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74       //       st
11d40 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20  atistic now...  
11d50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
11d60 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
11d70 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67  IncrementSetting
11d80 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20  ReadCount(name, 
11d90 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  true);..#endif..
11da0 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
11db0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
11dc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
11dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11e10 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53       return GetS
11e20 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d  ettingValueViaXm
11e30 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20  lConfigFile(..  
11e40 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 43              GetC
11e50 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
11e60 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d 65 2c 20  leName(), name, 
11e70 40 64 65 66 61 75 6c 74 2c 20 65 78 70 61 6e 64  @default, expand
11e80 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
11e90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
11ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11ee0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11ef0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11f00 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
11f10 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4c 69  static string Li
11f20 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69 73 74  stToString(IList
11f30 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29 0d 0a  <string> list)..
11f40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11f50 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d 20 6e     if (list == n
11f60 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11f70 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11f80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74  ....          St
11f90 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75  ringBuilder resu
11fa0 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42  lt = new StringB
11fb0 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20  uilder();....   
11fc0 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
11fd0 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74 20 69  string element i
11fe0 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20  n list)..       
11ff0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12000 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20      if (element 
12010 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12020 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
12030 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
12040 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
12050 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  t.Length > 0).. 
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12070 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 27   result.Append('
12080 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   ');....        
12090 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70        result.App
120a0 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d 0a 20  end(element);.. 
120b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
120c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
120d0 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29  esult.ToString()
120e0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
120f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12140 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
12150 74 61 74 69 63 20 69 6e 74 20 43 68 65 63 6b 46  tatic int CheckF
12160 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41  orArchitecturesA
12170 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a 20 20  ndPlatforms(..  
12180 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
12190 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
121a0 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c 73 74       ref List<st
121b0 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d 0a 20  ring> matches.. 
121c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
121d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
121e0 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a  nt result = 0;..
121f0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
12200 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c 6c 29  matches == null)
12210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12220 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20 4c 69  matches = new Li
12230 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 0d  st<string>();...
12240 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
12250 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
12260 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12280 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
12290 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79  rEmpty(directory
122a0 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
122b0 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73          (process
122c0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
122d0 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c 6c 29  atforms != null)
122e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
122f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12300 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 4b        foreach (K
12310 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74 72 69  eyValuePair<stri
12320 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61 69 72  ng, string> pair
12330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
12350 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
12360 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 29  ecturePlatforms)
12370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12380 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
123a0 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74  (Directory.Exist
123b0 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  s(MaybeCombinePa
123c0 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20 70 61  th(directory, pa
123d0 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20 20 20  ir.Key)))..     
123e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
12410 74 63 68 65 73 2e 41 64 64 28 70 61 69 72 2e 4b  tches.Add(pair.K
12420 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ey);..          
12430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12440 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
12450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12460 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12470 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
12480 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69 72 2e  ng value = pair.
12490 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  Value;....      
124a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
124b0 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
124c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
124d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
124e0 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12500 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
12510 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69  xists(MaybeCombi
12520 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
12530 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20 20 20  , value)))..    
12540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12550 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
12570 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c 75 65  atches.Add(value
12580 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
125a0 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  sult++;..       
125b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
125c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
125d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
125e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
125f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12600 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
12610 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
12620 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12670 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
12680 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 41 73  tic bool CheckAs
12690 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 0d  semblyCodeBase(.
126a0 0a 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d  .          Assem
126b0 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d 0a 20  bly assembly,.. 
126c0 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
126d0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
126e0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
126f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
12700 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12720 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75   (assembly == nu
12730 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
12740 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12750 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
12760 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f 64        string cod
12770 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62 6c 79  eBase = assembly
12780 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a 20 20  .CodeBase;....  
12790 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
127a0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
127b0 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29 29 0d  mpty(codeBase)).
127c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127d0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
127e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
127f0 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65 77 20    Uri uri = new 
12800 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b 0d 0a  Uri(codeBase);..
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
12820 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65 4e 61  ring localFileNa
12830 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c 50 61  me = uri.LocalPa
12840 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
12850 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45       if (!File.E
12860 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c 65 4e  xists(localFileN
12870 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
12880 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12890 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
128a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
128b0 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e  irectory = Path.
128c0 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65  GetDirectoryName
128d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
128e0 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65 4e 61       localFileNa
128f0 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  me); /* throw */
12900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12910 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f 6e 66    string xmlConf
12920 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79  igFileName = May
12930 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a  beCombinePath(..
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12950 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c    directory, Xml
12960 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
12970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12980 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
12990 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  s(xmlConfigFileN
129a0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
129b0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
129c0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
129d0 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
129e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129f0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
12a00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12a30 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
12a40 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a60 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
12a70 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
12a80 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
12a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12aa0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
12ab0 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
12ac0 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
12ad0 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20  on file " +..   
12ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12af0 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65         "via code
12b00 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e   base for curren
12b10 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
12b20 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22  sembly: \"{0}\""
12b30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12b40 20 20 20 20 20 20 20 20 20 20 20 20 20 78 6d 6c               xml
12b50 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29  ConfigFileName))
12b60 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12b90 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bc0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
12bd0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
12be0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
12bf0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
12c00 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
12c10 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d  e = localFileNam
12c20 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12c30 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
12c40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12c50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12c60 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67       List<string
12c70 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75 6c 6c  > matches = null
12c80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12c90 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f 72 41     if (CheckForA
12ca0 72 63 68 69 74 65 63 74 75 72 65 73 41 6e 64 50  rchitecturesAndP
12cb0 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63 74 6f  latforms(directo
12cc0 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65 73 29  ry, ref matches)
12cd0 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
12ce0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
12cf0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12d00 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
12d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
12d30 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
12d60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
12d70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d90 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
12da0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
12db0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12dd0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
12de0 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
12df0 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69 72 65   native sub-dire
12e00 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20 20 20  ctories " +..   
12e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f 64 65         "via code
12e30 20 62 61 73 65 20 66 6f 72 20 63 75 72 72 65 6e   base for curren
12e40 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
12e50 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c 22 22  sembly: \"{0}\""
12e60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73               Lis
12e80 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63 68 65  tToString(matche
12e90 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  s))); /* throw *
12ea0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
12eb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12ec0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
12ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ee0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12ef0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
12f00 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
12f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12f20 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
12f30 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
12f40 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
12f50 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
12f60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12f70 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
12f80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12f90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12fa0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
12fb0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
12fc0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
12fd0 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
12fe0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
12ff0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
13000 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
13010 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
13020 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
13030 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
13040 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
13050 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
13060 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
13070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
13090 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
130a0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
130b0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
130c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130d0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
130e0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
130f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13100 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
13110 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
13120 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 63 6f  iled to check co
13130 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20 20 20  de base " +..   
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13150 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c     "for currentl
13160 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
13170 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b  mbly: {0}", e));
13180 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
13190 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
131a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
131b0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
131c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
131d0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
131e0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
131f0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
13200 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13220 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  false;..      }.
13230 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
13240 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
13290 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
132a0 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74  .      /// Reset
132b0 73 20 74 68 65 20 63 61 63 68 65 64 20 61 73 73  s the cached ass
132c0 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20  embly directory 
132d0 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72 63  value, thus forc
132e0 69 6e 67 20 74 68 65 20 6e 65 78 74 0d 0a 20 20  ing the next..  
132f0 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20 74 6f 20      /// call to 
13300 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
13310 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
13320 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
13330 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20 20   to rely..      
13340 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73 65  /// upon the <se
13350 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d  e cref="GetAssem
13360 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e  blyDirectory" />
13370 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63 68   method to fetch
13380 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
13390 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
133a0 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
133b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
133c0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
133d0 76 6f 69 64 20 52 65 73 65 74 43 61 63 68 65 64  void ResetCached
133e0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
133f0 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  y()..      {..  
13400 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
13410 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
13420 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
13430 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
13440 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43  .IncrementOtherC
13450 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52 65 73  ount("Method_Res
13460 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
13470 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65  Directory");..#e
13480 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
13490 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
134a0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
134b0 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
134c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
134d0 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64            cached
134e0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
134f0 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  y = null;..     
13500 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
13510 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 66  blyDirectory = f
13520 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
13530 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
13540 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13590 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
135a0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
135b0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
135c0 6e 73 20 74 68 65 20 63 61 63 68 65 64 20 64 69  ns the cached di
135d0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
135e0 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
135f0 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ly..      /// be
13600 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20 69 66  ing executed, if
13610 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20   available.  If 
13620 74 68 65 20 63 61 63 68 65 64 20 61 73 73 65 6d  the cached assem
13630 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20 76 61  bly directory va
13640 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  lue..      /// i
13650 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2c  s not available,
13660 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
13670 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
13680 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20  tory" /> method 
13690 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  will..      /// 
136a0 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69  be used to obtai
136b0 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 64  n the assembly d
136c0 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
136d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
136e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
136f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
13700 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  The directory fo
13710 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63  r the assembly c
13720 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20 65  urrently being e
13730 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e 75 6c  xecuted -OR- nul
13740 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l if..      /// 
13750 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
13760 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
13770 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
13780 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
13790 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43  atic string GetC
137a0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
137b0 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
137c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
137d0 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
137e0 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
137f0 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
13800 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
13810 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
13820 64 5f 47 65 74 43 61 63 68 65 64 41 73 73 65 6d  d_GetCachedAssem
13830 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d  blyDirectory");.
13840 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13850 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13860 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
13870 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
13880 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
138a0 28 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  (cachedAssemblyD
138b0 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c  irectory != null
138c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
138d0 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68       return cach
138e0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
138f0 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ory;....        
13900 20 20 20 20 20 20 69 66 20 28 6e 6f 41 73 73 65        if (noAsse
13910 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 29 0d 0a  mblyDirectory)..
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13930 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
13940 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13950 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13960 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
13970 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 7d  tory();..      }
13980 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
13990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
139e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
139f0 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
13a00 72 65 74 75 72 6e 73 20 74 68 65 20 64 69 72 65  returns the dire
13a10 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73  ctory for the as
13a20 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79  sembly currently
13a30 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f   being..      //
13a40 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20 20 20  / executed...   
13a50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13a60 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
13a70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
13a80 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20  / The directory 
13a90 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
13aa0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
13ab0 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e   executed -OR- n
13ac0 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ull if..      //
13ad0 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
13ae0 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
13af0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
13b00 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
13b10 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
13b20 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
13b30 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ry()..      {.. 
13b40 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
13b50 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
13b60 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
13b70 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
13b80 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72  a.IncrementOther
13b90 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65  Count("Method_Ge
13ba0 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
13bb0 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ry");..#endif.. 
13bc0 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
13bd0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
13be0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
13bf0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13c00 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
13c10 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
13c20 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
13c30 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
13c40 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
13c50 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
13c60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c80 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
13c90 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
13ca0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cc0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
13cd0 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13d00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13d10 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
13d20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13d30 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
13d40 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
13d50 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
13d60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
13d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d80 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61 73 73  AssemblyName ass
13d90 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73 73 65  emblyName = asse
13da0 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29 3b 0d  mbly.GetName();.
13db0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13dc0 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e 61 6d   if (assemblyNam
13dd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
13de0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13e00 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
13e10 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
13e20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e40 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63   noAssemblyDirec
13e50 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20  tory = true;..  
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13e80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
13e90 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
13ea0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13eb0 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
13ec0 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 43 6f   assemblyName.Co
13ed0 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a  deBase;..#else..
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13ef0 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62 6c 79   (!CheckAssembly
13f00 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d 62 6c  CodeBase(assembl
13f10 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d 65 29  y, ref fileName)
13f20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13f30 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
13f40 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f  assembly.Locatio
13f50 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  n;..#endif....  
13f60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13f70 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
13f80 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d  mpty(fileName)).
13f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
13fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13fb0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
13fc0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
13fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ff0 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79        noAssembly
14000 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65  Directory = true
14010 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14030 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14040 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
14050 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14060 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
14070 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
14080 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
14090 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ame(fileName);..
140a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140b0 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
140c0 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
140d0 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry))..          
140e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
140f0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
14100 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
14110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14120 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14130 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
14140 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
14150 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
14160 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14180 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
14190 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
141a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
141b0 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
141c0 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
141d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
141e0 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64            cached
141f0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14200 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  y = directory;..
14210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14220 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14230 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
14240 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
14250 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
14260 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
14270 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
14280 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
14290 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
142a0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
142b0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
142c0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
142d0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
142e0 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
142f0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
14300 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
14310 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14320 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
14330 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
14340 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
14350 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
14360 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
14370 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
14380 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
14390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
143a0 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70  Native library p
143b0 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64  re-loader failed
143c0 20 74 6f 20 67 65 74 20 64 69 72 65 63 74 6f 72   to get director
143d0 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
143e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f               "fo
143f0 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
14400 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
14410 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
14420 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
14430 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14440 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
14450 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14470 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
14480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
14490 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
144a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
144b0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
144c0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
144d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
144e0 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
144f0 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
14500 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
14510 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
14520 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
14530 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
14540 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
14550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14590 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
145a0 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61 6c 20  region Optional 
145b0 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c 69  Native SQLite Li
145c0 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e  brary Pre-Loadin
145d0 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  g Code..      //
145e0 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  ..      // NOTE:
145f0 20 49 66 20 77 65 20 61 72 65 20 6c 6f 6f 6b 69   If we are looki
14600 6e 67 20 66 6f 72 20 74 68 65 20 73 74 61 6e 64  ng for the stand
14610 61 72 64 20 53 51 4c 69 74 65 20 44 4c 4c 20 28  ard SQLite DLL (
14620 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29 2c 0d  "sqlite3.dll"),.
14630 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
14640 74 68 65 20 69 6e 74 65 72 6f 70 20 44 4c 4c 20  the interop DLL 
14650 28 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70  ("SQLite.Interop
14660 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20 61 72  .dll"), or we ar
14670 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65  e running on the
14680 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
14690 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
146a0 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68 6f 75  amework, we shou
146b0 6c 64 20 69 6e 63 6c 75 64 65 20 74 68 69 73 20  ld include this 
146c0 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20 74 68  code (only if th
146d0 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
146e0 20 20 66 65 61 74 75 72 65 20 68 61 73 20 61 63    feature has ac
146f0 74 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e 61 62  tually been enab
14700 6c 65 64 29 2e 20 20 54 68 69 73 20 63 6f 64 65  led).  This code
14710 20 77 6f 75 6c 64 20 62 65 20 74 6f 74 61 6c 6c   would be totall
14720 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  y..      //     
14730 20 20 72 65 64 75 6e 64 61 6e 74 20 69 66 20 74    redundant if t
14740 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 73 20 62  his module has b
14750 65 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e 74 6f  een bundled into
14760 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 0d   the mixed-mode.
14770 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
14780 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20  assembly...     
14790 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f   //..#if SQLITE_
147a0 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f  STANDARD || USE_
147b0 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50  INTEROP_DLL || P
147c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
147d0 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20 20 20  RAMEWORK....    
147e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
147f0 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70 69 6c  OTE: Only compil
14800 65 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20  e in the native 
14810 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
14820 20 63 6f 64 65 20 69 66 20 74 68 65 20 66 65 61   code if the fea
14830 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ture..      //  
14840 20 20 20 20 20 68 61 73 20 62 65 65 6e 20 65 6e       has been en
14850 61 62 6c 65 64 20 66 6f 72 20 74 68 69 73 20 62  abled for this b
14860 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d  uild...      //.
14870 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
14880 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
14890 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
148a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
148b0 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 76 69  name of the envi
148c0 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
148d0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
148e0 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
148f0 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75 72   /// architectur
14900 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
14910 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
14920 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14930 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
14940 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
14950 74 72 69 6e 67 20 50 52 4f 43 45 53 53 4f 52 5f  tring PROCESSOR_
14960 41 52 43 48 49 54 45 43 54 55 52 45 20 3d 0d 0a  ARCHITECTURE =..
14970 20 20 20 20 20 20 20 20 20 20 22 50 52 4f 43 45            "PROCE
14980 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52  SSOR_ARCHITECTUR
14990 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  E";....      ///
149a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
149f0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
14a00 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
14a10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14a20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
14a30 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d 65  module file name
14a40 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
14a50 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
14a60 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  r null...      /
14a70 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14a80 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
14a90 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53 51 4c  atic string _SQL
14aa0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
14ab0 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
14ac0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
14b20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14b30 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
14b40 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20  dule handle for 
14b50 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
14b60 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74 68 65  e library or the
14b70 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f   value..      //
14b80 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e 0d 0a  / IntPtr.Zero...
14b90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14ba0 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
14bb0 61 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74  ate static IntPt
14bc0 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  r _SQLiteNativeM
14bd0 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 49 6e  oduleHandle = In
14be0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
14bf0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14c00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14c50 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14c60 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14c70 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 62  Determines the b
14c80 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 28 77  ase file name (w
14c90 69 74 68 6f 75 74 20 61 6e 79 20 64 69 72 65 63  ithout any direc
14ca0 74 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tory information
14cb0 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72  )..      /// for
14cc0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
14cd0 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65  te library to be
14ce0 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 20 74   pre-loaded by t
14cf0 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
14d00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14d10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
14d20 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
14d30 20 54 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e   The base file n
14d40 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
14d50 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
14d60 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64  y to be pre-load
14d70 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed by..      ///
14d80 20 74 68 69 73 20 63 6c 61 73 73 20 2d 4f 52 2d   this class -OR-
14d90 20 6e 75 6c 6c 20 69 66 20 69 74 73 20 76 61 6c   null if its val
14da0 75 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  ue cannot be det
14db0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
14dc0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
14dd0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
14de0 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
14df0 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c  NativeLibraryFil
14e00 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20 20 20  eNameOnly()..   
14e10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14e20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f  string fileNameO
14e30 6e 6c 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67  nly = GetSetting
14e40 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
14e50 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51        "PreLoadSQ
14e60 4c 69 74 65 5f 4c 69 62 72 61 72 79 46 69 6c 65  Lite_LibraryFile
14e70 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c 6c 29  NameOnly", null)
14e80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
14e90 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
14ea0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
14eb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
14ec0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a 0d 0a  ileNameOnly;....
14ed0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14ee0 20 53 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f 2a 20   SQLITE_DLL; /* 
14ef0 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20 20 20 20  COMPAT */..     
14f00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
14f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f50 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
14f60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14f70 20 20 2f 2f 2f 20 53 65 61 72 63 68 65 73 20 66    /// Searches f
14f80 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
14f90 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 6e 20  Lite library in 
14fa0 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
14fb0 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
14fc0 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d 62 6c 79  /// the assembly
14fd0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
14fe0 20 65 78 65 63 75 74 65 64 20 61 73 20 77 65 6c   executed as wel
14ff0 6c 20 61 73 20 74 68 65 20 62 61 73 65 20 64 69  l as the base di
15000 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 2f  rectory..      /
15010 2f 2f 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  // for the curre
15020 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  nt application d
15030 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  omain...      //
15040 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15050 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
15060 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
15070 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
15080 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
15090 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
150a0 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  l be modified to
150b0 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 62 61   refer to the ba
150c0 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69  se..      /// di
150d0 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
150e0 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
150f0 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  Lite library... 
15100 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
15110 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
15120 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
15130 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
15140 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  >..      /// Upo
15150 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
15160 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
15170 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65  e modified to re
15180 66 65 72 20 74 6f 20 74 68 65 20 6e 61 6d 65 0d  fer to the name.
15190 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68  .      /// of th
151a0 65 20 69 6d 6d 65 64 69 61 74 65 20 64 69 72 65  e immediate dire
151b0 63 74 6f 72 79 20 28 69 2e 65 2e 20 74 68 65 20  ctory (i.e. the 
151c0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
151d0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 29 0d  base directory).
151e0 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61  .      /// conta
151f0 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ining the native
15200 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
15210 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
15220 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
15230 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
15240 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73   /// Non-zero (s
15250 75 63 63 65 73 73 29 20 69 66 20 74 68 65 20 6e  uccess) if the n
15260 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
15270 72 61 72 79 20 77 61 73 20 66 6f 75 6e 64 3b 20  rary was found; 
15280 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20  otherwise,..    
15290 20 20 2f 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c    /// zero (fail
152a0 75 72 65 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure)...      ///
152b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
152c0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
152d0 63 20 62 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72  c bool SearchFor
152e0 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
152f0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
15300 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
15310 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
15320 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
15330 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
15340 41 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20  Architecture /* 
15350 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
15360 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
15370 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
15380 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
15390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
153a0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53  reLoadSQLite_NoS
153b0 65 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72  earchForDirector
153c0 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c  y", null) != nul
153d0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
153e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
153f0 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20  eturn false; /* 
15400 44 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20  DISABLED */..   
15410 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15420 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15430 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74      // NOTE: Det
15440 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20  ermine the base 
15450 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
15460 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
15470 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
15480 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20      //       If 
15490 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77  this is not know
154a0 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c  n by this class,
154b0 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69   we cannot conti
154c0 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nue...          
154d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
154e0 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ring fileNameOnl
154f0 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62  y = GetNativeLib
15500 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79  raryFileNameOnly
15510 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
15520 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
15530 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
15540 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15550 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
15560 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
15570 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c     // NOTE: Buil
15580 64 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61  d the list of ba
15590 73 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61  se directories a
155a0 6e 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61  nd processor/pla
155b0 74 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20  tform..         
155c0 20 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e   //       names.
155d0 20 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69    These lists wi
155e0 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65  ll be used to he
155f0 6c 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61  lp locate the na
15600 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
15610 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20  //       SQLite 
15620 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72  core library (or
15630 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
15640 79 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69  y) to pre-load i
15650 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  nto..          /
15660 2f 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f  /       this pro
15670 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  cess...         
15680 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
15690 74 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72  tring[] director
156a0 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
156b0 20 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62         GetAssemb
156c0 6c 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a  lyDirectory(),..
156d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
156e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70                Ap
15700 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
15710 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
15720 6f 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ory,..#endif..  
15730 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20          };....  
15740 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
15750 20 73 75 62 44 69 72 65 63 74 6f 72 69 65 73 20   subDirectories 
15760 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  = {..           
15770 20 20 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41     GetProcessorA
15780 72 63 68 69 74 65 63 74 75 72 65 28 29 2c 20 2f  rchitecture(), /
15790 2a 20 65 2e 67 2e 20 22 78 38 36 22 20 2a 2f 0d  * e.g. "x86" */.
157a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47  .              G
157b0 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e  etPlatformName(n
157c0 75 6c 6c 29 2c 20 20 20 20 20 20 2f 2a 20 65 2e  ull),      /* e.
157d0 67 2e 20 22 57 69 6e 33 32 22 20 2a 2f 0d 0a 23  g. "Win32" */..#
157e0 69 66 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f  if NET_STANDARD_
157f0 32 30 20 26 26 20 21 57 49 4e 44 4f 57 53 20 20  20 && !WINDOWS  
15800 20 20 20 20 20 20 20 20 20 2f 2f 20 2e 4e 45 54           // .NET
15810 20 43 6f 72 65 20 6f 6e 20 50 4f 53 49 58 0d 0a   Core on POSIX..
15820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
15830 72 69 6e 67 2e 45 6d 70 74 79 2c 20 20 20 20 20  ring.Empty,     
15840 20 20 20 20 20 20 20 20 20 20 2f 2a 20 65 2e 67            /* e.g
15850 2e 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  . base directory
15860 20 6f 6e 6c 79 20 2a 2f 0d 0a 23 65 6e 64 69 66   only */..#endif
15870 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
15880 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
15890 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72 65  ach (string dire
158a0 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f  ctory in directo
158b0 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ries)..         
158c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
158d0 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
158e0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
158f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
15900 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
15910 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
15920 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63 74  string subDirect
15930 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63 74  ory in subDirect
15940 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
15950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15960 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
15970 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  ubDirectory == n
15980 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
15990 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
159a0 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
159b0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
159c0 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78  g fileName = Fix
159d0 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61  UpDllFileName(Ma
159e0 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d  ybeCombinePath(.
159f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15a00 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d 62         MaybeComb
15a10 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
15a20 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79 29  y, subDirectory)
15a30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
15a40 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
15a50 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
15a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15a80 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
15a90 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66  the SQLite DLL f
15aa0 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74 75  ile exists, retu
15ab0 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  rn success...   
15ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
15ad0 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f  /       Prior to
15ae0 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20   returning, set 
15af0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
15b00 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ry and..        
15b10 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
15b20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
15b30 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65 66  hitecture to ref
15b40 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f  lect the locatio
15b50 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
15b60 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68       //       wh
15b70 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64  ere it was found
15b80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15b90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
15ba0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46             if (F
15bb0 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
15bc0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
15bd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
15be0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
15bf0 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
15c00 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
15c10 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
15c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c50 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
15c60 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
15c70 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
15c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c90 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
15ca0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
15cb0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
15cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15cd0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
15ce0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
15cf0 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20  er found native 
15d00 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20  file " +..      
15d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d20 20 20 20 20 20 20 20 20 22 6e 61 6d 65 20 5c 22          "name \"
15d30 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67  {0}\", returning
15d40 20 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d   directory \"{1}
15d50 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20  \" and " +..    
15d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d70 20 20 20 20 20 20 20 20 20 20 22 73 75 62 2d 64            "sub-d
15d80 69 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22  irectory \"{2}\"
15d90 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20  ...", fileName, 
15da0 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
15db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15dc0 20 20 20 20 20 20 20 20 20 20 73 75 62 44 69 72            subDir
15dd0 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72  ectory)); /* thr
15de0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
15df0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
15e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e10 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
15e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e50 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
15e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e70 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15e80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15e90 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72           baseDir
15ea0 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f  ectory = directo
15eb0 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
15ec0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
15ed0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
15ee0 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79 3b   = subDirectory;
15ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
15f10 72 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f  rue; /* FOUND */
15f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15f40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15f50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15f60 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f   return false; /
15f70 2a 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a  * NOT FOUND */..
15f80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
15f90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
15fe0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ff0 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
16000 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
16010 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
16020 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  y of the current
16030 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20   application..  
16040 20 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d      /// domain..
16050 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16060 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16070 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
16080 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
16090 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
160a0 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
160b0 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d  tion domain -OR-
160c0 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20   null if it..   
160d0 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
160e0 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
160f0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
16100 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
16110 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
16120 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
16130 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
16140 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16150 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
16160 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
16170 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72  ite_BaseDirector
16180 79 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  y" environment v
16190 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  ariable..       
161a0 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73     //       is s
161b0 65 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61  et, use it verba
161c0 74 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65  tim for the base
161d0 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
161e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
161f0 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
16200 63 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69  ctory = GetSetti
16210 6e 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64  ngValue("PreLoad
16220 53 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63  SQLite_BaseDirec
16230 74 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20  tory",..        
16240 20 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a        null);....
16250 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
16260 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29  rectory != null)
16270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16280 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
16290 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
162a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
162b0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ORK..          /
162c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
162d0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
162e0 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41  eLoadSQLite_UseA
162f0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
16300 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
16310 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16320 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
16330 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c  t (to anything),
16340 20 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f   then attempt to
16350 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
16360 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72      //       dir
16370 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
16380 67 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  g the currently 
16390 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
163a0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ly..          //
163b0 20 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73         (i.e. Sys
163c0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29  tem.Data.SQLite)
163d0 20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20   intsead of the 
163e0 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
163f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16400 64 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65  domain base dire
16410 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  ctory...        
16420 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16430 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
16440 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
16450 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
16460 53 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62  SQLite_UseAssemb
16470 6c 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  lyDirectory", nu
16480 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
16490 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
164a0 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f           directo
164b0 72 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79  ry = GetAssembly
164c0 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a  Directory();....
164d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
164e0 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e   (directory != n
164f0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
16500 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
16510 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
16520 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16530 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16540 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72    // NOTE: Other
16550 77 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f  wise, fallback o
16560 6e 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65  n using the base
16570 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68   directory of th
16580 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
16590 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70        current ap
165a0 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e  plication domain
165b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
165c0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
165d0 6e 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72  n AppDomain.Curr
165e0 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
165f0 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d  rectory;..#else.
16600 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
16610 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
16620 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c  : Otherwise, fal
16630 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74  lback on using t
16640 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e  he directory con
16650 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
16660 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
16670 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74  currently execut
16680 69 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  ing assembly... 
16690 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
166a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
166b0 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  tAssemblyDirecto
166c0 72 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ry();..#endif.. 
166d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f  ////////////////
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
16730 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16740 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
16750 69 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61  ines if the dyna
16760 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
16770 20 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69   file name requi
16780 72 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20  res a suffix..  
16790 20 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73      /// and adds
167a0 20 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79   it if necessary
167b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
167c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
167d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
167e0 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
167f0 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
16800 61 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  al dynamic link 
16810 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d  library file nam
16820 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
16830 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16840 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
16850 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
16860 2f 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  / The dynamic li
16870 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
16880 6e 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d  name, possibly m
16890 6f 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75  odified to inclu
168a0 64 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  de an..      ///
168b0 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20   extension...   
168c0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
168d0 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
168e0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46   static string F
168f0 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
16900 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
16910 6e 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69  ng fileName /* i
16920 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
16930 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
16940 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
16950 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
16960 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
16970 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16980 20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65         if (Helpe
16990 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f  rMethods.IsWindo
169a0 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ws())..         
169b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
169c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66            if (!f
169d0 69 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68  ileName.EndsWith
169e0 28 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f  (DllFileExtensio
169f0 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n,..            
16a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
16a10 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
16a20 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65  rdinalIgnoreCase
16a30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
16a40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
16a60 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b  eturn fileName +
16a70 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f   DllFileExtensio
16a80 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
16a90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16aa0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
16ab0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
16ac0 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61     return fileNa
16ad0 6d 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  me;..      }....
16ae0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16b30 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16b40 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16b50 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
16b60 72 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f  rns the processo
16b70 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f  r architecture o
16b80 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  f the current.. 
16b90 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73       /// process
16ba0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16bb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16bc0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
16bd0 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63      /// The proc
16be0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16bf0 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  re of the curren
16c00 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e  t process -OR- n
16c10 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20  ull if it..     
16c20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
16c30 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
16c40 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
16c50 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
16c60 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
16c70 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
16c80 65 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20  ecture()..      
16c90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  {..          //.
16ca0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
16cb0 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
16cc0 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73  oadSQLite_Proces
16cd0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
16ce0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
16cf0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16d00 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
16d10 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69  , use it verbati
16d20 6d 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  m for the curren
16d30 74 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  t processor..   
16d40 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16d50 61 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20  architecture... 
16d60 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16d70 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
16d80 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16d90 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67  ure = GetSetting
16da0 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
16db0 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51        "PreLoadSQ
16dc0 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72  Lite_ProcessorAr
16dd0 63 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c  chitecture", nul
16de0 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
16df0 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72   if (processorAr
16e00 63 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75  chitecture != nu
16e10 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
16e20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
16e30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
16e40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
16e50 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42  ..          // B
16e60 55 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73  UGBUG: Will this
16e70 20 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61   always be relia
16e80 62 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ble?..          
16e90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72  //..          pr
16ea0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16eb0 75 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67  ure = GetSetting
16ec0 56 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f  Value(PROCESSOR_
16ed0 41 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75  ARCHITECTURE, nu
16ee0 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
16ef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
16f40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
16f50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
16f60 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16f70 20 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63     // HACK: Chec
16f80 6b 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73  k for an "imposs
16f90 69 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e  ible" situation.
16fa0 20 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72    If the pointer
16fb0 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20   size..         
16fc0 20 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d   //       is 32-
16fd0 62 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73  bits, the proces
16fe0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
16ff0 20 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36   cannot be "AMD6
17000 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  4"...          /
17010 2f 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20  /       In that 
17020 63 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d  case, we are alm
17030 6f 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69  ost certainly hi
17040 74 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74  tting a bug in t
17050 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
17060 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67         operating
17070 20 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56   system and/or V
17080 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61  isual Studio tha
17090 74 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20  t causes the..  
170a0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
170b0 20 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49   PROCESSOR_ARCHI
170c0 54 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d  TECTURE environm
170d0 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20  ent variable to 
170e0 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
170f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
17100 77 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73  wrong value in s
17110 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65  ome circumstance
17120 73 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72  s.  Please refer
17130 20 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20   to ticket..    
17140 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b        //       [
17150 39 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20  9ac9862611] for 
17160 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74  further informat
17170 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
17180 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
17190 20 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d   ((IntPtr.Size =
171a0 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26  = sizeof(int)) &
171b0 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
171c0 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70   String.Equals(p
171d0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
171e0 74 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a  ture, "AMD64",..
171f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17200 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73    StringComparis
17210 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
17220 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Case))..        
17230 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
17240 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
17250 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20  E_DETECTION..   
17260 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
17270 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17280 4e 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69  NOTE: When traci
17290 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73  ng is enabled, s
172a0 61 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  ave the original
172b0 6c 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20  ly detected..   
172c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
172d0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
172e0 63 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72  chitecture befor
172f0 65 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a  e changing it...
17300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17320 73 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63  string savedProc
17330 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
17340 65 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63  e = processorArc
17350 68 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64  hitecture;..#end
17360 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
17370 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17380 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
17390 65 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72  e know that oper
173a0 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68  ating systems th
173b0 61 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34  at return "AMD64
173c0 22 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20  " as..          
173d0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
173e0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
173f0 74 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75  tecture are actu
17400 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20  ally a superset 
17410 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  of..            
17420 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22    //       the "
17430 78 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61  x86" processor a
17440 72 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65  rchitecture; the
17450 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a  refore, return..
17460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17470 20 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65         "x86" whe
17480 6e 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69  n the pointer si
17490 7a 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a  ze is 32-bits...
174a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
174b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
174c0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
174d0 63 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a  cture = "x86";..
174e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
174f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
17500 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
17510 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
17520 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17540 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
17550 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
17560 68 6f 77 20 74 68 61 74 20 77 65 20 68 69 74 20  how that we hit 
17570 61 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c  a fairly unusual
17580 20 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e   situation (i.e.
17590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
175a0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
175b0 20 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73   "wrong" process
175c0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
175d0 77 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a  was detected)...
175e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17600 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
17610 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
17620 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
17630 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
17640 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
17650 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
17660 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
17670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
17680 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
17690 65 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65  e-loader detecte
176a0 64 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65  d {0}-bit pointe
176b0 72 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  r " +..         
176c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 69               "si
176d0 7a 65 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f  ze with processo
176e0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c  r architecture \
176f0 22 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20  "{1}\", using " 
17700 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
17710 20 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73           "proces
17720 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
17730 20 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64   \"{2}\" instead
17740 2e 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ...",..         
17750 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
17760 50 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20  Ptr.Size * 8 /* 
17770 62 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72  bits */, savedPr
17780 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
17790 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
177a0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
177b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
177c0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
177d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
177e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
177f0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
17800 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17810 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
17820 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
17830 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
17840 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
17850 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
17860 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
17870 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69 6e 67  TE: When running
17880 20 6f 6e 20 50 4f 53 49 58 20 28 6e 6f 6e 2d 57   on POSIX (non-W
17890 69 6e 64 6f 77 73 29 2c 20 61 74 74 65 6d 70 74  indows), attempt
178a0 20 74 6f 20 71 75 65 72 79 20 74 68 65 0d 0a 20   to query the.. 
178b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
178c0 20 20 6d 61 63 68 69 6e 65 20 66 72 6f 6d 20 74    machine from t
178d0 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
178e0 74 65 6d 20 76 69 61 20 75 6e 61 6d 65 28 29 2e  tem via uname().
178f0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
17900 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
17910 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
17920 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 20 26 26  ture == null) &&
17930 20 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e   !HelperMethods.
17940 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20  IsWindows())..  
17950 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17960 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
17970 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
17980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
179a0 20 20 20 69 66 20 28 28 75 74 73 4e 61 6d 65 2e     if ((utsName.
179b0 6d 61 63 68 69 6e 65 20 21 3d 20 6e 75 6c 6c 29  machine != null)
179c0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
179d0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
179e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
179f0 73 69 78 2e 47 65 74 4f 73 56 65 72 73 69 6f 6e  six.GetOsVersion
17a00 49 6e 66 6f 28 72 65 66 20 75 74 73 4e 61 6d 65  Info(ref utsName
17a10 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
17a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
17a40 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
17a50 74 75 72 65 20 3d 20 75 74 73 4e 61 6d 65 2e 6d  ture = utsName.m
17a60 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20  achine;..       
17a70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
17a80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
17a90 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73           }..#els
17aa0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  e..          if 
17ab0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
17ac0 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
17ad0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
17ae0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
17af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17b00 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
17b10 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
17b20 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f  work, attempt to
17b30 20 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 0d   use the native.
17b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
17b50 2f 20 20 20 20 20 20 20 57 69 6e 33 32 20 41 50  /       Win32 AP
17b60 49 20 66 75 6e 63 74 69 6f 6e 20 28 76 69 61 20  I function (via 
17b70 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61 74 20 63  P/Invoke) that c
17b80 61 6e 20 70 72 6f 76 69 64 65 20 75 73 0d 0a 20  an provide us.. 
17b90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17ba0 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 70        with the p
17bb0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
17bc0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
17bd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17be0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
17bf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
17c20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
17c30 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65  he output of the
17c40 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 20 66   GetSystemInfo f
17c50 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d  unction will be.
17c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17c70 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 63     //       plac
17c80 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74  ed here.  Only t
17c90 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
17ca0 68 69 74 65 63 74 75 72 65 20 66 69 65 6c 64 0d  hitecture field.
17cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17cc0 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 75     //       is u
17cd0 73 65 64 20 62 79 20 74 68 69 73 20 6d 65 74 68  sed by this meth
17ce0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
17cf0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17d00 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
17d10 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
17d20 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46  Win32.SYSTEM_INF
17d30 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d  O systemInfo;...
17d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17d50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17d60 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
17d70 3a 20 51 75 65 72 79 20 74 68 65 20 73 79 73 74  : Query the syst
17d80 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76  em information v
17d90 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75  ia P/Invoke, thu
17da0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
17db0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 69       //       fi
17dc0 6c 6c 69 6e 67 20 74 68 65 20 73 74 72 75 63 74  lling the struct
17dd0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ure...          
17de0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
17e00 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
17e10 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65 6d  sWin32.GetSystem
17e20 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d 49  Info(out systemI
17e30 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nfo);....       
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 52 65 74 75 72 6e   // NOTE: Return
17e70 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   the processor a
17e80 72 63 68 69 74 65 63 74 75 72 65 20 76 61 6c 75  rchitecture valu
17e90 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a  e as a string...
17ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17eb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17ec0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
17ed0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 0d  rArchitecture =.
17ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17ef0 20 20 20 20 20 20 20 73 79 73 74 65 6d 49 6e 66         systemInf
17f00 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68  o.wProcessorArch
17f10 69 74 65 63 74 75 72 65 2e 54 6f 53 74 72 69 6e  itecture.ToStrin
17f20 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
17f30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
17f40 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
17f50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
17f70 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
17f80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
17f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17fa0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
17fb0 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20    // NOTE: Upon 
17fc0 66 61 69 6c 75 72 65 2c 20 72 65 74 75 72 6e 20  failure, return 
17fd0 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e  an empty string.
17fe0 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76    This will prev
17ff0 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
18000 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
18010 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66  calling method f
18020 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20  rom considering 
18030 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c  this method call
18040 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
18050 20 20 2f 2f 20 20 20 20 20 20 20 22 66 61 69 6c    //       "fail
18060 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  ure"...         
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 70 72 6f 63 65 73 73 6f 72         processor
18090 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53  Architecture = S
180a0 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20  tring.Empty;..  
180b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
180c0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
180d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18120 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
18130 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
18140 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
18150 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
181a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
181b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65  ..      /// Give
181c0 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  n the processor 
181d0 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 72 65  architecture, re
181e0 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f  turns the name o
181f0 66 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d  f the platform..
18200 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
18210 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
18220 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
18230 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18240 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
18250 20 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61   The processor a
18260 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 62  rchitecture to b
18270 65 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20  e translated to 
18280 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  a platform name.
18290 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
182a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
182b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
182c0 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72   /// The platfor
182d0 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73  m name for the s
182e0 70 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73  pecified process
182f0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
18300 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20  -OR- null..     
18310 20 2f 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f   /// if it canno
18320 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
18330 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
18340 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
18350 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
18360 69 6e 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e  ing GetPlatformN
18370 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
18380 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72  string processor
18390 41 72 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20  Architecture /* 
183a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
183b0 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
183c0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
183d0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
183e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
183f0 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
18400 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
18410 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
18420 68 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a  hitecture();....
18430 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
18440 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
18450 74 79 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ty(processorArch
18460 69 74 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20  itecture))..    
18470 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18480 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
18490 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
184a0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
184b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
184c0 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
184d0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
184e0 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c  latforms == null
184f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18500 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
18510 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
18520 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f     string platfo
18530 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  rmName;....     
18540 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
18550 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18560 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47  rePlatforms.TryG
18570 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
18580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18590 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
185a0 63 74 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66  cture, out platf
185b0 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ormName))..     
185c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
185d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
185e0 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  turn platformNam
185f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
18600 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
18610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
18620 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
18630 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
18690 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
186a0 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
186b0 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69  to load the nati
186c0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
186d0 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73  y based on the s
186e0 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20  pecified..      
186f0 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e  /// directory an
18700 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
18710 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
18720 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18730 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
18740 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65  m name="baseDire
18750 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f  ctory">..      /
18760 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72 65  // The base dire
18770 63 74 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75  ctory to use, nu
18780 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28  ll for default (
18790 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
187a0 72 79 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry of..      ///
187b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
187c0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29  lication domain)
187d0 2e 20 20 54 68 69 73 20 64 69 72 65 63 74 6f 72  .  This director
187e0 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  y should contain
187f0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
18800 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
18810 65 63 74 75 72 65 20 73 70 65 63 69 66 69 63 20  ecture specific 
18820 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e  sub-directories.
18830 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
18840 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
18850 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
18860 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18870 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re">..      /// 
18880 54 68 65 20 72 65 71 75 65 73 74 65 64 20 70 72  The requested pr
18890 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
188a0 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64  ture, null for d
188b0 65 66 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20  efault (the..   
188c0 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
188d0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
188e0 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
188f0 63 65 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c  cess).  This cal
18900 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ler should..    
18910 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77    /// almost alw
18920 61 79 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c  ays specify null
18930 20 66 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65   for this parame
18940 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
18950 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
18960 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18970 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c  "nativeModuleFil
18980 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
18990 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61 74 65  // The candidate
189a0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 66   native module f
189b0 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64  ile name to load
189c0 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 20   will be stored 
189d0 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  here,..      ///
189e0 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
189f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18a00 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
18a10 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
18a20 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d  eModuleHandle">.
18a30 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
18a40 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
18a50 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65 64 20  dle as returned 
18a60 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79 20 77  by LoadLibrary w
18a70 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d 0a 20  ill be stored.. 
18a80 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69       /// here, i
18a90 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  f necessary.  Th
18aa0 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
18ab0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69 66 20   IntPtr.Zero if 
18ac0 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20  the call to..   
18ad0 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61     /// LoadLibra
18ae0 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20  ry fails...     
18af0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18b00 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
18b10 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  s>..      /// No
18b20 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61  n-zero if the na
18b30 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61 73 20  tive module was 
18b40 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73 66 75  loaded successfu
18b50 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  lly; otherwise,.
18b60 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
18b70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
18b80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
18b90 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
18ba0 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 44  l PreLoadSQLiteD
18bb0 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ll(..          s
18bc0 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74  tring baseDirect
18bd0 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20 20 20  ory,            
18be0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
18bf0 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
18c00 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
18c10 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
18c20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
18c30 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ing nativeModule
18c40 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74  FileName, /* out
18c50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   */..          r
18c60 65 66 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65  ef IntPtr native
18c70 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20  ModuleHandle    
18c80 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
18c90 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
18ca0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
18cb0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
18cc0 3a 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69  : If the specifi
18cd0 65 64 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  ed base director
18ce0 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74  y is null, use t
18cf0 68 65 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20  he default..    
18d00 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
18d10 69 2e 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20  i.e. attempt to 
18d20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
18d30 74 65 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20  tect it)...     
18d40 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18d50 20 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63     if (baseDirec
18d60 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tory == null).. 
18d70 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73               bas
18d80 65 44 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74  eDirectory = Get
18d90 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b  BaseDirectory();
18da0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
18db0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
18dc0 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65  OTE: If we faile
18dd0 64 20 74 6f 20 71 75 65 72 79 20 74 68 65 20 62  d to query the b
18de0 61 73 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73  ase directory, s
18df0 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
18e00 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18e10 20 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74    if (baseDirect
18e20 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
18e30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
18e40 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
18e50 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
18e60 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65       // NOTE: De
18e70 74 65 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65  termine the base
18e80 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
18e90 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
18ea0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
18eb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
18ec0 20 74 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f   this is not kno
18ed0 77 6e 20 62 79 20 74 68 69 73 20 63 6c 61 73 73  wn by this class
18ee0 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74  , we cannot cont
18ef0 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  inue...         
18f00 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
18f10 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e  tring fileNameOn
18f20 6c 79 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69  ly = GetNativeLi
18f30 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
18f40 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
18f50 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e    if (fileNameOn
18f60 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
18f70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18f80 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
18f90 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18fa0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
18fb0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
18fc0 65 20 6c 69 62 72 61 72 79 20 65 78 69 73 74 73  e library exists
18fd0 20 69 6e 20 74 68 65 20 62 61 73 65 20 64 69 72   in the base dir
18fe0 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
18ff0 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c    //       itsel
19000 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  f, stop now...  
19010 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
19020 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
19030 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
19040 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
19050 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
19060 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
19070 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
19080 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
19090 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
190a0 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
190b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
190c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
190d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
190e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
190f0 20 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65   If the specifie
19100 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
19110 69 74 65 63 74 75 72 65 20 69 73 20 6e 75 6c 6c  itecture is null
19120 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  , use the..     
19130 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65       //       de
19140 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20  fault...        
19150 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19160 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
19170 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
19180 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19190 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
191a0 74 65 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f  tecture = GetPro
191b0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
191c0 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  re();....       
191d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
191e0 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
191f0 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20  failed to query 
19200 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
19210 63 68 69 74 65 63 74 75 72 65 2c 20 73 74 6f 70  chitecture, stop
19220 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
19230 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
19240 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
19250 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c  itecture == null
19260 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19270 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
19280 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
19290 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
192a0 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
192b0 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
192c0 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
192d0 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
192e0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c        //       l
192f0 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68 65  ibrary using the
19300 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
19310 74 65 63 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20  tecture name... 
19320 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19330 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
19340 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61  = FixUpDllFileNa
19350 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  me(MaybeCombineP
19360 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ath(MaybeCombine
19370 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20  Path(..         
19380 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f       baseDirecto
19390 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ry, processorArc
193a0 68 69 74 65 63 74 75 72 65 29 2c 20 66 69 6c 65  hitecture), file
193b0 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20  NameOnly));.... 
193c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
193d0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
193e0 49 66 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  If the file name
193f0 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72   based on the pr
19400 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
19410 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ture name..     
19420 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66       // is not f
19430 6f 75 6e 64 2c 20 74 72 79 20 75 73 69 6e 67 20  ound, try using 
19440 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 70  the associated p
19450 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
19460 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19470 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
19480 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
19490 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
194a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
194b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
194c0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
194d0 74 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74  t to translate t
194e0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
194f0 68 69 74 65 63 74 75 72 65 20 74 6f 20 61 0d 0a  hitecture to a..
19500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19510 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20         platform 
19520 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
19530 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
19540 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c         string pl
19550 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74  atformName = Get
19560 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f  PlatformName(pro
19570 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19580 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  re);....        
19590 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
195a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
195b0 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f   If we failed to
195c0 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 70   translate the p
195d0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74  latform name, st
195e0 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  op now...       
195f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
19600 20 20 20 20 20 20 20 20 20 69 66 20 28 70 6c 61           if (pla
19610 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c  tformName == nul
19620 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19630 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
19640 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
19650 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
19660 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
19670 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
19680 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
19690 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
196a0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
196b0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
196c0 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20 74 68  library using th
196d0 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  e platform name.
196e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
196f0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
19700 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78    fileName = Fix
19710 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61  UpDllFileName(Ma
19720 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d  ybeCombinePath(M
19730 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
19740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19750 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
19760 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29  y, platformName)
19770 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
19780 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
19790 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
197a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
197b0 20 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e   the file does n
197c0 6f 74 20 65 78 69 73 74 2c 20 73 6b 69 70 20 74  ot exist, skip t
197d0 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74  rying to load it
197e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
197f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19800 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78 69     if (!File.Exi
19810 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
19820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19830 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
19840 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
19850 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
19860 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
19870 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
19880 26 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44  && TRACE_PRELOAD
19890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
198a0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
198b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
198c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
198d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
198e0 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65 78 61 63   NOTE: Show exac
198f0 74 6c 79 20 77 68 65 72 65 20 77 65 20 61 72 65  tly where we are
19900 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20   trying to load 
19910 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
19920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19930 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c 69         SQLite li
19940 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20  brary from...   
19950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19960 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19970 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
19980 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
19990 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
199a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
199b0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
199c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
199d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
199e0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
199f0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
19a00 6f 61 64 65 72 20 69 73 20 74 72 79 69 6e 67 20  oader is trying 
19a10 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22  to load native "
19a20 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
19a30 20 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74            "SQLit
19a40 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
19a50 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29  "...", fileName)
19a60 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
19a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
19a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
19a90 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
19aa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19ab0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
19ac0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
19ad0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
19ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19af0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19b00 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
19b10 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20 74 68 65  empt to load the
19b20 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e   native library.
19b30 20 20 54 68 69 73 20 77 69 6c 6c 20 65 69 74 68    This will eith
19b40 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
19b50 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72    //       retur
19b60 6e 20 61 20 76 61 6c 69 64 20 6e 61 74 69 76 65  n a valid native
19b70 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20   module handle, 
19b80 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
19b90 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro,..           
19ba0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 74     //       or t
19bb0 68 72 6f 77 20 61 6e 20 65 78 63 65 70 74 69 6f  hrow an exceptio
19bc0 6e 2e 20 20 54 68 69 73 20 6d 75 73 74 20 75 73  n.  This must us
19bd0 65 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  e the appropriat
19be0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
19bf0 20 2f 2f 20 20 20 20 20 20 20 50 2f 49 6e 76 6f   //       P/Invo
19c00 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68  ke method for th
19c10 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74  e current operat
19c20 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20  ing system...   
19c30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
19c40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
19c50 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
19c60 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20  e = fileName;.. 
19c70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
19c80 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
19c90 3d 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48  = NativeLibraryH
19ca0 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72  elper.LoadLibrar
19cb0 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  y(fileName);....
19cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19cd0 74 75 72 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75  turn (nativeModu
19ce0 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  leHandle != IntP
19cf0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
19d00 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
19d10 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
19d20 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
19d30 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
19d40 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
19d50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
19d60 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
19d70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
19d80 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
19d90 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
19da0 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20  CE_PRELOAD..    
19db0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
19dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
19dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19de0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19df0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
19e00 20 46 69 72 73 74 2c 20 67 72 61 62 20 74 68 65   First, grab the
19e10 20 6c 61 73 74 20 57 69 6e 33 32 20 65 72 72 6f   last Win32 erro
19e20 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r number...     
19e30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e50 20 20 20 69 6e 74 20 6c 61 73 74 45 72 72 6f 72     int lastError
19e60 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61   = Marshal.GetLa
19e70 73 74 57 69 6e 33 32 45 72 72 6f 72 28 29 3b 20  stWin32Error(); 
19e80 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20  /* throw */.... 
19e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ea0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19eb0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
19ec0 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 66 61  Show where we fa
19ed0 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20 74 68 65  iled to load the
19ee0 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a   native SQLite..
19ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f00 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72 61    //       libra
19f10 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69  ry from along wi
19f20 74 68 20 74 68 65 20 57 69 6e 33 32 20 65 72 72  th the Win32 err
19f30 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20  or code and..   
19f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19f50 2f 20 20 20 20 20 20 20 65 78 63 65 70 74 69 6f  /       exceptio
19f60 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a  n information...
19f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f80 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19f90 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
19fa0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
19fb0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
19fc0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
19fd0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
19fe0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
19ff0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
1a010 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
1a020 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
1a030 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76 65 20 22  to load native "
1a040 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
1a050 20 20 20 20 20 20 20 20 20 20 22 53 51 4c 69 74            "SQLit
1a060 65 20 6c 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c  e library \"{0}\
1a070 22 20 28 67 65 74 4c 61 73 74 45 72 72 6f 72 20  " (getLastError 
1a080 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20  = {1}): {2}",.. 
1a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0a0 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c       fileName, l
1a0b0 61 73 74 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f  astError, e)); /
1a0c0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1a0d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a0e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1a0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a100 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a110 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
1a120 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1a130 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
1a140 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1a150 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1a160 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23  lse;..      }..#
1a170 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20  endif..#endif.. 
1a180 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1a190 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1e0 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
1a1f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a200 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ORK..    //..   
1a210 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
1a220 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
1a230 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74  amework, the nat
1a240 69 76 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ive interop asse
1a250 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f  mbly must..    /
1a260 2f 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20  /       be used 
1a270 62 65 63 61 75 73 65 20 69 74 20 70 72 6f 76 69  because it provi
1a280 64 65 73 20 73 65 76 65 72 61 6c 20 77 6f 72 6b  des several work
1a290 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20  arounds to .NET 
1a2a0 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20  Compact..    // 
1a2b0 20 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20        Framework 
1a2c0 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f  limitations impo
1a2d0 72 74 61 6e 74 20 66 6f 72 20 70 72 6f 70 65 72  rtant for proper
1a2e0 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68   operation of th
1a2f0 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20  e core..    //  
1a300 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61       System.Data
1a310 2e 53 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e  .SQLite function
1a320 61 6c 69 74 79 20 28 65 2e 67 2e 20 62 65 69 6e  ality (e.g. bein
1a330 67 20 61 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a  g able to bind..
1a340 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 61 72      //       par
1a350 61 6d 65 74 65 72 73 20 61 6e 64 20 68 61 6e 64  ameters and hand
1a360 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  le column values
1a370 20 6f 66 20 74 79 70 65 73 20 49 6e 74 36 34 20   of types Int64 
1a380 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20  and Double)...  
1a390 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
1a3a0 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
1a3b0 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
1a3c0 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 31 30 39  Lite.Interop.109
1a3d0 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51  .dll";..#elif SQ
1a3e0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
1a3f0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1a400 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 69  TE: Otherwise, i
1a410 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
1a420 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69 73  QLite library is
1a430 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20 69 74   enabled, use it
1a440 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69  ...    //..    i
1a450 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74  nternal const st
1a460 72 69 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20  ring SQLITE_DLL 
1a470 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65  = "sqlite3";..#e
1a480 6c 69 66 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f  lif USE_INTEROP_
1a490 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  DLL..    //..   
1a4a0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
1a4b0 69 73 65 2c 20 69 66 20 74 68 65 20 6e 61 74 69  ise, if the nati
1a4c0 76 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f  ve SQLite intero
1a4d0 70 20 61 73 73 65 6d 62 6c 79 20 69 73 20 65 6e  p assembly is en
1a4e0 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20  abled,..    //  
1a4f0 20 20 20 20 20 75 73 65 20 69 74 2e 0d 0a 20 20       use it...  
1a500 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e    //..    intern
1a510 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  al const string 
1a520 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51  SQLITE_DLL = "SQ
1a530 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c  Lite.Interop.dll
1a540 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f  ";..#else..    /
1a550 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1a560 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20  Finally, assume 
1a570 74 68 61 74 20 74 68 65 20 6d 69 78 65 64 2d 6d  that the mixed-m
1a580 6f 64 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20  ode assembly is 
1a590 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20  being used...   
1a5a0 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
1a5b0 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53  l const string S
1a5c0 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73  QLITE_DLL = "Sys
1a5d0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
1a5e0 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dll";..#endif...
1a5f0 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 73 65 63  .    // This sec
1a600 74 69 6f 6e 20 75 73 65 73 20 69 6e 74 65 72 6f  tion uses intero
1a610 70 20 63 61 6c 6c 73 20 74 68 61 74 20 61 6c 73  p calls that als
1a620 6f 20 66 65 74 63 68 20 74 65 78 74 20 6c 65 6e  o fetch text len
1a630 67 74 68 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20  gth to optimize 
1a640 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20  conversion...   
1a650 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e 67 20 74   // When using t
1a660 68 65 20 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c  he standard dll,
1a670 20 77 65 20 63 61 6e 20 72 65 70 6c 61 63 65 20   we can replace 
1a680 74 68 65 73 65 20 63 61 6c 6c 73 20 77 69 74 68  these calls with
1a690 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74 65 20 63   normal sqlite c
1a6a0 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  alls and..    //
1a6b0 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20   do unoptimized 
1a6c0 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69 6e 73 74  conversions inst
1a6d0 65 61 64 20 61 66 74 65 72 77 61 72 64 73 0d 0a  ead afterwards..
1a6e0 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74 65      #region inte
1a6f0 72 6f 70 20 61 64 64 65 64 20 74 65 78 74 6c 65  rop added textle
1a700 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69  ngth calls....#i
1a710 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
1a720 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  RD....    [DllIm
1a730 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a740 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1a750 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1a760 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  tPtr sqlite3_bin
1a770 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
1a780 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1a790 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1a7a0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1a7b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a7c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1a7d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1a7e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1a7f0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1a800 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e  database_name_in
1a810 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1a820 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1a830 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1a840 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a850 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1a860 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a870 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a880 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
1a890 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74  abase_name16_int
1a8a0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1a8b0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1a8c0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1a8d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a8e0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1a8f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a900 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1a910 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
1a920 74 79 70 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  type_interop(Int
1a930 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1a940 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1a950 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1a960 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a970 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1a980 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1a990 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1a9a0 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31 36 5f 69  umn_decltype16_i
1a9b0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1a9c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1a9d0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1a9e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a9f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1aa00 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1aa10 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1aa20 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
1aa30 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  me_interop(IntPt
1aa40 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1aa50 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1aa60 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1aa70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aa80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1aa90 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1aaa0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1aab0 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  n_name16_interop
1aac0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1aad0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1aae0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1aaf0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ab00 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ab10 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ab20 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1ab30 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
1ab40 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
1ab50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1ab60 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
1ab70 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ab80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ab90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1aba0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1abb0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1abc0 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
1abd0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1abe0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1abf0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1ac00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ac10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1ac20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ac30 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1ac40 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1ac50 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  table_name_inter
1ac60 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1ac70 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1ac80 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1ac90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1aca0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1acb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1acc0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1acd0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
1ace0 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49  name16_interop(I
1acf0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1ad00 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1ad10 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1ad20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ad30 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1ad40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ad50 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1ad60 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72  olumn_text_inter
1ad70 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1ad80 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1ad90 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1ada0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1adb0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1adc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1add0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ade0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36  e3_column_text16
1adf0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1ae00 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1ae10 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1ae20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ae30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1ae40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ae50 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1ae60 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f   sqlite3_errmsg_
1ae70 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
1ae80 62 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  b, ref int len);
1ae90 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1aea0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1aeb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1aec0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1aed0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1aee0 74 65 33 5f 70 72 65 70 61 72 65 5f 69 6e 74 65  te3_prepare_inte
1aef0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 49  rop(IntPtr db, I
1af00 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20  ntPtr pSql, int 
1af10 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50  nBytes, ref IntP
1af20 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74  tr stmt, ref Int
1af30 50 74 72 20 70 74 72 52 65 6d 61 69 6e 2c 20 72  Ptr ptrRemain, r
1af40 65 66 20 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b  ef int nRemain);
1af50 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1af60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1af70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1af80 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1af90 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1afa0 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e  te3_table_column
1afb0 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74 65 72 6f  _metadata_intero
1afc0 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  p(IntPtr db, byt
1afd0 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
1afe0 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
1aff0 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20  [] colName, ref 
1b000 49 6e 74 50 74 72 20 70 74 72 44 61 74 61 54 79  IntPtr ptrDataTy
1b010 70 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  pe, ref IntPtr p
1b020 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69  trCollSeq, ref i
1b030 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20  nt notNull, ref 
1b040 69 6e 74 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  int primaryKey, 
1b050 72 65 66 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c  ref int autoInc,
1b060 20 72 65 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20   ref int dtLen, 
1b070 72 65 66 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d  ref int csLen);.
1b080 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1b090 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b0a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b0b0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1b0c0 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  r sqlite3_value_
1b0d0 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74  text_interop(Int
1b0e0 50 74 72 20 70 2c 20 72 65 66 20 69 6e 74 20 6c  Ptr p, ref int l
1b0f0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1b100 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b110 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1b120 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b130 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
1b140 61 6c 75 65 5f 74 65 78 74 31 36 5f 69 6e 74 65  alue_text16_inte
1b150 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65  rop(IntPtr p, re
1b160 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1b170 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b180 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1b190 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1b1a0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1b1b0 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69  e3_malloc_size_i
1b1c0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 29  nterop(IntPtr p)
1b1d0 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
1b1e0 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  _LOG..    [DllIm
1b1f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b200 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b210 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1b220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1b230 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67  lite3_config_log
1b240 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e  _interop();..#en
1b250 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20  dif..#endif..// 
1b260 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1b270 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
1b280 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65  on....    // The
1b290 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 64 64  se functions add
1b2a0 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69   existing functi
1b2b0 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f  onality on top o
1b2c0 66 20 53 51 4c 69 74 65 20 61 6e 64 20 72 65 71  f SQLite and req
1b2d0 75 69 72 65 20 61 20 6c 69 74 74 6c 65 20 65 66  uire a little ef
1b2e0 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20  fort to..    // 
1b2f0 67 65 74 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e  get working when
1b300 20 75 73 69 6e 67 20 74 68 65 20 73 74 61 6e 64   using the stand
1b310 61 72 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ard SQLite libra
1b320 72 79 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  ry...    #region
1b330 20 69 6e 74 65 72 6f 70 20 61 64 64 65 64 20 66   interop added f
1b340 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a  unctionality....
1b350 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1b360 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
1b370 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1b380 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1b390 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b3a0 49 6e 74 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c  IntPtr interop_l
1b3b0 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a  ibversion();....
1b3c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b3d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1b3e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1b3f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69   extern IntPtr i
1b400 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65 69 64 28  nterop_sourceid(
1b410 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1b420 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b430 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b440 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1b450 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c  t interop_compil
1b460 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74  eoption_used(Int
1b470 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a  Ptr zOptName);..
1b480 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b490 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1b4a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b4b0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1b4c0 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65   interop_compile
1b4d0 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e  option_get(int N
1b4e0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1b4f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b500 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b510 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1b520 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1b530 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65  lite3_close_inte
1b540 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
1b550 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1b560 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b580 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1b590 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1b5a0 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
1b5b0 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  on_interop(IntPt
1b5c0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
1b5d0 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c  Name, int nArgs,
1b5e0 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50   int nType, IntP
1b5f0 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74  tr pvUser, SQLit
1b600 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  eCallback func, 
1b610 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
1b620 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61  step, SQLiteFina
1b630 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c  lCallback ffinal
1b640 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65  , int needCollSe
1b650 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  q);....    [DllI
1b660 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1b670 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1b680 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1b690 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1b6a0 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f  qlite3_finalize_
1b6b0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1b6c0 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tmt);....    [Dl
1b6d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b6e0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1b6f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b700 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1b710 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
1b720 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 49  finish_interop(I
1b730 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a  ntPtr backup);..
1b740 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b750 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1b760 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b770 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1b780 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1b790 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74  3_blob_close_int
1b7a0 65 72 6f 70 28 49 6e 74 50 74 72 20 62 6c 6f 62  erop(IntPtr blob
1b7b0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1b7c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b7d0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1b7e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1b7f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1b800 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72  lite3_open_inter
1b810 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
1b820 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76  lename, byte[] v
1b830 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70  fsName, SQLiteOp
1b840 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
1b850 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c  s, int extFuncs,
1b860 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b   ref IntPtr db);
1b870 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1b880 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b890 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b8a0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1b8b0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1b8c0 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72  te3_open16_inter
1b8d0 6f 70 28 62 79 74 65 5b 5d 20 75 74 66 38 46 69  op(byte[] utf8Fi
1b8e0 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76  lename, byte[] v
1b8f0 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70  fsName, SQLiteOp
1b900 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67  enFlagsEnum flag
1b910 73 2c 20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c  s, int extFuncs,
1b920 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b   ref IntPtr db);
1b930 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1b940 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b950 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b960 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1b970 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1b980 74 65 33 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f  te3_reset_intero
1b990 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
1b9a0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1b9b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b9c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b9d0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1b9e0 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 5f 69  qlite3_changes_i
1b9f0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1ba00 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  );..#endif..// !
1ba10 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1ba20 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
1ba30 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20  n....    // The 
1ba40 73 74 61 6e 64 61 72 64 20 61 70 69 20 63 61 6c  standard api cal
1ba50 6c 20 65 71 75 69 76 61 6c 65 6e 74 73 20 6f 66  l equivalents of
1ba60 20 74 68 65 20 61 62 6f 76 65 20 69 6e 74 65 72   the above inter
1ba70 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72  op calls..    #r
1ba80 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 76  egion standard v
1ba90 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72  ersions of inter
1baa0 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a  op functions....
1bab0 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
1bac0 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ARD....#if !PLAT
1bad0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bae0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1baf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bb00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bb10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bb20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bb30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bb40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bb50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bb60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bb70 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1bb80 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1bb90 63 6c 6f 73 65 28 49 6e 74 50 74 72 20 64 62 29  close(IntPtr db)
1bba0 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f  ;....#if !INTERO
1bbb0 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a  P_LEGACY_CLOSE..
1bbc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1bbd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1bbe0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1bbf0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1bc00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1bc10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bc20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1bc30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1bc40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1bc50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1bc60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bc70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bc80 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76   sqlite3_close_v
1bc90 32 28 49 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a  2(IntPtr db); /*
1bca0 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e   3.7.14+ */..#en
1bcb0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1bcc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1bcd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1bce0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1bcf0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1bd00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1bd10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1bd20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1bd30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1bd40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1bd50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1bd60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1bd70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1bd80 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
1bd90 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1bda0 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
1bdb0 41 72 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c  Args, int nType,
1bdc0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20   IntPtr pvUser, 
1bdd0 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66  SQLiteCallback f
1bde0 75 6e 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62  unc, SQLiteCallb
1bdf0 61 63 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74  ack fstep, SQLit
1be00 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
1be10 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21  final);....#if !
1be20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1be30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1be40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1be50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1be60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1be70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1be80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1be90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bea0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1beb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bec0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1bed0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1bee0 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74  te3_finalize(Int
1bef0 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
1bf00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1bf10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bf20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bf30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1bf40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1bf50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1bf60 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1bf70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bf80 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1bf90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1bfa0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1bfb0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1bfc0 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
1bfd0 6e 69 73 68 28 49 6e 74 50 74 72 20 62 61 63 6b  nish(IntPtr back
1bfe0 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
1bff0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c000 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c020 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c030 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c040 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c050 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c060 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c070 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c080 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c090 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1c0a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1c0b0 5f 72 65 73 65 74 28 49 6e 74 50 74 72 20 73 74  _reset(IntPtr st
1c0c0 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mt);....#if !PLA
1c0d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c0e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c0f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c100 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c110 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c120 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c130 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c150 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c160 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c170 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c180 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
1c190 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50  ameter_name(IntP
1c1a0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c1b0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1c1c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c1d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c1e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c1f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c200 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c210 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c220 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c230 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c240 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c250 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c260 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c270 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1c280 61 74 61 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74  atabase_name(Int
1c290 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c2a0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1c2b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c2c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c2d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c2e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c2f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c300 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c310 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c320 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c330 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c340 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c350 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c360 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1c370 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28  database_name16(
1c380 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1c390 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1c3a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c3b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c3c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c3d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c3e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c3f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c400 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c420 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1c430 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c440 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1c450 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1c460 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49 6e 74 50  mn_decltype(IntP
1c470 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c480 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1c490 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c4a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c4b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c4c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c4d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c4e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c4f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c500 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c510 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c520 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c530 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c540 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1c550 65 63 6c 74 79 70 65 31 36 28 49 6e 74 50 74 72  ecltype16(IntPtr
1c560 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1c570 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1c580 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c590 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c5a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c5b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c5c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c5d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c5e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c5f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c600 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c610 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c620 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1c630 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
1c640 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  e(IntPtr stmt, i
1c650 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1c660 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1c670 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1c680 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c690 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1c6a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1c6b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1c6c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1c6d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c6e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1c6f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c700 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c710 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1c720 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  lumn_name16(IntP
1c730 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c740 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1c750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c780 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c790 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c7a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c7b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c7c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c7d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c7e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c7f0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c800 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
1c810 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74  rigin_name(IntPt
1c820 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c830 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1c840 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c850 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c860 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c870 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c880 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c890 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c8a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c8b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c8c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c8d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c8e0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c8f0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72  qlite3_column_or
1c900 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50  igin_name16(IntP
1c910 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c920 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1c930 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c940 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c950 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c960 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c970 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c980 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c990 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c9a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c9b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c9c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c9d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c9e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
1c9f0 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  able_name(IntPtr
1ca00 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1ca10 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ca20 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ca30 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ca40 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ca50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ca60 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ca70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ca80 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ca90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1caa0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cab0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cac0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1cad0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
1cae0 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72  le_name16(IntPtr
1caf0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1cb00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1cb10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cb20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cb30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cb40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cb50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1cb60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cb70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1cb80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cb90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cba0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cbb0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1cbc0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
1cbd0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
1cbe0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
1cbf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cc00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cc10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cc20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cc30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1cc40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1cc50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1cc60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cc70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1cc80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1cc90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1cca0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1ccb0 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49 6e 74 50  lumn_text16(IntP
1ccc0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1ccd0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1cce0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ccf0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1cd00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cd10 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1cd20 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1cd30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1cd40 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1cd50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cd60 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1cd70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cd80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1cd90 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 49  sqlite3_errmsg(I
1cda0 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
1cdb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cdc0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cdd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cde0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cdf0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1ce00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1ce10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1ce20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ce30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1ce40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1ce50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1ce60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1ce70 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 49  qlite3_prepare(I
1ce80 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1ce90 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65   pSql, int nByte
1cea0 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 74  s, ref IntPtr st
1ceb0 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  mt, ref IntPtr p
1cec0 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69  trRemain);....#i
1ced0 66 20 55 53 45 5f 50 52 45 50 41 52 45 5f 56 32  f USE_PREPARE_V2
1cee0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1cef0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1cf00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cf10 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1cf20 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1cf30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cf40 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1cf50 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1cf60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1cf70 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1cf80 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cf90 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1cfa0 64 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  de sqlite3_prepa
1cfb0 72 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c  re_v2(IntPtr db,
1cfc0 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69 6e   IntPtr pSql, in
1cfd0 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49 6e  t nBytes, ref In
1cfe0 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20 49  tPtr stmt, ref I
1cff0 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e 29  ntPtr ptrRemain)
1d000 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1d010 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d020 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d030 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d040 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d050 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d060 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d070 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1d080 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d090 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1d0a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1d0b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1d0c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1d0d0 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75  lite3_table_colu
1d0e0 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49 6e 74 50  mn_metadata(IntP
1d0f0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
1d100 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
1d110 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
1d120 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
1d130 20 70 74 72 44 61 74 61 54 79 70 65 2c 20 72 65   ptrDataType, re
1d140 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c  f IntPtr ptrColl
1d150 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74  Seq, ref int not
1d160 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20 70 72  Null, ref int pr
1d170 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20 69 6e  imaryKey, ref in
1d180 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23  t autoInc);....#
1d190 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1d1a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1d1b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d1c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1d1d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1d1e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1d1f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1d200 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d210 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1d220 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1d230 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d240 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76  IntPtr sqlite3_v
1d250 61 6c 75 65 5f 74 65 78 74 28 49 6e 74 50 74 72  alue_text(IntPtr
1d260 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
1d270 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d280 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d290 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d2a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d2b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d2c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d2d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d2e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d2f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d300 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d310 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1d320 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
1d330 78 74 31 36 28 49 6e 74 50 74 72 20 70 29 3b 0d  xt16(IntPtr p);.
1d340 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ...#endif..    /
1d350 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  / SQLITE_STANDAR
1d360 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  D....    #endreg
1d370 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68  ion....    // Th
1d380 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ese functions ar
1d390 65 20 63 75 73 74 6f 6d 20 61 6e 64 20 68 61 76  e custom and hav
1d3a0 65 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20  e no equivalent 
1d3b0 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79  standard library
1d3c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
1d3d0 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20 61 72 65   All of them are
1d3e0 20 22 6e 69 63 65 20 74 6f 20 68 61 76 65 73 22   "nice to haves"
1d3f0 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65 73 73 61   and not necessa
1d400 72 69 6c 79 20 22 6e 65 65 64 20 74 6f 20 68 61  rily "need to ha
1d410 76 65 73 22 2e 0d 0a 20 20 20 20 23 72 65 67 69  ves"...    #regi
1d420 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74  on no equivalent
1d430 20 73 74 61 6e 64 61 72 64 20 6d 65 74 68 6f 64   standard method
1d440 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f  ....#if !SQLITE_
1d450 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20  STANDARD....    
1d460 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d470 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d480 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d490 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d4a0 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73  e3_context_colls
1d4b0 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  eq_interop(IntPt
1d4c0 72 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 69  r context, ref i
1d4d0 6e 74 20 74 79 70 65 2c 20 72 65 66 20 69 6e 74  nt type, ref int
1d4e0 20 65 6e 63 2c 20 72 65 66 20 69 6e 74 20 6c 65   enc, ref int le
1d4f0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1d500 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d510 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d520 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1d530 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  nt sqlite3_conte
1d540 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69  xt_collcompare_i
1d550 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1d560 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 70 31  ntext, byte[] p1
1d570 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74  , int p1len, byt
1d580 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70 32 6c 65  e[] p2, int p2le
1d590 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1d5a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d5b0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d5c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d5d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d5e0 71 6c 69 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f  qlite3_cursor_ro
1d5f0 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  wid_interop(IntP
1d600 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 63 75 72  tr stmt, int cur
1d610 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f  sor, ref long ro
1d620 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wid);....    [Dl
1d630 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d640 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1d650 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d660 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1d670 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
1d680 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72  olumn_info_inter
1d690 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  op(IntPtr db, by
1d6a0 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79  te[] catalog, by
1d6b0 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20  te[] IndexName, 
1d6c0 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d  byte[] ColumnNam
1d6d0 65 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4f  e, ref int sortO
1d6e0 72 64 65 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e  rder, ref int on
1d6f0 45 72 72 6f 72 2c 20 72 65 66 20 49 6e 74 50 74  Error, ref IntPt
1d700 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66  r Collation, ref
1d710 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a   int colllen);..
1d720 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d730 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d740 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d750 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1d760 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 75 72 73  lite3_table_curs
1d770 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  or_interop(IntPt
1d780 72 20 73 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20  r stmt, int db, 
1d790 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74 50 61 67  int tableRootPag
1d7a0 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f  e);....#endif../
1d7b0 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
1d7c0 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
1d7d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  gion....    // S
1d7e0 74 61 6e 64 61 72 64 20 41 50 49 20 63 61 6c 6c  tandard API call
1d7f0 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20  s global across 
1d800 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 72 65  versions.  There
1d810 20 61 72 65 20 61 20 66 65 77 20 69 6e 73 74 61   are a few insta
1d820 6e 63 65 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  nces of interop 
1d830 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63  calls..    // sc
1d840 61 74 74 65 72 65 64 20 69 6e 20 68 65 72 65 2c  attered in here,
1d850 20 62 75 74 20 74 68 65 79 20 61 72 65 20 6f 6e   but they are on
1d860 6c 79 20 61 63 74 69 76 65 20 77 68 65 6e 20 50  ly active when P
1d870 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d880 52 41 4d 45 57 4f 52 4b 20 69 73 20 64 65 63 6c  RAMEWORK is decl
1d890 61 72 65 64 2e 0d 0a 20 20 20 20 23 72 65 67 69  ared...    #regi
1d8a0 6f 6e 20 73 74 61 6e 64 61 72 64 20 73 71 6c 69  on standard sqli
1d8b0 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a  te api calls....
1d8c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d8d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d8e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d8f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d920 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d930 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d940 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d950 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d960 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d970 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1d980 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d  libversion();...
1d990 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d9a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d9b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d9c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d9d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d9e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d9f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1da00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1da10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1da20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1da30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1da40 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69  n int sqlite3_li
1da50 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28  bversion_number(
1da60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1da70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1da80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1da90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1daa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dab0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1dac0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1dad0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1dae0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1daf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1db00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db10 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1db20 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29  lite3_sourceid()
1db30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1db40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1db50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1db60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1db70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1db80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1db90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1dba0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1dbb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1dbc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dbd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dbe0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1dbf0 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
1dc00 75 73 65 64 28 49 6e 74 50 74 72 20 7a 4f 70 74  used(IntPtr zOpt
1dc10 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
1dc20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1dc30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1dc40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1dc50 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1dc60 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1dc70 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dc80 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1dc90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dca0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1dcb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dcc0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1dcd0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  r sqlite3_compil
1dce0 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20  eoption_get(int 
1dcf0 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  N);....#if !PLAT
1dd00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1dd10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1dd20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1dd30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1dd40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1dd50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1dd60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1dd70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1dd80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1dd90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1dda0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1ddb0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1ddc0 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61  enable_shared_ca
1ddd0 63 68 65 28 0d 0a 20 20 20 20 20 20 20 20 69 6e  che(..        in
1dde0 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
1ddf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1de00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1de10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1de20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1de30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1de40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1de50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1de60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1de70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1de80 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1de90 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1dea0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1deb0 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f  qlite3_enable_lo
1dec0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
1ded0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
1dee0 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a  , int enable);..
1def0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1df00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1df10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1df20 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1df30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1df40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1df50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1df60 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1df70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1df80 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1df90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1dfa0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1dfb0 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f  de sqlite3_load_
1dfc0 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
1dfd0 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 62      IntPtr db, b
1dfe0 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20  yte[] fileName, 
1dff0 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c  byte[] procName,
1e000 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
1e010 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
1e020 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e030 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e050 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e060 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e070 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e080 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e090 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e0a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e0b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e0c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1e0d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1e0e0 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69  _overload_functi
1e0f0 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  on(IntPtr db, In
1e100 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20  tPtr zName, int 
1e110 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57  nArgs);....#if W
1e120 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41  INDOWS..#if !PLA
1e130 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e140 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e160 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e170 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e180 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
1e190 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
1e1a0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
1e1b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e1c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e1d0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1e1e0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
1e1f0 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
1e200 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
1e210 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f  lite3_win32_set_
1e220 64 69 72 65 63 74 6f 72 79 22 20 53 51 4c 69 74  directory" SQLit
1e230 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66  e core library f
1e240 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20  unction is..    
1e250 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75  //       only su
1e260 70 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f  pported on Windo
1e270 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ws...    //..   
1e280 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e290 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1e2a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1e2b0 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65 63 74  win32_set_direct
1e2c0 6f 72 79 28 75 69 6e 74 20 74 79 70 65 2c 20 73  ory(uint type, s
1e2d0 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d  tring value);...
1e2e0 0a 23 69 66 20 21 44 45 42 55 47 20 2f 2f 20 4e  .#if !DEBUG // N
1e2f0 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62 65 20 22  OTE: Should be "
1e300 57 49 4e 33 32 48 45 41 50 20 26 26 20 21 4d 45  WIN32HEAP && !ME
1e310 4d 44 45 42 55 47 22 0d 0a 23 69 66 20 21 50 4c  MDEBUG"..#if !PL
1e320 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e330 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e340 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e350 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e360 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e370 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e380 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e390 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e3a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e3b0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1e3c0 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33  TE: The "sqlite3
1e3d0 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
1e3e0 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
1e3f0 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
1e400 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
1e410 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
1e420 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
1e430 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
1e440 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
1e450 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
1e460 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
1e470 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
1e480 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
1e490 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
1e4a0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1e4b0 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
1e4c0 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
1e4d0 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
1e4e0 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
1e4f0 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
1e500 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
1e510 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
1e520 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e530 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1e540 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1e550 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
1e560 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21  heap();....#if !
1e570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e5a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e5b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e5c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e5d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e5e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e5f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e600 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1e610 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
1e620 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74  e3_win32_compact
1e630 5f 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f  _heap" SQLite co
1e640 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
1e650 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
1e660 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
1e670 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77  ted on Windows w
1e680 68 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61  hen the Win32 na
1e690 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69  tive allocator i
1e6a0 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20  s in..    //    
1e6b0 20 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20     use (i.e. by 
1e6c0 64 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c  default, in "Rel
1e6d0 65 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20  ease" builds of 
1e6e0 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
1e6f0 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  te..    //      
1e700 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61   only).  By defa
1e710 75 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20  ult, in "Debug" 
1e720 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d  builds of System
1e730 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68  .Data.SQLite, th
1e740 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1e750 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74  MEMDEBUG allocat
1e760 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20  or is used...   
1e770 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61   //..    interna
1e780 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e790 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e7a0 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f  sqlite3_win32_co
1e7b0 6d 70 61 63 74 5f 68 65 61 70 28 72 65 66 20 75  mpact_heap(ref u
1e7c0 69 6e 74 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23  int largest);..#
1e7d0 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
1e7e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e7f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e800 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e810 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e820 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e830 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e840 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e850 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e860 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e870 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e880 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e890 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1e8a0 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d  _malloc(int n);.
1e8b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e8c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e8d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e8e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e8f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e900 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e910 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e920 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e930 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e940 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e950 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e960 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1e970 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e  e3_malloc64(ulon
1e980 67 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  g n);....#if !PL
1e990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e9a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e9b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e9c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e9d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e9e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e9f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ea00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ea10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ea20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ea30 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1ea40 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
1ea50 28 49 6e 74 50 74 72 20 70 2c 20 69 6e 74 20 6e  (IntPtr p, int n
1ea60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ea70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ea80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ea90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1eaa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1eab0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1eac0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ead0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1eae0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1eaf0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1eb00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1eb10 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1eb20 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28  lite3_realloc64(
1eb30 49 6e 74 50 74 72 20 70 2c 20 75 6c 6f 6e 67 20  IntPtr p, ulong 
1eb40 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
1eb50 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1eb60 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1eb70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1eb80 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1eb90 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1eba0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ebb0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ebc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ebd0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ebe0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ebf0 20 65 78 74 65 72 6e 20 75 6c 6f 6e 67 20 73 71   extern ulong sq
1ec00 6c 69 74 65 33 5f 6d 73 69 7a 65 28 49 6e 74 50  lite3_msize(IntP
1ec10 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
1ec20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ec30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ec40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ec50 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ec60 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ec70 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ec80 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ec90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eca0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ecb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ecc0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
1ecd0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 49 6e 74  sqlite3_free(Int
1ece0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
1ecf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ed00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ed10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ed20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ed30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ed40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ed50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ed60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ed70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ed80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ed90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1eda0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1edb0 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65  te3_open_v2(byte
1edc0 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c  [] utf8Filename,
1edd0 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 2c 20   ref IntPtr db, 
1ede0 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45  SQLiteOpenFlagsE
1edf0 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79 74 65 5b  num flags, byte[
1ee00 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] vfsName);....#
1ee10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ee20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ee30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ee40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ee50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ee60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ee70 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
1ee80 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
1ee90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1eea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1eeb0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
1eec0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
1eed0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1eee0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1eef0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1ef00 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70  rCode sqlite3_op
1ef10 65 6e 31 36 28 73 74 72 69 6e 67 20 66 69 6c 65  en16(string file
1ef20 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
1ef30 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
1ef40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ef50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ef60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ef70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ef80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ef90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1efa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1efb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1efc0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1efd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1efe0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1eff0 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
1f000 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
1f010 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f020 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f030 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f040 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f050 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f060 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f070 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1f080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f090 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
1f0a0 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
1f0b0 77 69 64 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  wid(IntPtr db);.
1f0c0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1f0d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f0e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f0f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f100 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f110 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f120 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f130 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f140 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f150 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f160 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f170 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1f180 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
1f190 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
1f1a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f1b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f1c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f1d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f1e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f1f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f200 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1f210 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f220 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
1f230 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d  _memory_used();.
1f240 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
1f250 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f260 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f270 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f280 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f290 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f2a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f2b0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1f2c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1f2d0 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
1f2e0 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 69 6e  ory_highwater(in
1f2f0 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23  t resetFlag);..#
1f300 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1f310 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f320 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f340 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f350 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f360 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f370 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f380 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f390 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f3a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f3b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f3c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f3d0 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d  3_shutdown();...
1f3e0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f3f0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f400 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f410 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f420 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f430 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f440 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f450 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f460 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f470 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f480 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f490 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f4a0 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  e sqlite3_busy_t
1f4b0 69 6d 65 6f 75 74 28 49 6e 74 50 74 72 20 64 62  imeout(IntPtr db
1f4c0 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69  , int ms);....#i
1f4d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f4e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f4f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f500 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f510 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f520 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f530 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f540 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f550 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f560 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f570 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1f580 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1f590 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e  qlite3_clear_bin
1f5a0 64 69 6e 67 73 28 49 6e 74 50 74 72 20 73 74 6d  dings(IntPtr stm
1f5b0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1f5c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f5d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1f5e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f5f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1f600 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1f610 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1f620 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1f630 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f640 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1f650 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f660 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1f670 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1f680 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72  bind_blob(IntPtr
1f690 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1f6a0 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , Byte[] value, 
1f6b0 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
1f6c0 72 20 6e 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a  r nTransient);..
1f6d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f6e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f6f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f700 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f710 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f720 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f730 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1f740 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f750 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1f760 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1f770 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  ind_double(IntPt
1f780 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1f790 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  x, double value)
1f7a0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1f7b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f7c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f7d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f7e0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f7f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f800 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f810 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f820 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f830 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f840 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f850 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1f860 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1f870 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49  lite3_bind_int(I
1f880 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1f890 69 6e 64 65 78 2c 20 69 6e 74 20 76 61 6c 75 65  index, int value
1f8a0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  );....    //..  
1f8b0 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
1f8c0 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c  really just call
1f8d0 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  s "sqlite3_bind_
1f8e0 69 6e 74 22 3b 20 68 6f 77 65 76 65 72 2c 20 69  int"; however, i
1f8f0 74 20 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f  t has the..    /
1f900 2f 20 20 20 20 20 20 20 63 6f 72 72 65 63 74 20  /       correct 
1f910 74 79 70 65 20 73 69 67 6e 61 74 75 72 65 20 66  type signature f
1f920 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 28  or an unsigned (
1f930 33 32 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e  32-bit) integer.
1f940 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50  ..    //..#if !P
1f950 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f960 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f970 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f980 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1f990 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
1f9a0 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  int", CallingCon
1f9b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f9c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f9d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f9e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f9f0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
1fa00 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  t = "sqlite3_bin
1fa10 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66  d_int")]..#endif
1fa20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1fa30 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1fa40 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1fa50 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49  ite3_bind_uint(I
1fa60 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1fa70 69 6e 64 65 78 2c 20 75 69 6e 74 20 76 61 6c 75  index, uint valu
1fa80 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1fa90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1faa0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fab0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fac0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fad0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fae0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1faf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fb00 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1fb10 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1fb20 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49  te3_bind_int64(I
1fb30 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1fb40 69 6e 64 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75  index, long valu
1fb50 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
1fb60 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1fb70 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20  TE: This really 
1fb80 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69  just calls "sqli
1fb90 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b  te3_bind_int64";
1fba0 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73   however, it has
1fbb0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
1fbc0 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65 20     correct type 
1fbd0 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e  signature for an
1fbe0 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28   unsigned long (
1fbf0 36 34 2d 62 69 74 29 20 69 6e 74 65 67 65 72 2e  64-bit) integer.
1fc00 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50  ..    //..#if !P
1fc10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1fc20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1fc30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1fc40 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
1fc50 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  = "sqlite3_bind_
1fc60 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43  int64", CallingC
1fc70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fc80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1fc90 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1fca0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1fcb0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1fcc0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75  e sqlite3_bind_u
1fcd0 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d  int64(IntPtr stm
1fce0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c  t, int index, ul
1fcf0 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  ong value);..#en
1fd00 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
1fd10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fd20 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fd30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fd40 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fd50 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fd60 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1fd70 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1fd80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fd90 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1fda0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fdb0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1fdc0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1fdd0 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72  bind_null(IntPtr
1fde0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1fdf0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1fe00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fe10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1fe20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1fe30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1fe40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1fe50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1fe60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1fe70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fe80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1fe90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fea0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1feb0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1fec0 69 6e 64 5f 74 65 78 74 28 49 6e 74 50 74 72 20  ind_text(IntPtr 
1fed0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1fee0 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
1fef0 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nlen, IntPtr 
1ff00 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
1ff10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ff20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1ff30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ff40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ff50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ff60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ff70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1ff80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ff90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1ffa0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1ffb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ffc0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
1ffd0 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
1ffe0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  t(IntPtr stmt);.
1fff0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20000 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20010 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20020 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20030 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20040 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20050 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20060 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20070 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20080 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20090 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
200a0 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
200b0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
200c0 6e 64 65 78 28 49 6e 74 50 74 72 20 73 74 6d 74  ndex(IntPtr stmt
200d0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
200e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
200f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20100 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20110 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20120 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20130 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20140 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20150 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20160 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20170 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20180 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20190 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
201a0 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28  e3_column_count(
201b0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
201c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
201d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
201e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
201f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20200 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20210 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20220 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20230 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20240 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20250 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20260 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20270 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20280 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 49  e sqlite3_step(I
20290 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
202a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
202b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
202c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
202d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
202e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
202f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20300 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20310 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20320 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20330 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20340 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20350 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d   int sqlite3_stm
20360 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74  t_readonly(IntPt
20370 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e  r stmt); /* 3.7.
20380 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  4+ */....#if !PL
20390 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
203a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
203b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
203c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
203d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
203e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
203f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
20400 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
20410 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c  uble sqlite3_col
20420 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  umn_double(IntPt
20430 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
20440 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
20450 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20460 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20470 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20480 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20490 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
204a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
204b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
204c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
204d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
204e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
204f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20500 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
20510 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72 20 73 74  mn_int(IntPtr st
20520 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
20530 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20540 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20550 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20560 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20570 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20580 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20590 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
205a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
205b0 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
205c0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
205d0 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
205e0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64  nt index);..#end
205f0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
20600 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20610 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20620 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20630 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20640 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20650 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20660 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20670 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20680 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20690 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
206a0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
206b0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f  lite3_column_blo
206c0 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  b(IntPtr stmt, i
206d0 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69  nt index);....#i
206e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
206f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20710 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20720 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20740 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20750 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20760 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20770 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20780 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
20790 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
207a0 6e 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 73  n_bytes(IntPtr s
207b0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
207c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
207d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
207e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
207f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20800 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20810 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20820 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20830 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20840 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20850 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20860 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20870 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
20880 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28  _column_bytes16(
20890 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
208a0 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
208b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
208c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
208d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
208e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
208f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20910 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20920 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20930 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20940 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20950 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79 70  tatic extern Typ
20960 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65  eAffinity sqlite
20970 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e  3_column_type(In
20980 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
20990 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
209a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
209b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
209c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
209d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
209e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
209f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20a00 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20a10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20a20 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20a30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20a40 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20a50 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20a60 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74  e3_create_collat
20a70 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62  ion(IntPtr db, b
20a80 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69  yte[] strName, i
20a90 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72  nt nType, IntPtr
20aa0 20 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43   pvUser, SQLiteC
20ab0 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d  ollation func);.
20ac0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20ad0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20ae0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20af0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20b00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20b10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20b20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20b30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20b40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20b50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20b60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20b70 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
20b80 61 67 67 72 65 67 61 74 65 5f 63 6f 75 6e 74 28  aggregate_count(
20b90 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
20ba0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20bb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20bc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20bd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20be0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20bf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20c00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20c10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20c20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20c30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20c40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20c50 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20c60 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49  te3_value_blob(I
20c70 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
20c80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20c90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20ca0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20cb0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20cc0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20cd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20ce0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20cf0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20d00 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20d10 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20d20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
20d30 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
20d40 62 79 74 65 73 28 49 6e 74 50 74 72 20 70 29 3b  bytes(IntPtr p);
20d50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20d60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20d70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20d80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20d90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20da0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20db0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20dc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20dd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20de0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20df0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20e00 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
20e10 5f 76 61 6c 75 65 5f 62 79 74 65 73 31 36 28 49  _value_bytes16(I
20e20 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
20e30 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20e40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20e50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20e60 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20e70 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20e80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20e90 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
20ea0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20eb0 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33  n double sqlite3
20ec0 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e  _value_double(In
20ed0 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66  tPtr p);..#endif
20ee0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20ef0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20f00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20f10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20f20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20f30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20f40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20f50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20f60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20f70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20f80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20f90 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
20fa0 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74  _value_int(IntPt
20fb0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
20fc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20fd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20fe0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20ff0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21000 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21010 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21020 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
21030 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
21040 6e 67 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ng sqlite3_value
21050 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 70 29  _int64(IntPtr p)
21060 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
21070 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21080 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21090 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
210a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
210b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
210c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
210d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
210e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
210f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21100 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21110 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 54 79  static extern Ty
21120 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c 69 74  peAffinity sqlit
21130 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 49 6e  e3_value_type(In
21140 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
21150 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21160 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21180 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21190 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
211a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
211b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
211c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
211d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
211e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
211f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
21200 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
21210 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  _blob(IntPtr con
21220 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c  text, byte[] val
21230 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49  ue, int nSize, I
21240 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
21250 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21260 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21270 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21280 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21290 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
212a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
212b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
212c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
212d0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
212e0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
212f0 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e  ouble(IntPtr con
21300 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c  text, double val
21310 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
21320 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21330 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21340 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21350 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21360 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21370 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21380 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21390 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
213a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
213b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
213c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
213d0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
213e0 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e 74 50 74  sult_error(IntPt
213f0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
21400 5d 20 73 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c  ] strErr, int nL
21410 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  en);....#if !PLA
21420 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21430 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21440 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21450 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21460 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21470 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21480 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21490 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
214a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
214b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
214c0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
214d0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
214e0 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74 72 20 63  or_code(IntPtr c
214f0 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 45 72  ontext, SQLiteEr
21500 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d  rorCode value);.
21510 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21520 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21530 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21540 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21550 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21560 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21570 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21580 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21590 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
215a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
215b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
215c0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
215d0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f  _result_error_to
215e0 6f 62 69 67 28 49 6e 74 50 74 72 20 63 6f 6e 74  obig(IntPtr cont
215f0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
21600 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21610 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21620 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21630 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21640 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21650 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21660 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21670 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21680 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21690 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
216a0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
216b0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
216c0 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72  ror_nomem(IntPtr
216d0 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
216e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
216f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21710 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21720 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21740 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
21750 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21760 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
21770 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
21780 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
21790 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
217a0 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50 74 72 20  lt_value(IntPtr 
217b0 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20  context, IntPtr 
217c0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
217d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
217e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
217f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21800 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21810 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21820 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21830 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21840 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21850 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21860 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21870 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
21880 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
21890 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20  zeroblob(IntPtr 
218a0 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65  context, int nLe
218b0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  n);....#if !PLAT
218c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
218d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
218e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
218f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21900 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21910 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21920 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21930 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21940 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21950 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21960 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
21970 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
21980 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
21990 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  int value);....#
219a0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
219b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
219c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
219d0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
219e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
219f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21a00 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
21a10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21a20 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
21a30 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e  _result_int64(In
21a40 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f  tPtr context, lo
21a50 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ng value);..#end
21a60 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
21a70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21a80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21a90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21aa0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21ab0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21ac0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21ad0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21ae0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21af0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21b00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21b10 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
21b20 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28  te3_result_null(
21b30 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
21b40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
21b50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
21b60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
21b70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
21b80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21b90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21ba0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21bb0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21bc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21bd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21be0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21bf0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
21c00 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 49 6e  3_result_text(In
21c10 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
21c20 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
21c30 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nLen, IntPtr pvR
21c40 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
21c50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21c60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21c70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21c80 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21c90 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21ca0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21cb0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21cc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21cd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21ce0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21cf0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
21d00 74 50 74 72 20 73 71 6c 69 74 65 33 5f 61 67 67  tPtr sqlite3_agg
21d10 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 49  regate_context(I
21d20 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69  ntPtr context, i
21d30 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23  nt nBytes);....#
21d40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21d50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21d60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21d70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21d80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21d90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21da0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
21db0 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
21dc0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21dd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21de0 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
21df0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
21e00 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21e10 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21e20 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21e30 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
21e40 6e 64 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72  nd_text16(IntPtr
21e50 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21e60 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 20  , string value, 
21e70 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72  int nlen, IntPtr
21e80 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
21e90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21ea0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21eb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21ec0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21ed0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21ee0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21ef0 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74  n.Cdecl, CharSet
21f00 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
21f10 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  de)]..#else..   
21f20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21f30 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20  TE_DLL, CharSet 
21f40 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64  = CharSet.Unicod
21f50 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e)]..#endif..   
21f60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21f70 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
21f80 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
21f90 72 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  r16(IntPtr conte
21fa0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
21fb0 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a  me, int nLen);..
21fc0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21fd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21fe0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21ff0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22000 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22010 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22020 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
22030 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
22040 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
22050 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22060 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
22070 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
22080 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
22090 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
220a0 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
220b0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
220c0 74 31 36 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t16(IntPtr conte
220d0 78 74 2c 20 73 74 72 69 6e 67 20 73 74 72 4e 61  xt, string strNa
220e0 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e  me, int nLen, In
220f0 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29  tPtr pvReserved)
22100 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
22110 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f  _CODEC || INTERO
22120 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23  P_INCLUDE_SEE..#
22130 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22140 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22150 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22160 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22170 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22190 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
221a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
221b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
221c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
221d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
221e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
221f0 73 71 6c 69 74 65 33 5f 6b 65 79 28 49 6e 74 50  sqlite3_key(IntP
22200 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65  tr db, byte[] ke
22210 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d  y, int keylen);.
22220 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22230 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22240 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22250 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22260 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22270 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22280 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22290 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
222a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
222b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
222c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
222d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
222e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 6b 65  ode sqlite3_reke
222f0 79 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  y(IntPtr db, byt
22300 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79  e[] key, int key
22310 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  len);..#endif...
22320 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43  .#if INTEROP_INC
22330 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66  LUDE_ZIPVFS..#if
22340 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22350 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22360 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22370 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22380 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22390 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
223a0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
223b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
223c0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
223d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
223e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
223f0 69 64 20 7a 69 70 76 66 73 49 6e 69 74 5f 76 32  id zipvfsInit_v2
22400 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
22410 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22420 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22430 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22440 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22450 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22460 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22470 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22480 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22490 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
224a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
224b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70   extern void zip
224c0 76 66 73 49 6e 69 74 5f 76 33 28 69 6e 74 20 72  vfsInit_v3(int r
224d0 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66  egDflt);..#endif
224e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
224f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22500 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22510 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22520 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22530 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22540 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22550 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22560 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22570 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22580 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22590 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
225a0 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c  3_progress_handl
225b0 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  er(IntPtr db, in
225c0 74 20 6f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f  t ops, SQLitePro
225d0 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75  gressCallback fu
225e0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
225f0 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
22600 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22610 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22620 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22630 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22640 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22650 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22660 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22670 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22680 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22690 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
226a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
226b0 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
226c0 72 69 7a 65 72 28 49 6e 74 50 74 72 20 64 62 2c  rizer(IntPtr db,
226d0 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
226e0 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  rCallback func, 
226f0 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
22700 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22710 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22720 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22730 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22740 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22750 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22760 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22770 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22780 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22790 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
227a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
227b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
227c0 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49  e3_update_hook(I
227d0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
227e0 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 66  UpdateCallback f
227f0 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
22800 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
22810 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22820 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22830 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22840 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22850 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22860 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22870 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22880 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22890 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
228a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
228b0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
228c0 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68  sqlite3_commit_h
228d0 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ook(IntPtr db, S
228e0 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62  QLiteCommitCallb
228f0 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ack func, IntPtr
22900 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66   pvUser);....#if
22910 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22920 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22930 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22940 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22950 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22960 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22970 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22980 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22990 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
229a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
229b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
229c0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61  tPtr sqlite3_tra
229d0 63 65 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ce(IntPtr db, SQ
229e0 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
229f0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
22a00 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
22a10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22a20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22a30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22a40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22a50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22a60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22a70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22a80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22a90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22aa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22ab0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
22ac0 74 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  tr sqlite3_trace
22ad0 5f 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 53  _v2(IntPtr db, S
22ae0 51 4c 69 74 65 54 72 61 63 65 46 6c 61 67 73 20  QLiteTraceFlags 
22af0 6d 61 73 6b 2c 20 53 51 4c 69 74 65 54 72 61 63  mask, SQLiteTrac
22b00 65 43 61 6c 6c 62 61 63 6b 32 20 66 75 6e 63 2c  eCallback2 func,
22b10 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
22b20 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65  ....    // Since
22b30 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
22b40 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61 62  ) takes a variab
22b50 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74  le argument list
22b60 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65  , we have to ove
22b70 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f  rload declaratio
22b80 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61  ns..    // for a
22b90 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c  ll possible call
22ba0 73 20 74 68 61 74 20 77 65 20 77 61 6e 74 20 74  s that we want t
22bb0 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41  o use...#if !PLA
22bc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22bd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22be0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22bf0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
22c00 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
22c10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22c20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22c30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22c40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22c50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22c60 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
22c70 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22  "sqlite3_config"
22c80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22c90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22ca0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22cb0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
22cc0 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74  onfig_none(SQLit
22cd0 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
22ce0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
22cf0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22d00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22d10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22d20 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
22d30 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c  sqlite3_config",
22d40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22d50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22d60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22d70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22d80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22d90 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
22da0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29  sqlite3_config")
22db0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22dc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22dd0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22de0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f  rCode sqlite3_co
22df0 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69 74 65 43  nfig_int(SQLiteC
22e00 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c  onfigOpsEnum op,
22e10 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a   int value);....
22e20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22e30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22e40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22e50 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
22e60 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
22e70 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
22e80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22e90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22ea0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22eb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22ec0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
22ed0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
22ee0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
22ef0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
22f00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
22f10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
22f20 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
22f30 67 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  g(SQLiteConfigOp
22f40 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65  sEnum op, SQLite
22f50 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  LogCallback func
22f60 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
22f70 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22f80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22f90 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22fa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22fb0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
22fc0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
22fd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22fe0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22ff0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23000 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23020 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
23030 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
23040 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
23050 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23060 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
23070 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
23080 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 63 68 61 72  3_db_config_char
23090 70 74 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53  ptr(IntPtr db, S
230a0 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73  QLiteConfigDbOps
230b0 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20  Enum op, IntPtr 
230c0 63 68 61 72 50 74 72 29 3b 0d 0a 0d 0a 23 69 66  charPtr);....#if
230d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
230e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
230f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23100 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
23110 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
23120 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
23130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23150 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23170 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
23180 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
23190 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  _db_config")]..#
231a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
231b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
231c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
231d0 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e  e sqlite3_db_con
231e0 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e 74 28 49  fig_int_refint(I
231f0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
23200 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20  ConfigDbOpsEnum 
23210 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 2c 20 72  op, int value, r
23220 65 66 20 69 6e 74 20 72 65 73 75 6c 74 29 3b 0d  ef int result);.
23230 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23240 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23250 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23260 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
23270 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
23280 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20  te3_db_config", 
23290 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
232a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
232b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
232c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
232d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
232e0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
232f0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
23300 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
23310 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23320 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
23330 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
23340 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74 70 74 72  db_config_intptr
23350 5f 74 77 6f 5f 69 6e 74 73 28 49 6e 74 50 74 72  _two_ints(IntPtr
23360 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69   db, SQLiteConfi
23370 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 49  gDbOpsEnum op, I
23380 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20 69  ntPtr ptr, int i
23390 6e 74 30 2c 20 69 6e 74 20 69 6e 74 31 29 3b 0d  nt0, int int1);.
233a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
233b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
233c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
233d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
233e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
233f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23400 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23410 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23420 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23430 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23440 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23450 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
23460 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 73  ode sqlite3_db_s
23470 74 61 74 75 73 28 49 6e 74 50 74 72 20 64 62 2c  tatus(IntPtr db,
23480 20 53 51 4c 69 74 65 53 74 61 74 75 73 4f 70 73   SQLiteStatusOps
23490 45 6e 75 6d 20 6f 70 2c 20 72 65 66 20 69 6e 74  Enum op, ref int
234a0 20 63 75 72 72 65 6e 74 2c 20 72 65 66 20 69 6e   current, ref in
234b0 74 20 68 69 67 68 77 61 74 65 72 2c 20 69 6e 74  t highwater, int
234c0 20 72 65 73 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a   resetFlag);....
234d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
234e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
234f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23500 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23510 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23520 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23530 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23540 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23550 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23560 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23570 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23580 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
23590 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e  rollback_hook(In
235a0 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 52  tPtr db, SQLiteR
235b0 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20  ollbackCallback 
235c0 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
235d0 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
235e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
235f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23600 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23610 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23620 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23630 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23640 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23650 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23660 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23670 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23680 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
23690 20 73 71 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64   sqlite3_db_hand
236a0 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  le(IntPtr stmt);
236b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
236c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
236d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
236e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
236f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23700 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23710 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23720 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23730 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23740 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23750 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23760 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23770 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f  Code sqlite3_db_
23780 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49  release_memory(I
23790 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69  ntPtr db);....#i
237a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
237b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
237c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
237d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
237e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
237f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23800 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23810 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23820 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23830 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23840 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
23850 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62  ntPtr sqlite3_db
23860 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72  _filename(IntPtr
23870 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61   db, IntPtr dbNa
23880 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
23890 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
238a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
238b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
238c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
238d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
238e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
238f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23900 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23910 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23920 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23930 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
23940 69 74 65 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79  ite3_db_readonly
23950 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
23960 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  tr dbName);....#
23970 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23980 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23990 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
239a0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
239b0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
239c0 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61  db_filename", Ca
239d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
239e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
239f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23a00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23a10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
23a20 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
23a30 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65  ite3_db_filename
23a40 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
23a50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23a60 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
23a70 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
23a80 6d 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  me_bytes(IntPtr 
23a90 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
23aa0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
23ab0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23ac0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23ad0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23ae0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23af0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23b00 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23b10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23b20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23b30 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23b40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23b50 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
23b60 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
23b70 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
23b80 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
23b90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
23ba0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
23bb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23bc0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
23bd0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
23be0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23bf0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
23c00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23c10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
23c20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
23c30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
23c40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
23c50 6c 69 74 65 33 5f 65 78 65 63 28 49 6e 74 50 74  lite3_exec(IntPt
23c60 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74 72  r db, byte[] str
23c70 53 71 6c 2c 20 49 6e 74 50 74 72 20 70 76 43 61  Sql, IntPtr pvCa
23c80 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74 72 20 70  llback, IntPtr p
23c90 76 50 61 72 61 6d 2c 20 72 65 66 20 49 6e 74 50  vParam, ref IntP
23ca0 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
23cb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23cc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23cd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23ce0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23cf0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23d00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23d10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23d20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23d30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23d40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23d50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23d60 69 6e 74 20 73 71 6c 69 74 65 33 5f 72 65 6c 65  int sqlite3_rele
23d70 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e  ase_memory(int n
23d80 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
23d90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23da0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23dc0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23dd0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23de0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23df0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
23e00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23e10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
23e20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23e30 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
23e40 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
23e50 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72 20 64 62  commit(IntPtr db
23e60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23e70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23e80 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23e90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23ea0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23eb0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23ec0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23ed0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23ee0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23ef0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23f00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23f10 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
23f20 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
23f30 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
23f40 6f 64 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  odes(IntPtr db, 
23f50 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23  int onoff);....#
23f60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23f70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23f80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23f90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23fa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23fb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23fc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23fe0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23ff0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24000 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24010 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24020 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
24030 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
24040 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24050 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24060 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24070 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24080 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24090 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
240a0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
240b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
240c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
240d0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
240e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
240f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24100 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
24110 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
24120 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
24130 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24140 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24150 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24160 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24170 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24180 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24190 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
241a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
241b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
241c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
241d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
241e0 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 53  sqlite3_errstr(S
241f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
24200 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a  c); /* 3.7.15+ *
24210 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63  /....    // Sinc
24220 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20  e sqlite3_log() 
24230 74 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65  takes a variable
24240 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20   argument list, 
24250 77 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c  we have to overl
24260 6f 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73  oad declarations
24270 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c  ..    // for all
24280 20 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e   possible calls.
24290 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72    For now, we ar
242a0 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20  e only exposing 
242b0 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c  a single string,
242c0 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70   and..    // dep
242d0 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65  end on the calle
242e0 72 20 74 6f 20 66 6f 72 6d 61 74 20 74 68 65 20  r to format the 
242f0 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c  string...#if !PL
24300 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24310 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24320 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24330 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24340 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24350 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24360 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24370 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24380 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24390 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
243a0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
243b0 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74  qlite3_log(SQLit
243c0 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
243d0 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72  ode, byte[] zFor
243e0 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  mat);....#if !PL
243f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24400 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24410 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24420 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24430 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24440 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24450 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24460 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24470 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24480 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24490 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
244a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
244b0 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49  3_file_control(I
244c0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
244d0 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70   zDbName, int op
244e0 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b 0d  , IntPtr pArg);.
244f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24500 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24510 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24520 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24530 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24540 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24550 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24560 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24590 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
245a0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
245b0 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69 74 28 49  e3_backup_init(I
245c0 6e 74 50 74 72 20 64 65 73 74 44 62 2c 20 62 79  ntPtr destDb, by
245d0 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20  te[] zDestName, 
245e0 49 6e 74 50 74 72 20 73 6f 75 72 63 65 44 62 2c  IntPtr sourceDb,
245f0 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e   byte[] zSourceN
24600 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
24610 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24620 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24630 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24640 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24650 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24660 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24670 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24690 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
246a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
246b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
246c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
246d0 33 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 49 6e  3_backup_step(In
246e0 74 50 74 72 20 62 61 63 6b 75 70 2c 20 69 6e 74  tPtr backup, int
246f0 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20   nPage);....#if 
24700 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24710 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24720 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24730 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24740 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24750 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24760 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24770 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24780 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24790 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
247a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
247b0 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f   sqlite3_backup_
247c0 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74 50 74 72  remaining(IntPtr
247d0 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66   backup);....#if
247e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
247f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24810 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
24820 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
24830 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
24840 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
24850 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24860 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
24870 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
24880 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
24890 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  t sqlite3_backup
248a0 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e 74 50 74  _pagecount(IntPt
248b0 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69  r backup);....#i
248c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
248d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
248e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
248f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24900 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24910 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24920 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24930 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24940 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24950 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24960 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
24970 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
24980 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73  qlite3_blob_clos
24990 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  e(IntPtr blob);.
249a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
249b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
249c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
249d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
249e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
249f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24a00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24a10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24a30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24a40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24a50 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
24a60 62 6c 6f 62 5f 62 79 74 65 73 28 49 6e 74 50 74  blob_bytes(IntPt
24a70 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20  r blob);....#if 
24a80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24a90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24aa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24ab0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24ac0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24ad0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24ae0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24af0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24b00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24b10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24b20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24b30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24b40 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49  ite3_blob_open(I
24b50 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
24b60 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
24b70 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
24b80 63 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f  colName, long ro
24b90 77 49 64 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20  wId, int flags, 
24ba0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 42 6c  ref IntPtr ptrBl
24bb0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
24bc0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24bd0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24be0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24bf0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24c00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24c10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24c20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24c30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24c40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
24c50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24c60 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
24c70 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
24c80 5f 62 6c 6f 62 5f 72 65 61 64 28 49 6e 74 50 74  _blob_read(IntPt
24c90 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c  r blob, [Marshal
24ca0 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
24cb0 2e 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b  .LPArray)] byte[
24cc0 5d 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f  ] buffer, int co
24cd0 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29  unt, int offset)
24ce0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24cf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24d00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24d10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24d20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24d30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24d40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24d50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24d60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24d70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24d80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24d90 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24da0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
24db0 6f 62 5f 72 65 6f 70 65 6e 28 49 6e 74 50 74 72  ob_reopen(IntPtr
24dc0 20 62 6c 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49   blob, long rowI
24dd0 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  d);....#if !PLAT
24de0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24df0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24e10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24e20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24e30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24e40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24e50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24e60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24e70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24e80 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
24e90 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
24ea0 62 6c 6f 62 5f 77 72 69 74 65 28 49 6e 74 50 74  blob_write(IntPt
24eb0 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c  r blob, [Marshal
24ec0 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
24ed0 2e 4c 50 41 72 72 61 79 29 5d 20 62 79 74 65 5b  .LPArray)] byte[
24ee0 5d 20 62 75 66 66 65 72 2c 20 69 6e 74 20 63 6f  ] buffer, int co
24ef0 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73 65 74 29  unt, int offset)
24f00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24f10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24f20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24f30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24f40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24f50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24f60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24f70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24f80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24f90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24fa0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24fb0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24fc0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 65  rCode sqlite3_de
24fd0 63 6c 61 72 65 5f 76 74 61 62 28 49 6e 74 50 74  clare_vtab(IntPt
24fe0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 7a 53 51  r db, IntPtr zSQ
24ff0 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  L);....#if !PLAT
25000 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25010 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25020 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25030 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25040 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25050 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25060 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25070 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25080 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25090 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
250a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
250b0 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 49  qlite3_mprintf(I
250c0 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f  ntPtr format, __
250d0 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23  arglist);..    #
250e0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
250f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25140 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20 41 50      // SQLite AP
25150 49 20 63 61 6c 6c 73 20 74 68 61 74 20 61 72 65  I calls that are
25160 20 70 72 6f 76 69 64 65 64 20 62 79 20 22 77 65   provided by "we
25170 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73  ll-known" extens
25180 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 62 65  ions that may be
25190 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20   statically..   
251a0 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69 74 68 20   // linked with 
251b0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
251c0 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 63  native library c
251d0 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e  urrently in use.
251e0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 65 78  ..    #region ex
251f0 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74 65 20 61  tension sqlite a
25200 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72  pi calls..    #r
25210 65 67 69 6f 6e 20 76 69 72 74 75 61 6c 20 74 61  egion virtual ta
25220 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ble..#if INTEROP
25230 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
25240 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25250 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25260 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25270 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25280 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25290 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
252a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
252b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
252c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
252d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
252e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
252f0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
25300 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
25310 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20  e_module(IntPtr 
25320 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c  db, IntPtr name,
25330 20 72 65 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64   ref sqlite3_mod
25340 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50  ule module, IntP
25350 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20  tr pClientData, 
25360 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
25370 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66  Destroy);....#if
25380 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25390 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
253a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
253b0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
253c0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
253d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
253e0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
253f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25400 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
25410 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25420 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
25430 69 64 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f  id sqlite3_dispo
25440 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72  se_module(IntPtr
25450 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64   pModule);..#end
25460 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
25470 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
25480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
254d0 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20 65 78 74  gion session ext
254e0 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49 4e 54 45  ension..#if INTE
254f0 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58 54 45  ROP_SESSION_EXTE
25500 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50 4c 41 54  NSION..#if !PLAT
25510 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25520 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
25530 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
25540 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
25550 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25560 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25570 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 69 6e  rnal delegate in
25580 74 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  t xSessionFilter
25590 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
255a0 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65   IntPtr pTblName
255b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
255c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
255d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
255e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
255f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
25600 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25610 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25620 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c  nal delegate SQL
25630 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
25640 6c 69 63 74 52 65 73 75 6c 74 20 78 53 65 73 73  lictResult xSess
25650 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49 6e 74 50  ionConflict(IntP
25660 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69  tr context, SQLi
25670 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c  teChangeSetConfl
25680 69 63 74 54 79 70 65 20 74 79 70 65 2c 20 49 6e  ictType type, In
25690 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d  tPtr iterator);.
256a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
256b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
256c0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
256d0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
256e0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
256f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
25700 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25710 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
25720 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73 73 69  ErrorCode xSessi
25730 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74 72 20 63  onInput(IntPtr c
25740 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70  ontext, IntPtr p
25750 44 61 74 61 2c 20 72 65 66 20 69 6e 74 20 6e 44  Data, ref int nD
25760 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ata);....#if !PL
25770 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25780 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
25790 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
257a0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
257b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
257c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
257d0 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
257e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
257f0 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 28 49  xSessionOutput(I
25800 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49  ntPtr context, I
25810 6e 74 50 74 72 20 70 44 61 74 61 2c 20 69 6e 74  ntPtr pData, int
25820 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20   nData);....    
25830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
25880 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25890 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
258a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
258b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
258c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
258d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
258e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
258f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25900 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25910 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25920 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25930 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25940 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63  sqlite3session_c
25950 72 65 61 74 65 28 49 6e 74 50 74 72 20 64 62 2c  reate(IntPtr db,
25960 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20   byte[] dbName, 
25970 72 65 66 20 49 6e 74 50 74 72 20 73 65 73 73 69  ref IntPtr sessi
25980 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  on);....#if !PLA
25990 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
259a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
259b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
259c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
259d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
259e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
259f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25a00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25a10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25a20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25a30 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
25a40 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 65 6c  lite3session_del
25a50 65 74 65 28 49 6e 74 50 74 72 20 73 65 73 73 69  ete(IntPtr sessi
25a60 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  on);....#if !PLA
25a70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25a80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25a90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25aa0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25ab0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25ac0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25ad0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25ae0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25af0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25b00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25b10 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
25b20 69 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62  ite3session_enab
25b30 6c 65 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  le(IntPtr sessio
25b40 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d  n, int enable);.
25b50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25b60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25b70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25b80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25b90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25ba0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25bb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25bc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25bd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
25be0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25bf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25c00 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 73  ern int sqlite3s
25c10 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28  ession_indirect(
25c20 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
25c30 69 6e 74 20 69 6e 64 69 72 65 63 74 29 3b 0d 0a  int indirect);..
25c40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25c50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25c60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25c70 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25c80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25c90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25ca0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25cb0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25cc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25cd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25ce0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25cf0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25d00 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
25d10 6e 5f 61 74 74 61 63 68 28 49 6e 74 50 74 72 20  n_attach(IntPtr 
25d20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20  session, byte[] 
25d30 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  tblName);....#if
25d40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25d50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25d60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25d70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
25d80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25d90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25da0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25db0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25dc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
25dd0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25de0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
25df0 69 64 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  id sqlite3sessio
25e00 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65 72 28 49  n_table_filter(I
25e10 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78  ntPtr session, x
25e20 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46  SessionFilter xF
25e30 69 6c 74 65 72 2c 20 49 6e 74 50 74 72 20 63 6f  ilter, IntPtr co
25e40 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
25e50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25e60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25e70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25e80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25e90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25ea0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25eb0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25ec0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25ed0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25ee0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25ef0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
25f00 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
25f10 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67  te3session_chang
25f20 65 73 65 74 28 49 6e 74 50 74 72 20 73 65 73 73  eset(IntPtr sess
25f30 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e 43 68  ion, ref int nCh
25f40 61 6e 67 65 53 65 74 2c 20 72 65 66 20 49 6e 74  angeSet, ref Int
25f50 50 74 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b  Ptr pChangeSet);
25f60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25f70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25f80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25f90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25fa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25fb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25fc0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25fd0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25fe0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
25ff0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26000 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26010 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
26020 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69  ode sqlite3sessi
26030 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74 72 20 73  on_diff(IntPtr s
26040 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 66  ession, byte[] f
26050 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79 74 65 5b  romDbName, byte[
26060 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65 66 20 49  ] tblName, ref I
26070 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a  ntPtr errMsg);..
26080 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26090 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
260a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
260b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
260c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
260d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
260e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
260f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
26100 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
26110 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
26120 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
26130 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
26140 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
26150 6e 5f 70 61 74 63 68 73 65 74 28 49 6e 74 50 74  n_patchset(IntPt
26160 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20 69  r session, ref i
26170 6e 74 20 6e 50 61 74 63 68 53 65 74 2c 20 72 65  nt nPatchSet, re
26180 66 20 49 6e 74 50 74 72 20 70 50 61 74 63 68 53  f IntPtr pPatchS
26190 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
261a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
261b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
261c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
261d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
261e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
261f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26200 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26210 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26220 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26230 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26240 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
26250 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 73 65 6d  ite3session_isem
26260 70 74 79 28 49 6e 74 50 74 72 20 73 65 73 73 69  pty(IntPtr sessi
26270 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  on);....#if !PLA
26280 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26290 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
262a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
262b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
262c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
262d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
262e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
262f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26300 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26310 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26320 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
26330 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
26340 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 28  changeset_start(
26350 72 65 66 20 49 6e 74 50 74 72 20 69 74 65 72 61  ref IntPtr itera
26360 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65  tor, int nChange
26370 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43 68 61  Set, IntPtr pCha
26380 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20  ngeSet);....#if 
26390 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
263a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
263b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
263c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
263d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
263e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
263f0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
26400 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26410 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
26420 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
26430 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
26440 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
26450 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65  ite3changeset_ne
26460 78 74 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  xt(IntPtr iterat
26470 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
26480 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26490 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
264a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
264b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
264c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
264d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
264e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
264f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26500 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26510 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26520 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
26530 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
26540 63 68 61 6e 67 65 73 65 74 5f 6f 70 28 49 6e 74  changeset_op(Int
26550 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65  Ptr iterator, re
26560 66 20 49 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d  f IntPtr pTblNam
26570 65 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75  e, ref int nColu
26580 6d 6e 73 2c 20 72 65 66 20 53 51 4c 69 74 65 41  mns, ref SQLiteA
26590 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
265a0 6f 64 65 20 6f 70 2c 20 72 65 66 20 69 6e 74 20  ode op, ref int 
265b0 62 49 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23  bIndirect);....#
265c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
265d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
265e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
265f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26600 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26610 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26620 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26630 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26640 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26650 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26660 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26670 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26680 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
26690 5f 70 6b 28 49 6e 74 50 74 72 20 69 74 65 72 61  _pk(IntPtr itera
266a0 74 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tor, ref IntPtr 
266b0 70 50 72 69 6d 61 72 79 4b 65 79 73 2c 20 72 65  pPrimaryKeys, re
266c0 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29 3b  f int nColumns);
266d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
266e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
266f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26700 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26710 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26720 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26730 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26740 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
26750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
26760 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
26770 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
26780 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
26790 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
267a0 67 65 73 65 74 5f 6f 6c 64 28 49 6e 74 50 74 72  geset_old(IntPtr
267b0 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63   iterator, int c
267c0 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20  olumnIndex, ref 
267d0 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d  IntPtr pValue);.
267e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
267f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26800 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26810 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26820 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26830 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26840 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26850 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26860 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26870 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26880 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26890 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
268a0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
268b0 65 73 65 74 5f 6e 65 77 28 49 6e 74 50 74 72 20  eset_new(IntPtr 
268c0 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f  iterator, int co
268d0 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49  lumnIndex, ref I
268e0 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a  ntPtr pValue);..
268f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26900 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26910 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26920 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
26930 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
26940 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26950 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
26960 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
26970 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
26980 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
26990 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
269a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
269b0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
269c0 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 49 6e 74  set_conflict(Int
269d0 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
269e0 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72  t columnIndex, r
269f0 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65  ef IntPtr pValue
26a00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26a10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26a20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
26a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
26a40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26a50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
26a60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
26a70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
26a80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26a90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26aa0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26ab0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
26ac0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
26ad0 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c  angeset_fk_confl
26ae0 69 63 74 73 28 49 6e 74 50 74 72 20 69 74 65 72  icts(IntPtr iter
26af0 61 74 6f 72 2c 20 72 65 66 20 69 6e 74 20 63 6f  ator, ref int co
26b00 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d 0a 23 69 66  nflicts);....#if
26b10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
26b20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26b30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26b40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
26b50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
26b60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
26b70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
26b80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
26b90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
26ba0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26bb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
26bc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
26bd0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66  lite3changeset_f
26be0 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20 69  inalize(IntPtr i
26bf0 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66  terator);....#if
26c00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
26c10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26c20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26c30 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
26c40 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
26c50 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
26c60 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
26c70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
26c80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
26c90 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26ca0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
26cb0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
26cc0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69  lite3changeset_i
26cd0 6e 76 65 72 74 28 69 6e 74 20 6e 49 6e 2c 20 49  nvert(int nIn, I
26ce0 6e 74 50 74 72 20 70 49 6e 2c 20 72 65 66 20 69  ntPtr pIn, ref i
26cf0 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74  nt nOut, ref Int
26d00 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
26d10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26d20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26d30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
26d40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
26d50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
26d60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26d70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
26d80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26d90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
26da0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
26db0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
26dc0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
26dd0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
26de0 63 6f 6e 63 61 74 28 69 6e 74 20 6e 41 2c 20 49  concat(int nA, I
26df0 6e 74 50 74 72 20 70 41 2c 20 69 6e 74 20 6e 42  ntPtr pA, int nB
26e00 2c 20 49 6e 74 50 74 72 20 70 42 2c 20 72 65 66  , IntPtr pB, ref
26e10 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66 20 49   int nOut, ref I
26e20 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a  ntPtr pOut);....
26e30 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26e40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26e50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26e60 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
26e70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26e80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26e90 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
26ea0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26eb0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26ec0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26ed0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26ee0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26ef0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
26f00 6f 75 70 5f 6e 65 77 28 72 65 66 20 49 6e 74 50  oup_new(ref IntP
26f10 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b  tr changeGroup);
26f20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26f30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26f40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26f50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26f60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26f70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26f80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26f90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
26fa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
26fb0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
26fc0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
26fd0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
26fe0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
26ff0 67 65 67 72 6f 75 70 5f 61 64 64 28 49 6e 74 50  gegroup_add(IntP
27000 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
27010 69 6e 74 20 6e 44 61 74 61 2c 20 49 6e 74 50 74  int nData, IntPt
27020 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66  r pData);....#if
27030 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27040 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27050 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27060 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
27070 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
27080 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
27090 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
270a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
270b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
270c0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
270d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
270e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
270f0 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
27100 5f 6f 75 74 70 75 74 28 49 6e 74 50 74 72 20 63  _output(IntPtr c
27110 68 61 6e 67 65 47 72 6f 75 70 2c 20 72 65 66 20  hangeGroup, ref 
27120 69 6e 74 20 6e 44 61 74 61 2c 20 72 65 66 20 49  int nData, ref I
27130 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d  ntPtr pData);...
27140 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27150 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27160 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27170 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27180 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27190 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
271a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
271b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
271c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
271d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
271e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
271f0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 63 68  n void sqlite3ch
27200 61 6e 67 65 67 72 6f 75 70 5f 64 65 6c 65 74 65  angegroup_delete
27210 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
27220 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  oup);....#if !PL
27230 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27240 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
27250 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27260 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
27270 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
27280 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27290 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
272a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
272b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
272c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
272d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
272e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
272f0 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79  3changeset_apply
27300 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
27310 6e 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74 50  nChangeSet, IntP
27320 74 72 20 70 43 68 61 6e 67 65 53 65 74 2c 20 78  tr pChangeSet, x
27330 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46  SessionFilter xF
27340 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e 43  ilter, xSessionC
27350 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63  onflict xConflic
27360 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  t, IntPtr contex
27370 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
27380 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27390 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
273a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
273b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
273c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
273d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
273e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
273f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27400 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27410 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27420 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27430 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
27440 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 5f 73  hangeset_apply_s
27450 74 72 6d 28 49 6e 74 50 74 72 20 64 62 2c 20 78  trm(IntPtr db, x
27460 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
27470 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c  put, IntPtr pIn,
27480 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 20   xSessionFilter 
27490 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73 69 6f  xFilter, xSessio
274a0 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c  nConflict xConfl
274b0 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74  ict, IntPtr cont
274c0 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ext);....#if !PL
274d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
274e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
274f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27500 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
27510 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
27520 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27530 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
27540 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27550 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
27560 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
27570 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
27580 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
27590 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61  3changeset_conca
275a0 74 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49  t_strm(xSessionI
275b0 6e 70 75 74 20 78 49 6e 70 75 74 41 2c 20 49 6e  nput xInputA, In
275c0 74 50 74 72 20 70 49 6e 41 2c 20 78 53 65 73 73  tPtr pInA, xSess
275d0 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 42  ionInput xInputB
275e0 2c 20 49 6e 74 50 74 72 20 70 49 6e 42 2c 20 78  , IntPtr pInB, x
275f0 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
27600 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
27610 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
27620 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27630 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
27640 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27650 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
27660 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
27670 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27680 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27690 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
276a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
276b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
276c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
276d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
276e0 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74  changeset_invert
276f0 5f 73 74 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e  _strm(xSessionIn
27700 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50  put xInput, IntP
27710 74 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e  tr pIn, xSession
27720 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
27730 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
27740 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27750 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27760 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27770 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27780 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27790 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
277a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
277b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
277c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
277d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
277e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
277f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27800 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
27810 65 74 5f 73 74 61 72 74 5f 73 74 72 6d 28 72 65  et_start_strm(re
27820 66 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  f IntPtr iterato
27830 72 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  r, xSessionInput
27840 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20   xInput, IntPtr 
27850 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  pIn);....#if !PL
27860 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27870 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
27880 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27890 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
278a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
278b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
278c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
278d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
278e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
278f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
27900 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
27910 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
27920 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73  3session_changes
27930 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73  et_strm(IntPtr s
27940 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
27950 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
27960 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
27970 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27980 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27990 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
279a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
279b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
279c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
279d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
279e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
279f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
27a00 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27a10 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27a20 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27a30 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
27a40 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28 49  _patchset_strm(I
27a50 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78  ntPtr session, x
27a60 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
27a70 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
27a80 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
27a90 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27aa0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
27ab0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27ac0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
27ad0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
27ae0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27af0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27b00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27b10 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
27b20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
27b30 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
27b40 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
27b50 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 5f  changegroup_add_
27b60 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61 6e  strm(IntPtr chan
27b70 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69 6f  geGroup, xSessio
27b80 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
27b90 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23  ntPtr pIn);....#
27ba0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27bb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27bc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27bd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27bf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27c00 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27c10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27c20 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27c30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27c40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27c50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27c60 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
27c70 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28 49  up_output_strm(I
27c80 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75  ntPtr changeGrou
27c90 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  p, xSessionOutpu
27ca0 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
27cb0 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69 66  r pOut);..#endif
27cc0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
27cd0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
27ce0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
27cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d30 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
27d40 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f  on sqlite intero
27d50 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45  p api calls (.NE
27d60 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
27d70 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50  ork only)..#if P
27d80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27d90 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
27da0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
27db0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
27dc0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
27dd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
27de0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
27df0 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
27e00 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
27e10 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67  Ptr db, ref long
27e20 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowId);....    
27e30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27e40 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
27e50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27e60 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
27e70 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74  _memory_used_int
27e80 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79  erop(ref long by
27e90 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
27ea0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27eb0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
27ec0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
27ed0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
27ee0 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69  mory_highwater_i
27ef0 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74  nterop(int reset
27f00 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62  Flag, ref long b
27f10 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
27f20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27f30 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
27f40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27f50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27f60 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
27f70 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
27f80 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
27f90 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
27fa0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
27fb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27fc0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
27fd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27fe0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
27ff0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
28000 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
28010 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
28020 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20  index, ref long 
28030 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
28040 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
28050 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
28060 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
28070 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29  _int64_interop")
28080 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
28090 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
280a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
280b0 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
280c0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
280d0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
280e0 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75  , ref ulong valu
280f0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
28100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28110 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
28120 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
28130 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
28140 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  mn_double_intero
28150 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
28160 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
28170 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
28180 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28190 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
281a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
281b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
281c0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
281d0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
281e0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
281f0 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
28200 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
28210 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28220 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
28230 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
28240 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
28250 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
28260 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f  IntPtr p, ref do
28270 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
28280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28290 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
282a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
282b0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
282c0 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
282d0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
282e0 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  p, ref Int64 val
282f0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
28300 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28310 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
28320 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28330 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
28340 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
28350 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
28360 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
28370 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
28380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28390 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
283a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
283b0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
283c0 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
283d0 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
283e0 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
283f0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
28400 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28410 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
28420 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28430 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
28440 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
28450 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28  _module_interop(
28460 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
28470 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65   db, IntPtr name
28480 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65  , IntPtr pModule
28490 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20  , int iVersion, 
284a0 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65 2c  xCreate xCreate,
284b0 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65  ..        xConne
284c0 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65  ct xConnect, xBe
284d0 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64  stIndex xBestInd
284e0 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  ex, xDisconnect 
284f0 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20  xDisconnect,..  
28500 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20 78        xDestroy x
28510 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78  Destroy, xOpen x
28520 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c  Open, xClose xCl
28530 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46 69  ose, xFilter xFi
28540 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 78  lter,..        x
28550 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f 66  Next xNext, xEof
28560 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78   xEof, xColumn x
28570 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78  Column, xRowId x
28580 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20 78  RowId, xUpdate x
28590 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Update,..       
285a0 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c 20   xBegin xBegin, 
285b0 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f  xSync xSync, xCo
285c0 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52  mmit xCommit, xR
285d0 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63  ollback xRollbac
285e0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69 6e  k,..        xFin
285f0 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
28600 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65  unction, xRename
28610 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65 70   xRename, xSavep
28620 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 2c  oint xSavepoint,
28630 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65 61  ..        xRelea
28640 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52 6f  se xRelease, xRo
28650 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61  llbackTo xRollba
28660 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c  ckTo, IntPtr pCl
28670 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20  ientData,..     
28680 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c     xDestroyModul
28690 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  e xDestroyModule
286a0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
286b0 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  // PLATFORM_COMP
286c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20  ACTFRAMEWORK && 
286d0 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
286e0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
286f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
28700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28740 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
28750 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67 61  on Native Delega
28760 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  tes..#if INTEROP
28770 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
28780 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28790 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
287a0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
287b0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
287c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
287d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
287e0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
287f0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
28800 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20  Code xCreate(.. 
28810 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
28820 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
28830 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
28840 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
28850 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
28860 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
28870 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
28880 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
28890 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d   pError..    );.
288a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
288b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288f0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
28900 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
28910 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
28920 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
28930 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
28940 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28950 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
28960 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
28970 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e  eErrorCode xConn
28980 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ect(..        In
28990 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
289a0 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
289b0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67  .        int arg
289c0 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c,..        IntP
289d0 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
289e0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
289f0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ab,..        ref
28a00 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
28a10 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
28a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66  /////////....#if
28a70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28a80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28a90 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
28aa0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
28ab0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28ac0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
28ad0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
28ae0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
28af0 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  e xBestIndex(.. 
28b00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
28b10 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
28b20 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20  tPtr pIndex..   
28b30 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
28b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
28b90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28ba0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
28bb0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
28bc0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
28bd0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28be0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
28bf0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
28c00 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
28c10 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  Disconnect(..   
28c20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
28c30 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
28c40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28c90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28ca0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28cb0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
28cc0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
28cd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28ce0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
28cf0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
28d00 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
28d10 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a  Code xDestroy(..
28d20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
28d30 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
28d40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28d90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28da0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28db0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
28dc0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
28dd0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
28de0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
28df0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
28e00 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
28e10 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a  rorCode xOpen(..
28e20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
28e30 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72  Vtab,..        r
28e40 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f  ef IntPtr pCurso
28e50 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
28e60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28eb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28ec0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28ed0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
28ee0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
28ef0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28f00 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
28f10 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
28f20 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
28f30 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20  Code xClose(..  
28f40 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
28f50 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rsor..    );....
28f60 20 20 20 20 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 2f 2f 2f  ////////////////
28f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28fb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28fc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28fd0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
28fe0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
28ff0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
29000 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
29010 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
29020 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
29030 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
29040 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
29050 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
29060 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
29070 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69          IntPtr i
29080 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20  dxStr,..        
29090 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
290a0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a     IntPtr argv..
290b0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
290c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29100 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
29110 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29120 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29130 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
29140 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
29150 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
29160 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
29170 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
29180 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
29190 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20  e xNext(..      
291a0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
291b0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
291c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
291f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
29210 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
29220 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
29230 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
29240 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
29250 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
29260 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
29270 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
29280 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20  ate int xEof(.. 
29290 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
292a0 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
292b0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
292c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29300 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
29310 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29320 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
29330 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
29340 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
29350 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
29360 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
29370 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
29380 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e  rrorCode xColumn
29390 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
293a0 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
293b0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74      IntPtr pCont
293c0 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  ext,..        in
293d0 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d  t index..    );.
293e0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
293f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29430 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
29440 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29450 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
29460 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
29470 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
29480 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
29490 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
294a0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
294b0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
294c0 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  d(..        IntP
294d0 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
294e0 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
294f0 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  wId..    );.... 
29500 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29550 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
29560 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29570 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
29580 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
29590 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
295a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
295b0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
295c0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
295d0 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d  orCode xUpdate(.
295e0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
295f0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
29600 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
29610 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
29620 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e  .        ref lon
29630 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d  g rowId..    );.
29640 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
29650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29690 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
296a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
296b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
296c0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
296d0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
296e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
296f0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
29700 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
29710 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
29720 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
29730 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
29740 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
29750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29790 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
297a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
297b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
297c0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
297d0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
297e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
297f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
29800 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
29810 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e  teErrorCode xSyn
29820 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  c(..        IntP
29830 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b  tr pVtab..    );
29840 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
29850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29890 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
298a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
298b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
298c0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
298d0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
298e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
298f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
29900 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
29910 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d  teErrorCode xCom
29920 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  mit(..        In
29930 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
29940 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
29950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29990 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
299a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
299b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
299c0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
299d0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
299e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
299f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
29a00 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
29a10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
29a20 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
29a30 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
29a40 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
29a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
29aa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29ab0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29ac0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
29ad0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
29ae0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
29af0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
29b00 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
29b10 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74  e int xFindFunct
29b20 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ion(..        In
29b30 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
29b40 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a       int nArg,..
29b50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
29b60 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 72  Name,..        r
29b70 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  ef SQLiteCallbac
29b80 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  k callback,..   
29b90 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
29ba0 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20 29  pUserData..    )
29bb0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c00 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
29c10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29c20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
29c30 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
29c40 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
29c50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
29c60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
29c70 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
29c80 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65  iteErrorCode xRe
29c90 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 49  name(..        I
29ca0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
29cb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65        IntPtr zNe
29cc0 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  w..    );....   
29cd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29d20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
29d30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
29d40 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
29d50 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
29d60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
29d70 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
29d80 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
29d90 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
29da0 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28  Code xSavepoint(
29db0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
29dc0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
29dd0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
29de0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
29df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
29e40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
29e50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29e60 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
29e70 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
29e80 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29e90 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
29ea0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
29eb0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
29ec0 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20  de xRelease(..  
29ed0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
29ee0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
29ef0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
29f00 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
29f60 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
29f70 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
29f80 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
29f90 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
29fa0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
29fb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
29fc0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
29fd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
29fe0 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
29ff0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2a000 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
2a010 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
2a020 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a070 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2a080 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a090 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2a0a0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2a0b0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2a0c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a0d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2a0e0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76 6f  blic delegate vo
2a0f0 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  id xDestroyModul
2a100 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  e(IntPtr pClient
2a110 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Data);..#endif..
2a120 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2a130 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2a190 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75 72   Native Structur
2a1a0 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  es..#if INTEROP_
2a1b0 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20  VIRTUAL_TABLE.. 
2a1c0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
2a1d0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
2a1e0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
2a1f0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
2a200 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
2a210 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20    {..        /* 
2a220 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e    0 */ public in
2a230 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20  t iVersion;..   
2a240 20 20 20 20 20 2f 2a 20 20 20 38 20 2a 2f 20 70       /*   8 */ p
2a250 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78 43  ublic xCreate xC
2a260 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  reate;..        
2a270 2f 2a 20 20 31 36 20 2a 2f 20 70 75 62 6c 69 63  /*  16 */ public
2a280 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65   xConnect xConne
2a290 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  ct;..        /* 
2a2a0 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 42   24 */ public xB
2a2b0 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
2a2c0 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  dex;..        /*
2a2d0 20 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 78    32 */ public x
2a2e0 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73 63  Disconnect xDisc
2a2f0 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20 20  onnect;..       
2a300 20 2f 2a 20 20 34 30 20 2a 2f 20 70 75 62 6c 69   /*  40 */ publi
2a310 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74  c xDestroy xDest
2a320 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  roy;..        /*
2a330 20 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20 78    48 */ public x
2a340 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20  Open xOpen;..   
2a350 20 20 20 20 20 2f 2a 20 20 35 36 20 2a 2f 20 70       /*  56 */ p
2a360 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43 6c  ublic xClose xCl
2a370 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ose;..        /*
2a380 20 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20 78    64 */ public x
2a390 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b 0d  Filter xFilter;.
2a3a0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 37 32 20  .        /*  72 
2a3b0 2a 2f 20 70 75 62 6c 69 63 20 78 4e 65 78 74 20  */ public xNext 
2a3c0 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20  xNext;..        
2a3d0 2f 2a 20 20 38 30 20 2a 2f 20 70 75 62 6c 69 63  /*  80 */ public
2a3e0 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20   xEof xEof;..   
2a3f0 20 20 20 20 20 2f 2a 20 20 38 38 20 2a 2f 20 70       /*  88 */ p
2a400 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43  ublic xColumn xC
2a410 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
2a420 2f 2a 20 20 39 36 20 2a 2f 20 70 75 62 6c 69 63  /*  96 */ public
2a430 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d   xRowId xRowId;.
2a440 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 30 34 20  .        /* 104 
2a450 2a 2f 20 70 75 62 6c 69 63 20 78 55 70 64 61 74  */ public xUpdat
2a460 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20 20  e xUpdate;..    
2a470 20 20 20 20 2f 2a 20 31 31 32 20 2a 2f 20 70 75      /* 112 */ pu
2a480 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65 67  blic xBegin xBeg
2a490 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  in;..        /* 
2a4a0 31 32 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 53  120 */ public xS
2a4b0 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20  ync xSync;..    
2a4c0 20 20 20 20 2f 2a 20 31 32 38 20 2a 2f 20 70 75      /* 128 */ pu
2a4d0 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f  blic xCommit xCo
2a4e0 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f  mmit;..        /
2a4f0 2a 20 31 33 36 20 2a 2f 20 70 75 62 6c 69 63 20  * 136 */ public 
2a500 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62  xRollback xRollb
2a510 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ack;..        /*
2a520 20 31 34 34 20 2a 2f 20 70 75 62 6c 69 63 20 78   144 */ public x
2a530 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69  FindFunction xFi
2a540 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20  ndFunction;..   
2a550 20 20 20 20 20 2f 2a 20 31 35 32 20 2a 2f 20 70       /* 152 */ p
2a560 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78 52  ublic xRename xR
2a570 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  ename;..        
2a580 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  /* The methods a
2a590 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
2a5a0 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c  ion 1 of the sql
2a5b0 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20  ite3_module..   
2a5c0 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20        * object. 
2a5d0 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65   Those below are
2a5e0 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20 61   for version 2 a
2a5f0 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a  nd greater. */..
2a600 20 20 20 20 20 20 20 20 2f 2a 20 31 36 30 20 2a          /* 160 *
2a610 2f 20 70 75 62 6c 69 63 20 78 53 61 76 65 70 6f  / public xSavepo
2a620 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d  int xSavepoint;.
2a630 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 38 20  .        /* 168 
2a640 2a 2f 20 70 75 62 6c 69 63 20 78 52 65 6c 65 61  */ public xRelea
2a650 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20  se xRelease;..  
2a660 20 20 20 20 20 20 2f 2a 20 31 37 36 20 2a 2f 20        /* 176 */ 
2a670 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b  public xRollback
2a680 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d  To xRollbackTo;.
2a690 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a6f0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
2a700 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
2a710 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
2a720 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
2a730 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d  te3_vtab..    {.
2a740 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20 2a  .        /*  0 *
2a750 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
2a760 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20  pModule;..      
2a770 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69    /*  8 */ publi
2a780 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e  c int nRef; /* N
2a790 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f  O LONGER USED */
2a7a0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 20  ..        /* 16 
2a7b0 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2a7c0 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d   zErrMsg;..    }
2a7d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
2a830 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
2a840 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
2a850 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2a860 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74  truct sqlite3_vt
2a870 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b  ab_cursor..    {
2a880 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a  ..        /* 0 *
2a890 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
2a8a0 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  pVTab;..    }...
2a8b0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2a8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a900 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
2a910 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
2a920 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
2a930 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
2a940 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
2a950 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  _constraint..   
2a960 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
2a970 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
2a980 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20  _constraint(..  
2a990 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2a9a0 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20  IndexConstraint 
2a9b0 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
2a9c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2a9d0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
2a9e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a9f0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73          if (cons
2aa00 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  traint != null).
2aa10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa30 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72  iColumn = constr
2aa40 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  aint.iColumn;.. 
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
2aa60 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  p = constraint.o
2aa70 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
2aa80 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e      usable = con
2aa90 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d  straint.usable;.
2aaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aab0 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 63   iTermOffset = c
2aac0 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f  onstraint.iTermO
2aad0 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
2aae0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2aaf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
2ab50 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e  * 0 */ public in
2ab60 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t iColumn;..    
2ab70 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c      /* 4 */ publ
2ab80 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
2ab90 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a  nstraintOp op;..
2aba0 20 20 20 20 20 20 20 20 2f 2a 20 35 20 2a 2f 20          /* 5 */ 
2abb0 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61 62  public byte usab
2abc0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  le;..        /* 
2abd0 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  8 */ public int 
2abe0 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
2abf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
2ac50 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
2ac60 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
2ac70 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
2ac80 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
2ac90 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a  _index_orderby..
2aca0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70      {..        p
2acb0 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e  ublic sqlite3_in
2acc0 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20  dex_orderby(..  
2acd0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2ace0 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72 64  IndexOrderBy ord
2acf0 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
2ad00 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2ad10 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
2ad20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ad30 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21 3d    if (orderBy !=
2ad40 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2ad50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ad60 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d         iColumn =
2ad70 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e   orderBy.iColumn
2ad80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2ad90 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72 42     desc = orderB
2ada0 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  y.desc;..       
2adb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2adc0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ae20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  /* 0 */ public i
2ae30 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43  nt iColumn; /* C
2ae40 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d  olumn number */.
2ae50 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a 2f  .        /* 4 */
2ae60 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
2ae70 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
2ae80 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
2ae90 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d  r ASC. */..    }
2aea0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
2af00 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
2af10 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
2af20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2af30 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
2af40 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
2af50 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sage..    {..   
2af60 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
2af70 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
2af80 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
2af90 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
2afa0 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
2afb0 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
2afc0 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
2afd0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2afe0 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
2aff0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b000 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
2b010 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sage != null).. 
2b020 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
2b040 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72  gvIndex = constr
2b050 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e  aintUsage.argvIn
2b060 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
2b070 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e        omit = con
2b080 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
2b090 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
2b0a0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2b0b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b100 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2b110 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
2b120 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74   /* if >0, const
2b130 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
2b140 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
2b150 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75 62   */..        pub
2b160 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20 20  lic byte omit;  
2b170 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
2b180 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
2b190 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d  s constraint */.
2b1a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b200 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
2b210 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
2b220 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
2b230 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
2b240 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
2b250 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
2b260 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
2b270 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75       /*  0 */ pu
2b280 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72  blic int nConstr
2b290 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20  aint; /* Number 
2b2a0 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43  of entries in aC
2b2b0 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
2b2c0 20 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70        /*  8 */ p
2b2d0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43 6f  ublic IntPtr aCo
2b2e0 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20  nstraint;..     
2b2f0 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c     /* 16 */ publ
2b300 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b  ic int nOrderBy;
2b310 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66      /* Number of
2b320 20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72 64   entries in aOrd
2b330 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20  erBy */..       
2b340 20 2f 2a 20 32 34 20 2a 2f 20 70 75 62 6c 69 63   /* 24 */ public
2b350 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42 79   IntPtr aOrderBy
2b360 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f 75  ;..        /* Ou
2b370 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  tputs */..      
2b380 20 20 2f 2a 20 33 32 20 2a 2f 20 70 75 62 6c 69    /* 32 */ publi
2b390 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
2b3a0 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20 20  aintUsage;..    
2b3b0 20 20 20 20 2f 2a 20 34 30 20 2a 2f 20 70 75 62      /* 40 */ pub
2b3c0 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20  lic int idxNum; 
2b3d0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
2b3e0 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e  ber used to iden
2b3f0 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a  tify the index *
2b400 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 38  /..        /* 48
2b410 20 2a 2f 20 70 75 62 6c 69 63 20 73 74 72 69 6e   */ public strin
2b420 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20 20  g idxStr;       
2b430 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73   /* String, poss
2b440 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  ibly obtained fr
2b450 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  om sqlite3_mallo
2b460 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  c */..        /*
2b470 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e   56 */ public in
2b480 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53  t needToFreeIdxS
2b490 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78 53  tr; /* Free idxS
2b4a0 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33  tr using sqlite3
2b4b0 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65 20  _free() if true 
2b4c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 36  */..        /* 6
2b4d0 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  0 */ public int 
2b4e0 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b  orderByConsumed;
2b4f0 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74    /* True if out
2b500 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f  put is already o
2b510 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20  rdered */..     
2b520 20 20 20 2f 2a 20 36 34 20 2a 2f 20 70 75 62 6c     /* 64 */ publ
2b530 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61  ic double estima
2b540 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69  tedCost; /* Esti
2b550 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73  mated cost of us
2b560 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a  ing this index *
2b570 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 37 32  /..        /* 72
2b580 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20   */ public long 
2b590 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20 20  estimatedRows;  
2b5a0 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e 75   /* Estimated nu
2b5b0 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74  mber of rows ret
2b5c0 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20  urned */..      
2b5d0 20 20 2f 2a 20 38 30 20 2a 2f 20 70 75 62 6c 69    /* 80 */ publi
2b5e0 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61  c SQLiteIndexFla
2b5f0 67 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20  gs idxFlags; /* 
2b600 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49  Mask of SQLITE_I
2b610 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67  NDEX_SCAN_* flag
2b620 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  s */..        /*
2b630 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f   88 */ public lo
2b640 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20 20  ng colUsed;     
2b650 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61      /* Input: Ma
2b660 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73  sk of columns us
2b670 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74 20  ed by statement 
2b680 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  */..    }..#endi
2b690 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  f..    #endregio
2b6a0 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65  n..  }..  #endre
2b6b0 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  gion....  //////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65  ///////....  #re
2b710 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63  gion .NET Compac
2b720 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c  t Framework (onl
2b730 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  y) CriticalHandl
2b740 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41  e Class..#if PLA
2b750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b760 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e  MEWORK..  intern
2b770 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61 73  al abstract clas
2b780 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  s CriticalHandle
2b790 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
2b7a0 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65    {..    private
2b7b0 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b   bool _isClosed;
2b7c0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
2b7d0 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a  IntPtr handle;..
2b7e0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
2b7f0 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 49  CriticalHandle(I
2b800 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61 6e  ntPtr invalidHan
2b810 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  dleValue)..    {
2b820 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
2b830 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56 61   invalidHandleVa
2b840 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43  lue;..      _isC
2b850 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a  losed = false;..
2b860 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72      }....    ~Cr
2b870 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a  iticalHandle()..
2b880 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73      {..      Dis
2b890 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
2b8a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
2b8b0 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70 28  te void Cleanup(
2b8c0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2b8d0 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a  if (!IsClosed)..
2b8e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b8f0 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20   this._isClosed 
2b900 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2b910 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64 29   if (!IsInvalid)
2b920 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2b930 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48 61         ReleaseHa
2b940 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  ndle();..       
2b950 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
2b960 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
2b970 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b980 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
2b990 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73  public void Clos
2b9a0 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
2b9b0 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
2b9c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
2b9d0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
2b9e0 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
2b9f0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
2ba00 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2ba10 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
2ba20 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
2ba30 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
2ba40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65      {..      Cle
2ba50 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  anup();..    }..
2ba60 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
2ba70 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52 65  abstract bool Re
2ba80 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a  leaseHandle();..
2ba90 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
2baa0 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28 49  void SetHandle(I
2bab0 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20 20  ntPtr value)..  
2bac0 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c    {..      handl
2bad0 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  e = value;..    
2bae0 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  }....    public 
2baf0 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41 73  void SetHandleAs
2bb00 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b  Invalid()..    {
2bb10 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
2bb20 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
2bb30 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
2bb40 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
2bb50 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
2bb60 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a   bool IsClosed..
2bb70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
2bb80 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f   { return _isClo
2bb90 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  sed; }..    }...
2bba0 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74  .    public abst
2bbb0 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ract bool IsInva
2bbc0 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  lid..    {..    
2bbd0 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
2bbe0 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  .  }..#endif..  
2bbf0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2bc00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2bc50 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
2bc60 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2bc70 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
2bc80 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75 6e  / Handles the un
2bc90 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73 65  managed database
2bca0 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70 72   pointer, and pr
2bcb0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
2bcc0 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70  ion..    // supp
2bcd0 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20  ort for it...   
2bce0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
2bcf0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e   class SQLiteCon
2bd00 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20  nectionHandle : 
2bd10 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
2bd20 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54      {..#if SQLIT
2bd30 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21 50  E_STANDARD && !P
2bd40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2bd50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2bd60 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
2bd70 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f  ate void CloseCo
2bd80 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b  nnectionCallback
2bd90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
2bda0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2bdb0 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
2bdc0 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  r db);....      
2bdd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2bde0 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  c CloseConnectio
2bdf0 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43  nCallback closeC
2be00 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20  onnection =..   
2be10 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2be20 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
2be30 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
2be40 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2be90 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
2bea0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2beb0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2bec0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
2bed0 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
2bee0 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
2bef0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2bf50 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f    private bool o
2bf60 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20  wnHandle;....   
2bf70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2bf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bfc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2bfd0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
2bfe0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
2bff0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2c000 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20 20  andle db)..     
2c010 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c020 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c    if (db != null
2c030 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2c040 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2c050 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2c060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c070 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f   lock (db.syncRo
2c080 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2c090 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0b0 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68 61      return db.ha
2c0c0 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
2c0d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c0e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2c0f0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
2c100 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
2c110 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2c170 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
2c180 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2c190 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f  e(IntPtr db, boo
2c1a0 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  l ownHandle)..  
2c1b0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
2c1c0 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20  (ownHandle)..   
2c1d0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2c1e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c1f0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2c200 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2c210 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2c220 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c230 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2c240 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48  ownHandle = ownH
2c250 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2c260 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2c270 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  e(db);..        
2c280 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2c290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2c2f0 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
2c300 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f  nectionHandle(bo
2c310 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
2c320 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73             : bas
2c330 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  e(IntPtr.Zero)..
2c340 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43          {..#if C
2c350 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2c360 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77 6e           if (own
2c370 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
2c380 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
2c390 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72  cked.Increment(r
2c3a0 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
2c3b0 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
2c3c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2c3d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2c3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c420 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2c430 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
2c440 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
2c450 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
2c460 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2c470 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2c480 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2c490 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2c4a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2c4b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c4c0 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e 48         if (!ownH
2c4d0 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74 72  andle) return tr
2c4e0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2c4f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2c500 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2c510 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2c520 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c530 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2c540 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
2c550 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
2c560 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
2c570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c580 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
2c590 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
2c5a0 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
2c5b0 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
2c5c0 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61          if (loca
2c5d0 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  lHandle != IntPt
2c5e0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2c5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f               clo
2c600 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69  seConnection(thi
2c610 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  s, localHandle);
2c620 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2c630 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2c640 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2c650 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2c660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2c670 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
2c680 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
2c690 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
2c6a0 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  ndif....#if !NET
2c6b0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2c6c0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2c6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2c6e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c6f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c700 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2c710 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2c720 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2c730 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2c750 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2c760 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2c770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c780 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
2c790 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ion: {0}", local
2c7a0 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
2c7b0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2c7c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c7d0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2c7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c7f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c800 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2c810 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2c820 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2c830 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2c840 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2c860 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
2c870 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2c880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c8a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2c8b0 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  ase.CloseConnect
2c8c0 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c 65  ion(this, handle
2c8d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2c8e0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2c8f0 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
2c900 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2c910 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c920 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2c930 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
2c940 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2c950 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
2c960 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2c970 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
2c980 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
2c990 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
2c9a0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
2c9b0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2c9c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2c9d0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
2c9e0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2c9f0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2ca00 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2ca10 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
2ca20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
2ca30 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
2ca40 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
2ca50 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2ca60 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
2ca70 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2ca80 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2caa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cab0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2cac0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2cad0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2cae0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2caf0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2cb10 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2cb20 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb40 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69    "CloseConnecti
2cb50 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  on: {0}, excepti
2cb60 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
2cb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb80 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
2cb90 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbc0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2cbd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cbe0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2cbf0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2cc00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2cc10 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
2cc20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2cc30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2cc40 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2cc50 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2cc60 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2cc90 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2cca0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
2ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ccc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2ccd0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2cce0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2ccf0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
2cd00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2cd10 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2cd20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2cd30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2cd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2cd80 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2cd90 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2cda0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
2cdb0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
2cdc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cdd0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
2cde0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2cdf0 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f  ugData.connectio
2ce00 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  nCount);..      
2ce10 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
2ce20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ce70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2ce80 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d   bool OwnHandle.
2ce90 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2cea0 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
2ceb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2cec0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2ced0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2cee0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2cef0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2cf00 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2cf10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cf20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2cf30 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  n ownHandle;..  
2cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2cf50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2cf60 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2cf70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2cfc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2cfd0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
2cfe0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
2cff0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
2d000 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
2d010 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2d020 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2d030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d040 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2d050 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2d060 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d080 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
2d090 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2d0a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2d0b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d0c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d120 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
2d130 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2d140 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
2d150 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
2d160 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2d170 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2d180 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2d190 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2d1a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2d1b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d1c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d1d0 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
2d1e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d1f0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
2d200 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
2d210 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2d220 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d270 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
2d280 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
2d290 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
2d2a0 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
2d2b0 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
2d2c0 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
2d2d0 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73 2e  Lite statements.
2d2e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2d2f0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2d300 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
2d310 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64  e : CriticalHand
2d320 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50  le..    {..#if P
2d330 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2d340 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2d350 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
2d360 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
2d370 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
2d380 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
2d390 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d3e0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2d3f0 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e SQLiteConnecti
2d400 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d  onHandle cnn;...
2d410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
2d470 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
2d480 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50  it operator IntP
2d490 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  tr(SQLiteStateme
2d4a0 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a  ntHandle stmt)..
2d4b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d4c0 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20         if (stmt 
2d4d0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2d4e0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2d4f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2d500 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2d510 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
2d520 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  mt.syncRoot)..#e
2d530 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2d540 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d550 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d560 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b  urn stmt.handle;
2d570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d580 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2d590 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2d5a0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
2d5b0 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ro;..        }..
2d5c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d610 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  /....        int
2d620 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61 74  ernal SQLiteStat
2d630 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69  ementHandle(SQLi
2d640 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2d650 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73  le cnn, IntPtr s
2d660 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tmt)..          
2d670 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2d680 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2d690 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2d6a0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2d6b0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2d6c0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2d6d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d6e0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
2d6f0 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
2d700 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2d710 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20  ndle(stmt);..   
2d720 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2d730 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d740 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2d790 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
2d7a0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
2d7b0 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2d7c0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
2d7d0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
2d7e0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2d7f0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
2d800 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
2d810 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2d820 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
2d830 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
2d840 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2d850 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d890 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d8a0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f       protected o
2d8b0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c  verride bool Rel
2d8c0 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20  easeHandle()..  
2d8d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d8e0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2d8f0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
2d900 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2d910 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2d920 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2d930 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e  localHandle = In
2d940 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e  terlocked.Exchan
2d950 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
2d960 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e           ref han
2d970 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  dle, IntPtr.Zero
2d980 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d990 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
2d9a0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2d9b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2d9c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d9d0 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74  eBase.FinalizeSt
2d9e0 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63  atement(cnn, loc
2d9f0 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
2da00 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2da10 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2da20 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2da30 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2da40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2da60 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
2da70 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
2da80 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
2da90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2daa0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
2dab0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
2dac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dad0 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69           "Finali
2dae0 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d  zeStatement: {0}
2daf0 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
2db00 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2db10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2db20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2db30 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2db40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2db50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2db60 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
2db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2db80 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
2db90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2dba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbb0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
2dbc0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2dbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbe0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2dbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc00 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
2dc10 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
2dc20 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
2dc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc40 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
2dc50 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2dc80 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2dc90 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2dca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dcb0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
2dcc0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2dcd0 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43  gData.statementC
2dce0 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2dcf0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2dd00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2dd10 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2dd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2dd30 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2dd40 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2dd50 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2dd60 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2dd70 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
2dd80 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
2dd90 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2dda0 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
2ddb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2ddc0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2ddd0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2dde0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2ddf0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2de00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2de30 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2de40 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2de50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de60 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2de70 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2de80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de90 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
2dea0 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
2deb0 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31  }, exception: {1
2dec0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
2ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e               han
2dee0 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  dle, e)); /* thr
2def0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2df00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2df10 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2df20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2df30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2df40 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2df50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2df60 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
2df70 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
2df80 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2df90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2dfa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dfb0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2dfc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2dfd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dff0 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
2e000 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  lid();..        
2e010 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e020 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45         }..#if DE
2e030 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
2e040 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
2e050 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2e060 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2e070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2e080 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2e090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e0d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55  /////....#if COU
2e0e0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2e0f0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61     public int Wa
2e100 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20  sReleasedOk().. 
2e110 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e120 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2e130 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
2e140 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
2e150 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29  .statementCount)
2e160 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
2e170 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2e180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e1c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e1d0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
2e1e0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
2e1f0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
2e200 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
2e210 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2e220 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2e230 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2e240 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2e250 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2e260 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2e270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e280 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2e290 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
2e2a0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2e2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e2d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2e2e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2e330 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2e340 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
2e350 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
2e360 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
2e370 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2e380 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2e390 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2e3a0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2e3b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2e3c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e3d0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
2e3e0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
2e3f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2e400 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2e410 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
2e420 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
2e430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e480 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
2e490 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61 73  ackupHandle Clas
2e4a0 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
2e4b0 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
2e4c0 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
2e4d0 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61 63  naged SQLite bac
2e4e0 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20  kup objects...  
2e4f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
2e500 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 61  d class SQLiteBa
2e510 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72 69  ckupHandle : Cri
2e520 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
2e530 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e540 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e550 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
2e560 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
2e570 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
2e580 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
2e590 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2e5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e5f0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
2e600 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2e610 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  e cnn;....      
2e620 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e660 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e670 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
2e680 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
2e690 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
2e6a0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 62  teBackupHandle b
2e6b0 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20 20  ackup)..        
2e6c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2e6d0 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c  f (backup != nul
2e6e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2e6f0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2e700 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2e710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e720 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73    lock (backup.s
2e730 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2e740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e750 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e760 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e770 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a  backup.handle;..
2e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e790 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2e7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2e7b0 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
2e7c0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2e7d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e820 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
2e830 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75 70  nal SQLiteBackup
2e840 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e  Handle(SQLiteCon
2e850 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2e860 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70  n, IntPtr backup
2e870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2e880 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2e890 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e8a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e8b0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2e8c0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2e8d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e8e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e8f0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
2e900 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
2e910 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2e920 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  e(backup);..    
2e930 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e940 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e990 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e9a0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
2e9b0 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d  eBackupHandle().
2e9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
2e9d0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
2e9e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2e9f0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2ea00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2ea10 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
2ea20 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
2ea30 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65  ackupCount);..#e
2ea40 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2ea50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaa0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2eab0 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
2eac0 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
2ead0 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dle()..        {
2eae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
2eaf0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
2eb00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2eb10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2eb20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb30 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
2eb40 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
2eb50 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
2eb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb70 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
2eb80 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2eba0 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
2ebb0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ebd0 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46      SQLiteBase.F
2ebe0 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c  inishBackup(cnn,
2ebf0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a   localHandle);..
2ec00 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
2ec10 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
2ec20 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
2ec30 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2ec40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ec50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec60 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
2ec70 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
2ec80 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
2ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eca0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
2ecb0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
2ecc0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
2ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
2ece0 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22  nishBackup: {0}"
2ecf0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
2ed00 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2ed10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ed20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ed30 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2ed40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ed50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2ed60 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
2ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2ed80 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2eda0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2edb0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
2edc0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2edd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ede0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee00 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
2ee10 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e  hBackup(cnn, han
2ee20 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dle);..         
2ee30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2ee40 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e  etHandle(IntPtr.
2ee50 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
2ee60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ee80 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f  ..#endif..#if CO
2ee90 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2eea0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
2eeb0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2eec0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2eed0 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
2eee0 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
2eef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ef00 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2ef10 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2ef20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
2ef30 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2ef40 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2ef50 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2ef60 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
2ef70 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
2ef80 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2ef90 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
2efa0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2efb0 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
2efc0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2efd0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2efe0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f000 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f010 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2f020 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2f030 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2f040 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2f050 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2f060 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2f070 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f090 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a 20   "FinishBackup: 
2f0a0 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
2f0b0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
2f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
2f0d0 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
2f0e0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2f0f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2f100 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2f110 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2f120 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f130 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2f140 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2f150 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
2f160 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
2f170 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2f180 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2f190 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2f1a0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2f1b0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2f1c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1e0 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
2f1f0 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
2f200 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f210 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
2f220 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
2f230 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2f240 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2f250 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2f260 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2f270 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
2f2d0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2f2e0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
2f2f0 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
2f300 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2f310 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2f320 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2f330 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2f340 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b  ta.backupCount);
2f350 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2f360 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2f370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2f3c0 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2f3d0 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  e bool IsInvalid
2f3e0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2f3f0 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2f400 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2f410 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f420 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f430 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2f440 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2f450 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2f460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f470 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f480 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e  rn (handle == In
2f490 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2f4c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2f4d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2f520 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2f530 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
2f540 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
2f550 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
2f560 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2f570 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2f580 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2f590 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2f5a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2f5b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f5c0 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65     return handle
2f5d0 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
2f5e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f5f0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2f600 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
2f610 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
2f620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f670 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c  #region SQLiteBl
2f680 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  obHandle Class..
2f690 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
2f6a0 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
2f6b0 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
2f6c0 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f  ed SQLite blob o
2f6d0 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74  bjects...    int
2f6e0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
2f6f0 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  ss SQLiteBlobHan
2f700 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
2f710 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
2f720 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f730 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f740 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61      internal rea
2f750 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e  donly object syn
2f760 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65  cRoot = new obje
2f770 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ct();..#endif...
2f780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2f7e0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
2f7f0 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d  tionHandle cnn;.
2f800 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f850 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
2f860 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
2f870 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
2f880 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62 48  tPtr(SQLiteBlobH
2f890 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20  andle blob)..   
2f8a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f8b0 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d 20      if (blob != 
2f8c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2f8d0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2f8e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2f8f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2f900 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e       lock (blob.
2f910 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2f920 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2f930 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f940 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f950 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20   blob.handle;.. 
2f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f980 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2f990 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2f9a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2f9b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2f9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2fa00 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2fa10 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e  al SQLiteBlobHan
2fa20 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
2fa30 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
2fa40 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20  IntPtr blob)..  
2fa50 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
2fa60 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2fa70 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2fa80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2fa90 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2faa0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2fab0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2fac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fad0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
2fae0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2faf0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f     SetHandle(blo
2fb00 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
2fb10 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2fb20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2fb80 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ate SQLiteBlobHa
2fb90 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
2fba0 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74      : base(IntPt
2fbb0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2fbc0 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41   {..#if COUNT_HA
2fbd0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2fbe0 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
2fbf0 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2fc00 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29  gData.blobCount)
2fc10 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2fc20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2fc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2fc80 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65     protected ove
2fc90 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61  rride bool Relea
2fca0 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  seHandle()..    
2fcb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2fcc0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2fcd0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
2fce0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2fcf0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2fd00 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
2fd10 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
2fd20 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
2fd30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fd40 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
2fd50 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
2fd60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fd70 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
2fd80 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
2fd90 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2fda0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2fdb0 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e  ase.CloseBlob(cn
2fdc0 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
2fdd0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
2fde0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2fdf0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2fe00 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2fe20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe30 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2fe40 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2fe50 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2fe60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fe70 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2fe80 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2fe90 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2feb0 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c  CloseBlob: {0}",
2fec0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
2fed0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2fee0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff00 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2ff10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ff20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2ff30 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
2ff40 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2ff50 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
2ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ff70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff80 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
2ff90 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ffc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2ffd0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42  QLiteBase.CloseB
2ffe0 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  lob(cnn, handle)
2fff0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30000 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
30010 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
30020 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30030 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30040 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
30050 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
30060 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
30070 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
30080 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
30090 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62  f DebugData.blob
300a0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
300b0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
300c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
300d0 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
300e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
300f0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
30100 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
30110 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
30120 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
30130 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
30140 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
30150 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
30160 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
30170 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
30180 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
30190 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
301a0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
301b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
301c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
301d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301e0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
301f0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
30200 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30220 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
30230 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
30240 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30250 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
30260 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65  eBlob: {0}, exce
30270 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20  ption: {1}",..  
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30290 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29        handle, e)
302a0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
302b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
302d0 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
302e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
302f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
30300 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
30310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30320 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
30330 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
30340 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
30350 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
30360 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
30370 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
30380 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
30390 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
303a0 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e            SetHan
303b0 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d  dleAsInvalid();.
303c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
303d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
303e0 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  }..#if DEBUG..  
303f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30400 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a   false;..#else..
30410 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30420 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
30430 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
30440 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30490 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
304a0 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  LE..        publ
304b0 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73  ic int WasReleas
304c0 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20  edOk()..        
304d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
304e0 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
304f0 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
30500 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f  DebugData.blobCo
30510 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
30520 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
30530 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
30540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30580 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
30590 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e  erride bool IsIn
305a0 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b  valid..        {
305b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
305c0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
305d0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
305e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
305f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30600 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
30610 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
30620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30640 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20   return (handle 
30650 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  == IntPtr.Zero);
30660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30670 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30680 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
30690 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
306a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306e0 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
306f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
30700 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
30710 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
30720 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30730 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30740 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
30750 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
30760 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
30770 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30780 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68          return h
30790 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29  andle.ToString()
307a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
307b0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
307c0 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  dif..    }..    
307d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a     #endregion..}..