System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6ddc5fb228bd322aca4cd4beb754d4b688e09bd9:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 54 52 41  tion;....#if TRA
0180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 20 7c 7c 20  CE_DETECTION || 
0190: 54 52 41 43 45 5f 53 48 41 52 45 44 20 7c 7c 20  TRACE_SHARED || 
01a0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c 7c  TRACE_PRELOAD ||
01b0: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
01c0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69   using System.Di
01d0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e 64  agnostics;..#end
01e0: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
01f0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
0200: 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69  .Generic;..  usi
0210: 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20  ng System.IO;.. 
0220: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65   using System.Re
0230: 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  flection;....#if
0240: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0250: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0260: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0270: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02a0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02b0: 28 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34  (NET_40 || NET_4
02c0: 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
02d0: 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
02e0: 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
02f0: 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
0300: 37 20 7c 7c 20 4e 45 54 5f 34 37 31 29 20 26 26  7 || NET_471) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0360: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0370: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0380: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0390: 4b 20 7c 7c 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  K || COUNT_HANDL
03a0: 45 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  E..  using Syste
03b0: 6d 2e 54 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65  m.Threading;..#e
03c0: 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20  ndif....  using 
03d0: 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20  System.Xml;.... 
03e0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 44   #region Debug D
03f0: 61 74 61 20 53 74 61 74 69 63 20 43 6c 61 73 73  ata Static Class
0400: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
0410: 4c 45 20 7c 7c 20 44 45 42 55 47 0d 0a 20 20 2f  LE || DEBUG..  /
0420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0430: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 65  /// This class e
0440: 6e 63 61 70 73 75 6c 61 74 65 73 20 73 6f 6d 65  ncapsulates some
0450: 20 74 72 61 63 6b 69 6e 67 20 64 61 74 61 20 74   tracking data t
0460: 68 61 74 20 69 73 20 75 73 65 64 20 66 6f 72 20  hat is used for 
0470: 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 2f 2f 2f  debugging..  ///
0480: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0490: 70 6f 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  poses...  /// </
04a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
04b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
04c0: 73 20 44 65 62 75 67 44 61 74 61 0d 0a 20 20 7b  s DebugData..  {
04d0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
04e0: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69  Private Data..#i
04f0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0500: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0510: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
0520: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
0530: 74 65 63 74 20 73 65 76 65 72 61 6c 20 73 74 61  tect several sta
0540: 74 69 63 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20  tic fields...   
0550: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0560: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0570: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0580: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
0590: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
05a0: 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
05b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0610: 6f 6e 20 43 72 69 74 69 63 61 6c 20 48 61 6e 64  on Critical Hand
0620: 6c 65 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  le Counts (Debug
0630: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0640: 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
0650: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0660: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 63  // NOTE: These c
0670: 6f 75 6e 74 73 20 72 65 70 72 65 73 65 6e 74 20  ounts represent 
0680: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
0690: 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 0d   of outstanding.
06a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
06b0: 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64 29 20 43  (non-disposed) C
06c0: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 64 65  riticalHandle de
06d0: 72 69 76 65 64 20 6f 62 6a 65 63 74 20 69 6e 73  rived object ins
06e0: 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 2f 2f  tances..      //
06f0: 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20 62         created b
0700: 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 61  y this library a
0710: 6e 64 20 61 72 65 20 70 72 69 6d 61 72 69 6c 79  nd are primarily
0720: 20 66 6f 72 20 75 73 65 20 62 79 0d 0a 20 20 20   for use by..   
0730: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
0740: 74 65 73 74 20 73 75 69 74 65 2e 20 20 54 68 65  test suite.  The
0750: 73 65 20 63 6f 75 6e 74 73 20 61 72 65 20 69 6e  se counts are in
0760: 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65  cremented by the
0770: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0780: 20 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6e 73   associated cons
0790: 74 72 75 63 74 6f 72 73 20 61 6e 64 20 61 72 65  tructors and are
07a0: 20 64 65 63 72 65 6d 65 6e 74 65 64 20 75 70 6f   decremented upo
07b0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
07c0: 20 20 20 20 20 20 73 75 63 63 65 73 73 66 75 6c        successful
07d0: 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74   completion of t
07e0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 52 65  he associated Re
07f0: 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a 20 20 20  leaseHandle..   
0800: 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 74 68     //       meth
0810: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ods...      //..
0820: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0830: 74 61 74 69 63 20 69 6e 74 20 63 6f 6e 6e 65 63  tatic int connec
0840: 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  tionCount;..    
0850: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0860: 63 20 69 6e 74 20 73 74 61 74 65 6d 65 6e 74 43  c int statementC
0870: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0880: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0890: 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a 20   backupCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 6c 6f 62 43 6f 75  atic int blobCou
08c0: 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  nt;..#endif..   
08d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
08e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0940: 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64 20  n Settings Read 
0950: 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42 75  Counts (Debug Bu
0960: 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44  ild Only)..#if D
0970: 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  EBUG..      /// 
0980: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0990: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
09a0: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
09b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
09c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
09d0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
09e0: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20   /// settings.  
09f0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0a00: 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65   is only recorde
0a10: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0a20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
0a30: 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  / "Debug" build 
0a40: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0a70: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0a80: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0a90: 74 3e 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f  t> settingReadCo
0aa0: 75 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  unts;....      /
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0b20: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0b30: 73 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  s the read count
0b40: 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d  s for the runtim
0b50: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
0b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
0b70: 6e 67 73 20 76 69 61 20 74 68 65 20 58 4d 4c 20  ngs via the XML 
0b80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
0b90: 6c 65 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  le.  This inform
0ba0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0d 0a 20  ation is only.. 
0bb0: 20 20 20 20 20 2f 2f 2f 20 72 65 63 6f 72 64 65       /// recorde
0bc0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0bd0: 69 6e 20 74 68 65 20 22 44 65 62 75 67 22 20 62  in the "Debug" b
0be0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0bf0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0c10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0c20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0c30: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 46  g, int> settingF
0c40: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a  ileReadCounts;..
0c50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
0c60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0cc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 74 68       #region Oth
0cd0: 65 72 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  er Counts (Debug
0ce0: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0cf0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0d00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0d10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
0d20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 6d  tionary stores m
0d30: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 63 6f 75  iscellaneous cou
0d40: 6e 74 73 20 75 73 65 64 20 66 6f 72 20 64 65 62  nts used for deb
0d50: 75 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  ugging..      //
0d60: 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 54 68 69  / purposes.  Thi
0d70: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0d80: 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77   only recorded w
0d90: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20  hen compiled in 
0da0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22  the..      /// "
0db0: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0dc0: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0de0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0df0: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0e00: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0e10: 6f 74 68 65 72 43 6f 75 6e 74 73 3b 0d 0a 23 65  otherCounts;..#e
0e20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
0e30: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 23 65  region..      #e
0e40: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0e50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0ea0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
0eb0: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  lic Methods..#if
0ec0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f   DEBUG..      //
0ed0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0ee0: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 64     /// Creates d
0ef0: 69 63 74 69 6f 6e 61 72 69 65 73 20 75 73 65 64  ictionaries used
0f00: 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 72 65   to store the re
0f10: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 65 61  ad counts for ea
0f20: 63 68 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ch of..      ///
0f30: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0f40: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
0f50: 6e 67 73 2e 20 20 54 68 65 73 65 20 6e 75 6d 62  ngs.  These numb
0f60: 65 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ers are used for
0f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 65 62 75  ..      /// debu
0f80: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
0f90: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
0fa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0fb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75  mmary>..      pu
0fc0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
0fd0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
0fe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0ff0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1000: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1020: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1030: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
1040: 72 65 61 74 65 20 74 68 65 20 64 69 63 74 69 6f  reate the dictio
1050: 6e 61 72 69 65 73 20 6f 66 20 73 74 61 74 69 73  naries of statis
1060: 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 0d 0a  tics that will..
1070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1080: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 20 74         contain t
1090: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d  he number of tim
10a0: 65 73 20 65 61 63 68 20 73 65 74 74 69 6e 67 20  es each setting 
10b0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
10c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
10d0: 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20  s been read...  
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1100: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
1110: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1140: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1150: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1170: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1180: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d  ileReadCounts ==
1190: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
11a0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
11b0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20  gFileReadCounts 
11c0: 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
11d0: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b  <string, int>();
11e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11f0: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
1200: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  herCounts = new 
1230: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1240: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20 20 20 20  g, int>();..    
1250: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1260: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
12c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12d0: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68    /// Queries th
12e0: 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f  e read counts fo
12f0: 72 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f  r the runtime co
1300: 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74  nfiguration sett
1310: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
1320: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
1330: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
1340: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
1350: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
1360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1380: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1390: 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20  iaFile">..      
13a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
13b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
13c0: 74 74 69 6e 67 73 20 77 65 72 65 20 72 65 61 64  ttings were read
13d0: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20   from the XML.. 
13e0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
13f0: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
1400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1420: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1430: 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20 73   A copy of the s
1440: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
1450: 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e 74  e specified runt
1460: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
1470: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
1480: 74 69 6e 67 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  tings -OR- null 
1490: 69 66 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  if they are not 
14a0: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
14b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
14c0: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73  ..      public s
14d0: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74  tatic object Get
14e0: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
14f0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  s(..          bo
1500: 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20  ol viaFile..    
1510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1520: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1530: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1540: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1560: 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20   (viaFile)..    
1570: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1590: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
15a0: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
15b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15d0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
15e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15f0: 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  n new Dictionary
1600: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 73 65  <string, int>(se
1610: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1620: 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nts);..         
1630: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1640: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1650: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1670: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1680: 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  unts == null).. 
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
16b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
16d0: 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
16e0: 69 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e  ing, int>(settin
16f0: 67 52 65 61 64 43 6f 75 6e 74 73 29 3b 0d 0a 20  gReadCounts);.. 
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1710: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1720: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1780: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1790: 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73        /// Clears
17a0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73   the read counts
17b0: 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65   for the runtime
17c0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
17d0: 65 74 74 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  ettings...      
17e0: 2f 2f 2f 20 54 68 65 73 65 20 6e 75 6d 62 65 72  /// These number
17f0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64  s are used for d
1800: 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73  ebugging and tes
1810: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20 6f 6e  ting purposes on
1820: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
1830: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1840: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1850: 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20  ="viaFile">..   
1860: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1870: 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1880: 20 73 65 74 74 69 6e 67 73 20 77 65 72 65 20 72   settings were r
1890: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
18a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
18b0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
18c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
18d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
18e0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
18f0: 65 61 72 53 65 74 74 69 6e 67 52 65 61 64 43 6f  earSettingReadCo
1900: 75 6e 74 73 28 0d 0a 20 20 20 20 20 20 20 20 20  unts(..         
1910: 20 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20   bool viaFile.. 
1920: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1930: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1940: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1950: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1960: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1970: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a0: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
19b0: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
19c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74              sett
19e0: 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74  ingFileReadCount
19f0: 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20  s.Clear();..    
1a00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a10: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
1a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a40: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
1a50: 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c  eadCounts != nul
1a60: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a70: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1a80: 67 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65 61  gReadCounts.Clea
1a90: 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
1aa0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ab0: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1ac0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1b30: 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68 65 20   Increments the 
1b40: 72 65 61 64 20 63 6f 75 6e 74 20 66 6f 72 20 74  read count for t
1b50: 68 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e  he specified run
1b60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
1b70: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65  on..      /// se
1b80: 74 74 69 6e 67 2e 20 20 54 68 65 73 65 20 6e 75  tting.  These nu
1b90: 6d 62 65 72 73 20 61 72 65 20 75 73 65 64 20 66  mbers are used f
1ba0: 6f 72 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64  or debugging and
1bb0: 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65   testing purpose
1bc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c  s..      /// onl
1bd0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
1be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bf0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c00: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
1c10: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
1c20: 68 65 20 73 65 74 74 69 6e 67 20 62 65 69 6e 67  he setting being
1c30: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   read...      //
1c40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c60: 65 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20  e="viaFile">..  
1c70: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1c80: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
1c90: 64 20 73 65 74 74 69 6e 67 20 69 73 20 62 65 69  d setting is bei
1ca0: 6e 67 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ng read from the
1cb0: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   XML..      /// 
1cc0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
1cd0: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
1ce0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1cf0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1d00: 64 20 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  d IncrementSetti
1d10: 6e 67 52 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20  ngReadCount(..  
1d20: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1d30: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1d40: 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20  bool viaFile..  
1d50: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1d60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f   {..          lo
1d70: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
1d80: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
1d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1da0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1db0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74    // NOTE: Updat
1dc0: 65 20 73 74 61 74 69 73 74 69 63 73 20 66 6f 72  e statistics for
1dd0: 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 76 61   this setting va
1de0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
1df0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1e00: 20 20 20 20 20 20 69 66 20 28 76 69 61 46 69 6c        if (viaFil
1e10: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1e20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e30: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1e40: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1e50: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1e90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ea0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1eb0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1ec0: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
1ed0: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
1ee0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f00: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f10: 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74  ts[name] = count
1f20: 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20   + 1;..         
1f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1f40: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f60: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f70: 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b  ts.Add(name, 1);
1f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fa0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fb0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1fc0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1fe0: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1ff0: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2020: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2030: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2050: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
2060: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
2070: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
2080: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
20a0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e  tingReadCounts[n
20b0: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
20c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20d0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
2100: 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e  ReadCounts.Add(n
2110: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  ame, 1);..      
2120: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2140: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21c0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
21d0: 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73 2e 20  s the counters. 
21e0: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
21f0: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
2200: 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20  gging and..     
2210: 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70 75 72   /// testing pur
2220: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
2230: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2240: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2250: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2260: 2f 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20  / A copy of the 
2270: 63 6f 75 6e 74 65 72 73 20 2d 4f 52 2d 20 6e 75  counters -OR- nu
2280: 6c 6c 20 69 66 20 74 68 65 79 20 61 72 65 20 6e  ll if they are n
2290: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
22a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
22b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ns>..      publi
22c0: 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  c static object 
22d0: 47 65 74 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  GetOtherCounts()
22e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
22f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
2300: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2310: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2320: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2330: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
2340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2350: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
2360: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2370: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63 74   return new Dict
2380: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69  ionary<string, i
2390: 6e 74 3e 28 6f 74 68 65 72 43 6f 75 6e 74 73 29  nt>(otherCounts)
23a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
23b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2410: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65  >..      /// Cle
2430: 61 72 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73  ars the counters
2440: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
2450: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
2460: 62 75 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20  bugging and..   
2470: 20 20 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70     /// testing p
2480: 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20  urposes only... 
2490: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24a0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ry>..      publi
24b0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
24c0: 65 61 72 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  earOtherCounts()
24d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
24e0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
24f0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2510: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2520: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
2530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2540: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 43     otherCounts.C
2550: 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20  lear();..       
2560: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
2570: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
25d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
25e0: 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68  // Increments th
25f0: 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 75 6e  e specified coun
2600: 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
2610: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2620: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2630: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
2640: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
2650: 20 74 68 65 20 63 6f 75 6e 74 65 72 20 62 65 69   the counter bei
2660: 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0d  ng incremented..
2670: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2680: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
2690: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  c static void In
26a0: 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
26b0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  t(..          st
26c0: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
26d0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
26e0: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
26f0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
2700: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2720: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 21 3d 20  (otherCounts != 
2730: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2740: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2750: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2760: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2770: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
2780: 68 65 72 43 6f 75 6e 74 73 2e 54 72 79 47 65 74  herCounts.TryGet
2790: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20  Value(name, out 
27a0: 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20 20  count))..       
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
27c0: 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  therCounts[name]
27d0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2800: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68               oth
2810: 65 72 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d  erCounts.Add(nam
2820: 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  e, 1);..        
2830: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2840: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 23     }..      }..#
2850: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
2860: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65  dregion..  }..#e
2870: 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
2880: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
28e0: 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
28f0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  s Static Class..
2900: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2910: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74  .  /// This stat
2920: 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65  ic class provide
2930: 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74  s some methods t
2940: 68 61 74 20 61 72 65 20 73 68 61 72 65 64 20 62  hat are shared b
2950: 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f  etween the..  //
2960: 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  / native library
2970: 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20   pre-loader and 
2980: 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a  other classes...
2990: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29a0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
29b0: 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72  tic class Helper
29c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20  Methods..  {..  
29d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
29e0: 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
29f0: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a00: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a10: 79 4e 75 6c 6c 4f 62 6a 65 63 74 20 3d 20 22 3c  yNullObject = "<
2a20: 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22 3b 0d 0a 20  nullObject>";.. 
2a30: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a40: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a50: 79 45 6d 70 74 79 53 74 72 69 6e 67 20 3d 20 22  yEmptyString = "
2a60: 3c 65 6d 70 74 79 53 74 72 69 6e 67 3e 22 3b 0d  <emptyString>";.
2a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2a80: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2a90: 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 20  layStringFormat 
2aa0: 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a  = "\"{0}\"";....
2ab0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b00: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
2b10: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
2b20: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 20 3d  splayNullArray =
2b30: 20 22 3c 6e 75 6c 6c 41 72 72 61 79 3e 22 3b 0d   "<nullArray>";.
2b40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2b50: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2b60: 6c 61 79 45 6d 70 74 79 41 72 72 61 79 20 3d 20  layEmptyArray = 
2b70: 22 3c 65 6d 70 74 79 41 72 72 61 79 3e 22 3b 0d  "<emptyArray>";.
2b80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
2be0: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2bf0: 72 72 61 79 4f 70 65 6e 20 3d 20 27 5b 27 3b 0d  rrayOpen = '[';.
2c00: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c10: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 6c 65 6d  onst string Elem
2c20: 65 6e 74 53 65 70 61 72 61 74 6f 72 20 3d 20 22  entSeparator = "
2c30: 2c 20 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76  , ";..      priv
2c40: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2c50: 72 72 61 79 43 6c 6f 73 65 20 3d 20 27 5d 27 3b  rrayClose = ']';
2c60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
2cc0: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
2cd0: 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 70 61 63  only char[] Spac
2ce0: 65 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20 20  eChars = {..    
2cf0: 20 20 20 20 20 20 27 5c 74 27 2c 20 27 5c 6e 27        '\t', '\n'
2d00: 2c 20 27 5c 72 27 2c 20 27 5c 76 27 2c 20 27 5c  , '\r', '\v', '\
2d10: 66 27 2c 20 27 20 27 0d 0a 20 20 20 20 20 20 7d  f', ' '..      }
2d20: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
2d30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d90: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2da0: 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
2db0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2dc0: 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69   /// This lock i
2dd0: 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63  s used to protec
2de0: 74 20 74 68 65 20 73 74 61 74 69 63 20 3c 73 65  t the static <se
2df0: 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e 6f 22 20  e cref="isMono" 
2e00: 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20 20 20 20  /> field...     
2e10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e20: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
2e30: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
2e40: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
2e50: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2e60: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
2e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
2ec0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2ed0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 74 79 70      /// This typ
2ee0: 65 20 69 73 20 6f 6e 6c 79 20 70 72 65 73 65 6e  e is only presen
2ef0: 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  t when running o
2f00: 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f  n Mono...      /
2f10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2f20: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2f30: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
2f40: 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54  ing MonoRuntimeT
2f50: 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74  ype = "Mono.Runt
2f60: 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ime";....      /
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2fc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fd0: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
2fe0: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
2ff0: 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
3000: 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61 6c  n Mono.  Initial
3010: 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d 0a  ly null, it is..
3020: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62 79        /// set by
3030: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
3040: 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f  IsMono" /> metho
3050: 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20 63  d on its first c
3060: 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74 0d  all.  Later, it.
3070: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65  .      /// is re
3080: 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d 20  turned verbatim 
3090: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
30a0: 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74  ="IsMono" /> met
30b0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
30c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30d0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
30e0: 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20   bool? isMono = 
30f0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  null;....      /
3100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3140: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3150: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3160: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
3170: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
3180: 77 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20  we successfully 
3190: 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a 20 20 20  invoked the..   
31a0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
31b0: 3d 22 44 65 62 75 67 67 65 72 2e 42 72 65 61 6b  ="Debugger.Break
31c0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 49 6e  " /> method.  In
31d0: 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74  itially null, it
31e0: 20 69 73 20 73 65 74 20 62 79 0d 0a 20 20 20 20   is set by..    
31f0: 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
3200: 72 65 66 3d 22 4d 61 79 62 65 42 72 65 61 6b 49  ref="MaybeBreakI
3210: 6e 74 6f 44 65 62 75 67 67 65 72 22 20 2f 3e 20  ntoDebugger" /> 
3220: 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69  method on its fi
3230: 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20  rst call...     
3240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3250: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
3260: 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64 65 62 75  tatic bool? debu
3270: 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75 6c 6c  ggerBreak = null
3280: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
3290: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
32a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32f0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
3300: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f  Methods..      /
3310: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3320: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
3330: 65 73 20 74 68 65 20 49 44 20 6f 66 20 74 68 65  es the ID of the
3340: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
3350: 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66 6f 72  .  Only used for
3360: 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20 20 20   debugging...   
3370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3390: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
33a0: 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68 65 20  / The ID of the 
33b0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
33c0: 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74 20  -OR- zero if it 
33d0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
33e0: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
33f0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3400: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3410: 63 20 69 6e 74 20 47 65 74 50 72 6f 63 65 73 73  c int GetProcess
3420: 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  Id()..      {.. 
3430: 20 20 20 20 20 20 20 20 20 50 72 6f 63 65 73 73           Process
3440: 20 70 72 6f 63 65 73 73 20 3d 20 50 72 6f 63 65   process = Proce
3450: 73 73 2e 47 65 74 43 75 72 72 65 6e 74 50 72 6f  ss.GetCurrentPro
3460: 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  cess();....     
3470: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3480: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
3490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34a0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
34b0: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 2e 49  return process.I
34c0: 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  d;..      }.... 
34d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3520: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3530: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3540: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3550: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3560: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3570: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
3580: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
35a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
35b0: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
35c0: 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75  s assembly is ru
35d0: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
35e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
35f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
3600: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
3610: 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20  IsMono()..      
3620: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
3630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
3650: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
3660: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
3670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3680: 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e         if (isMon
3690: 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  o == null)..    
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b0: 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65    isMono = (Type
36c0: 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e  .GetType(MonoRun
36d0: 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c  timeType) != nul
36e0: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
36f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3700: 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20  (bool)isMono;.. 
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3720: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3730: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3740: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3750: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
3760: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
3770: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3780: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
3790: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
37a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3800: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49  .      #region I
3810: 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
3820: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3840: 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65  Resets the cache
3850: 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  d value for the 
3860: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
3870: 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72  reakIntoDebugger
3880: 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  "..      /// con
3890: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
38a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
38b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
38c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
38d0: 20 76 6f 69 64 20 52 65 73 65 74 42 72 65 61 6b   void ResetBreak
38e0: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a  IntoDebugger()..
38f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3900: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3910: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3920: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3930: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
3940: 61 6b 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ak = null;..    
3950: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
3960: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
39c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
39d0: 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 22 50 72    /// If the "Pr
39e0: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65 61  eLoadSQLite_Brea
39f0: 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20 63  kIntoDebugger" c
3a00: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
3a10: 74 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 2f  ting is..      /
3a20: 2f 2f 20 70 72 65 73 65 6e 74 20 28 65 2e 67 2e  // present (e.g.
3a30: 20 76 69 61 20 74 68 65 20 65 6e 76 69 72 6f 6e   via the environ
3a40: 6d 65 6e 74 29 2c 20 67 69 76 65 20 74 68 65 20  ment), give the 
3a50: 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72  interactive user
3a60: 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f   an..      /// o
3a70: 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 61 74  pportunity to at
3a80: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
3a90: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  to the current p
3aa0: 72 6f 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73  rocess; otherwis
3ab0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  e,..      /// do
3ac0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
3ad0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3ae0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
3af0: 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
3b00: 65 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67  eBreakIntoDebugg
3b10: 65 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  er()..      {.. 
3b20: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
3b30: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
3b40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3b50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
3b60: 65 62 75 67 67 65 72 42 72 65 61 6b 20 21 3d 20  ebuggerBreak != 
3b70: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3b80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
3b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55  .          if (U
3bb0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
3bc0: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
3bd0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
3be0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
3bf0: 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65 62  ite_BreakIntoDeb
3c00: 75 67 67 65 72 22 2c 20 6e 75 6c 6c 29 20 21 3d  ugger", null) !=
3c10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3c20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3c30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3c40: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
3c50: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
3c60: 20 43 6f 6e 73 6f 6c 65 20 69 6e 20 6f 72 64 65   Console in orde
3c70: 72 20 74 6f 20 70 72 6f 6d 70 74 20 74 68 65 0d  r to prompt the.
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3c90: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 61 63 74  /       interact
3ca0: 69 76 65 20 75 73 65 72 20 28 69 66 20 61 6e 79  ive user (if any
3cb0: 29 2e 20 20 54 68 69 73 20 6d 61 79 20 66 61 69  ).  This may fai
3cc0: 6c 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 20  l for any..     
3cd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3ce0: 20 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 61 73    number of reas
3cf0: 6f 6e 73 2e 20 20 45 76 65 6e 20 69 6e 20 74 68  ons.  Even in th
3d00: 6f 73 65 20 63 61 73 65 73 2c 20 77 65 20 73 74  ose cases, we st
3d10: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
3d20: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 61 6e 74     //       want
3d30: 20 74 6f 20 69 73 73 75 65 20 74 68 65 20 61 63   to issue the ac
3d40: 74 75 61 6c 20 72 65 71 75 65 73 74 20 74 6f 20  tual request to 
3d50: 62 72 65 61 6b 20 69 6e 74 6f 20 74 68 65 0d 0a  break into the..
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3d70: 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72 2e         debugger.
3d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3d90: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
3da0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
3db0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3dc0: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c            Consol
3dd0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
3de0: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e00: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
3e10: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e30: 20 20 20 20 22 41 74 74 61 63 68 20 61 20 64 65      "Attach a de
3e40: 62 75 67 67 65 72 20 74 6f 20 70 72 6f 63 65 73  bugger to proces
3e50: 73 20 7b 30 7d 20 22 20 2b 0d 0a 20 20 20 20 20  s {0} " +..     
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 20 22 61 6e 64 20 70 72 65 73 73 20 61 6e 79 20   "and press any 
3e80: 6b 65 79 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2e  key to continue.
3e90: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
3ea0: 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f            GetPro
3eb0: 63 65 73 73 49 64 28 29 29 29 3b 0d 0a 0d 0a 23  cessId()));....#
3ec0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
3ed0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4c 69 6e 65  Console.ReadLine
3f00: 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ();..#else..    
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f                Co
3f20: 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 29 3b  nsole.ReadKey();
3f30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
3f40: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
3f50: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
3f60: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
3f80: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3f90: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3fa0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
3fb0: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
3fc0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
3fd0: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
3fe0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
3ff0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
4000: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4030: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4040: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
4050: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
4060: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4080: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
4090: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65 64           "Failed
40c0: 20 74 6f 20 69 73 73 75 65 20 64 65 62 75 67 67   to issue debugg
40d0: 65 72 20 70 72 6f 6d 70 74 2c 20 22 20 2b 0d 0a  er prompt, " +..
40e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40f0: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 20 6d            "{0} m
4100: 61 79 20 62 65 20 75 6e 75 73 61 62 6c 65 3a 20  ay be unusable: 
4110: 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4130: 20 74 79 70 65 6f 66 28 43 6f 6e 73 6f 6c 65 29   typeof(Console)
4140: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
4150: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
4160: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4170: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
4180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
41b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
41d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
41e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
41f0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4220: 20 20 20 44 65 62 75 67 67 65 72 2e 42 72 65 61     Debugger.Brea
4230: 6b 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  k();....        
4240: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4250: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4270: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4280: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4290: 67 67 65 72 42 72 65 61 6b 20 3d 20 74 72 75 65  ggerBreak = true
42a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
42b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
42c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
42d0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
4310: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
4320: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4340: 20 20 20 64 65 62 75 67 67 65 72 42 72 65 61 6b     debuggerBreak
4350: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4380: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 20 20 20 20      throw;..    
4390: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
43a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
43b0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
43c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
43d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
43e0: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58         // BUGFIX
43f0: 3a 20 54 68 65 72 65 20 69 73 20 28 61 6c 6d 6f  : There is (almo
4400: 73 74 29 20 6e 6f 20 70 6f 69 6e 74 20 69 6e 20  st) no point in 
4410: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
4420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4430: 2f 2f 20 20 20 20 20 20 20 20 20 61 73 73 6f 63  //         assoc
4440: 69 61 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74  iated configurat
4450: 69 6f 6e 20 73 65 74 74 69 6e 67 20 72 65 70 65  ion setting repe
4460: 61 74 65 64 6c 79 2e 0d 0a 20 20 20 20 20 20 20  atedly...       
4470: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4480: 20 20 50 72 65 76 65 6e 74 20 74 68 61 74 20 68    Prevent that h
4490: 65 72 65 20 62 79 20 73 65 74 74 69 6e 67 20 74  ere by setting t
44a0: 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65 0d  he cached value.
44b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
44c0: 2f 20 20 20 20 20 20 20 20 20 74 6f 20 66 61 6c  /         to fal
44d0: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se...           
44e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
44f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
4500: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
4510: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
4530: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 66  ebuggerBreak = f
4540: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
4550: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4560: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
4570: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
45d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
45e0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
45f0: 20 49 44 20 6f 66 20 74 68 65 20 63 75 72 72 65   ID of the curre
4600: 6e 74 20 74 68 72 65 61 64 2e 20 20 4f 6e 6c 79  nt thread.  Only
4610: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
4620: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
4630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4640: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4650: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 49  .      /// The I
4660: 44 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  D of the current
4670: 20 74 68 72 65 61 64 20 2d 4f 52 2d 20 7a 65 72   thread -OR- zer
4680: 6f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  o if it cannot b
4690: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
46a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
46b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
46c0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 47  nal static int G
46d0: 65 74 54 68 72 65 61 64 49 64 28 29 0d 0a 20 20  etThreadId()..  
46e0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
46f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4700: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4710: 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69   return AppDomai
4720: 6e 2e 47 65 74 43 75 72 72 65 6e 74 54 68 72 65  n.GetCurrentThre
4730: 61 64 49 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a  adId();..#else..
4740: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4750: 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20   0;..#endif..   
4760: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
47c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
47d0: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
47e0: 69 6e 65 73 20 69 66 20 70 72 65 70 61 72 69 6e  ines if preparin
47f0: 67 20 61 20 71 75 65 72 79 20 73 68 6f 75 6c 64  g a query should
4800: 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20   be logged...   
4810: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4830: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
4840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
4850: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
4860: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
4870: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
4880: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
4890: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
48a0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
48b0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
48c0: 6f 20 69 66 20 74 68 65 20 71 75 65 72 79 20 70  o if the query p
48d0: 72 65 70 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  reparation shoul
48e0: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
48f0: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
4900: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
4910: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
4920: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
4930: 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a 20 20 20  LogPrepare(..   
4940: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4950: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4960: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4970: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4980: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4990: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
49a0: 67 73 2e 4c 6f 67 50 72 65 70 61 72 65 3b 0d 0a  gs.LogPrepare;..
49b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
49c0: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
49d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
49e0: 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b 0d 0a 20  .LogPrepare);.. 
49f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
4a50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4a60: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
4a70: 69 6e 65 73 20 69 66 20 70 72 65 2d 70 61 72 61  ines if pre-para
4a80: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4a90: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
4aa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4ab0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4ac0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
4ad0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
4ae0: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
4af0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
4b00: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
4b10: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
4b20: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4b30: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4b40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
4b50: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70 72 65  -zero if the pre
4b60: 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  -parameter bindi
4b70: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ng should be log
4b80: 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  ged; otherwise,.
4b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
4ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4bb0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4bc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4bd0: 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64 28 0d 0a  ol LogPreBind(..
4be0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
4bf0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
4c00: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
4c10: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
4c20: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
4c30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4c40: 46 6c 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64  Flags.LogPreBind
4c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
4c60: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
4c70: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
4c80: 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64 29 3b  ags.LogPreBind);
4c90: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
4ca0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
4cf0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4d00: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
4d10: 65 72 6d 69 6e 65 73 20 69 66 20 70 61 72 61 6d  ermines if param
4d20: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f  eter binding sho
4d30: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
4d40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4d50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4d60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
4d70: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
4d80: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
4da0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
4db0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
4dc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4dd0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
4df0: 7a 65 72 6f 20 69 66 20 74 68 65 20 70 61 72 61  zero if the para
4e00: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4e10: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
4e20: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
4e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4e40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4e50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4e60: 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a 20 20 20  ol LogBind(..   
4e70: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4e80: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4e90: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4ea0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4eb0: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4ec0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
4ed0: 67 73 2e 4c 6f 67 42 69 6e 64 3b 0d 0a 20 20 20  gs.LogBind;..   
4ee0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66         return (f
4ef0: 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f  lags == SQLiteCo
4f00: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4f10: 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  gBind);..      }
4f20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
4f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f70: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
4f80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4f90: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
4fa0: 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  f an exception i
4fb0: 6e 20 61 20 6e 61 74 69 76 65 20 63 61 6c 6c 62  n a native callb
4fc0: 61 63 6b 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ack should be lo
4fd0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
4fe0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ff0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5000: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
5010: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
5020: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5030: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5040: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5050: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5060: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5070: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5080: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5090: 68 65 20 65 78 63 65 70 74 69 6f 6e 20 73 68 6f  he exception sho
50a0: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f  uld be logged; o
50b0: 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d  therwise, zero..
50c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
50d0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
50e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
50f0: 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63  l LogCallbackExc
5100: 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20 20 20 20  eptions(..      
5110: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
5120: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
5130: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
5140: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5150: 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65   flags &= SQLite
5160: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
5170: 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70  LogCallbackExcep
5180: 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  tion;..         
5190: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
51a0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
51b0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62  onFlags.LogCallb
51c0: 61 63 6b 45 78 63 65 70 74 69 6f 6e 29 3b 0d 0a  ackException);..
51d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
51e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
51f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5230: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5240: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
5250: 6d 69 6e 65 73 20 69 66 20 62 61 63 6b 75 70 20  mines if backup 
5260: 41 50 49 20 65 72 72 6f 72 73 20 73 68 6f 75 6c  API errors shoul
5270: 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20  d be logged...  
5280: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5290: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
52a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
52b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
52c0: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
52d0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
52e0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
52f0: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
5300: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5310: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5320: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
5330: 72 6f 20 69 66 20 74 68 65 20 62 61 63 6b 75 70  ro if the backup
5340: 20 41 50 49 20 65 72 72 6f 72 20 73 68 6f 75 6c   API error shoul
5350: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
5360: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5370: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5380: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5390: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
53a0: 4c 6f 67 42 61 63 6b 75 70 28 0d 0a 20 20 20 20  LogBackup(..    
53b0: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
53c0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
53d0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69     flags &= SQLi
5400: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
5410: 73 2e 4c 6f 67 42 61 63 6b 75 70 3b 0d 0a 20 20  s.LogBackup;..  
5420: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
5430: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
5440: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5450: 6f 67 42 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  ogBackup);..    
5460: 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52    }....#if INTER
5470: 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
5480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
54e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
54f0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
5500: 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74 68 65 20  logging for the 
5510: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
5520: 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
5530: 73 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s is..      /// 
5540: 64 69 73 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20  disabled...     
5550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
5570: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
5580: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
5590: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
55a0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
55b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
55c0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
55d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
55e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
55f0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
5600: 69 66 20 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74  if logging for t
5610: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
5620: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
5630: 6c 61 73 73 20 69 73 0d 0a 20 20 20 20 20 20 2f  lass is..      /
5640: 2f 2f 20 64 69 73 61 62 6c 65 64 3b 20 6f 74 68  // disabled; oth
5650: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5660: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5670: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5680: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
5690: 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 28 0d 0a 20 20  NoLogModule(..  
56a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
56b0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
56c0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ags..          )
56d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
56e0: 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51       flags &= SQ
56f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5700: 61 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 3b  ags.NoLogModule;
5710: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5720: 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c  rn (flags == SQL
5730: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5740: 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 29 3b  gs.NoLogModule);
5750: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5760: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
57b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
57c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
57d0: 65 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65 20  ermines if <see 
57e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
57f0: 6c 65 22 20 2f 3e 20 65 72 72 6f 72 73 20 73 68  le" /> errors sh
5800: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
5810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5820: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5830: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
5840: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
5850: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
5860: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
5870: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
5880: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
5890: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
58a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
58b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
58c0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
58d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
58e0: 64 75 6c 65 22 20 2f 3e 20 65 72 72 6f 72 20 73  dule" /> error s
58f0: 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b  hould be logged;
5900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65  ..      /// othe
5910: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
5920: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5930: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
5940: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
5950: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 28 0d 0a  ogModuleError(..
5960: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5970: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5980: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
5990: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
59a0: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
59b0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
59c0: 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45  Flags.LogModuleE
59d0: 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
59e0: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
59f0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
5a00: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
5a10: 65 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  eError);..      
5a20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
5a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5a80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5a90: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
5aa0: 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  if <see cref="SQ
5ab0: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65  LiteModule" /> e
5ac0: 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64  xceptions should
5ad0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5ae0: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
5af0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5b00: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5b10: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
5b20: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
5b30: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
5b40: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
5b50: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
5b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
5b70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
5b80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5b90: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
5ba0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
5bb0: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
5bc0: 65 78 63 65 70 74 69 6f 6e 20 73 68 6f 75 6c 64  exception should
5bd0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5be0: 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65  ogged; otherwise
5bf0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
5c00: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5c10: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
5c20: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64  atic bool LogMod
5c30: 75 6c 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  uleException(.. 
5c40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
5c50: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
5c60: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
5c70: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
5c80: 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53        flags &= S
5c90: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
5ca0: 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78  lags.LogModuleEx
5cb0: 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  ception;..      
5cc0: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
5cd0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
5ce0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f  ctionFlags.LogMo
5cf0: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 29 3b 0d  duleException);.
5d00: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
5d10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5d80: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5d90: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
5da0: 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67  ocess is running
5db0: 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57   on one of the W
5dc0: 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f  indows..      //
5dd0: 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d  / [sub-]platform
5de0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
5df0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5e00: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5e10: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
5e20: 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  o when running o
5e30: 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72  n Windows; other
5e40: 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20  wise, zero...   
5e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5e60: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
5e70: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
5e80: 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20  Windows()..     
5e90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c   {..          Pl
5ea0: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
5eb0: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
5ec0: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
5ed0: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
5ee0: 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d     if ((platform
5ef0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
5f00: 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20  .Win32S) ||..   
5f10: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
5f20: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
5f30: 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77  rmID.Win32Window
5f40: 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  s) ||..         
5f50: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
5f60: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
5f70: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
5f80: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
5f90: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
5fa0: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
5fb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
5fd0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
5fe0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
5ff0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
6000: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6060: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6070: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
6080: 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e   a wrapper aroun
6090: 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  d the..      ///
60a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69   <see cref="Stri
60b0: 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61  ng.Format(IForma
60c0: 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e 67  tProvider,String
60d0: 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d  ,Object[])" /> m
60e0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
60f0: 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61  / On Mono, it ha
6100: 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65  s to call the me
6110: 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77 69  thod overload wi
6120: 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20  thout the..     
6130: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
6140: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 22  IFormatProvider"
6150: 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 64   /> parameter, d
6160: 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20 4d  ue to a bug in M
6170: 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ono...      /// 
6180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6190: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
61a0: 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20  e="provider">.. 
61b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
61c0: 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75 72   used for cultur
61d0: 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61  e-specific forma
61e0: 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tting...      //
61f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6200: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6210: 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20  e="format">..   
6220: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61     /// The forma
6230: 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  t string...     
6240: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6250: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6260: 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20  name="args">..  
6270: 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
6280: 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f 20   the objects to 
6290: 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f  format...      /
62a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
62b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
62c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
62d0: 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67  resulting string
62e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
62f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
6300: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
6310: 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d  tring StringForm
6320: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49  at(..          I
6330: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70  FormatProvider p
6340: 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20  rovider,..      
6350: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
6360: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70 61  t,..          pa
6370: 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72  rams object[] ar
6380: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
6390: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
63a0: 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29      if (IsMono()
63b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
63c0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
63d0: 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61 72  ormat(format, ar
63e0: 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
63f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
6400: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
6410: 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64 65  g.Format(provide
6420: 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  r, format, args)
6430: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
6440: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6450: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
64a0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
64b0: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
64c0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
64d0: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
64e0: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
64f0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
6500: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
6510: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
6520: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
6530: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6540: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
6550: 69 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74  isplayNullObject
6560: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
6570: 74 72 69 6e 67 20 73 74 72 69 6e 67 56 61 6c 75  tring stringValu
6580: 65 20 3d 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  e = value.ToStri
6590: 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng();....       
65a0: 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61 6c     if (stringVal
65b0: 75 65 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  ue.Length == 0).
65c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
65d0: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
65e0: 74 79 53 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20  tyString;....   
65f0: 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e         if (strin
6600: 67 56 61 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e  gValue.IndexOfAn
6610: 79 28 53 70 61 63 65 43 68 61 72 73 29 20 3c 20  y(SpaceChars) < 
6620: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
6630: 20 20 72 65 74 75 72 6e 20 73 74 72 69 6e 67 56    return stringV
6640: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
6650: 20 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72     return Helper
6660: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
6670: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
6680: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
6690: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
66a0: 65 2c 20 44 69 73 70 6c 61 79 53 74 72 69 6e 67  e, DisplayString
66b0: 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
66c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 56 61 6c         stringVal
66d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ue);..      }...
66e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
66f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
6740: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
6750: 6f 44 69 73 70 6c 61 79 53 74 72 69 6e 67 28 0d  oDisplayString(.
6760: 0a 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79  .          Array
6770: 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20   array..        
6780: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
6790: 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72 61          if (arra
67a0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
67b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
67c0: 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61   DisplayNullArra
67d0: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
67e0: 69 66 20 28 61 72 72 61 79 2e 4c 65 6e 67 74 68  if (array.Length
67f0: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
6800: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73        return Dis
6810: 70 6c 61 79 45 6d 70 74 79 41 72 72 61 79 3b 0d  playEmptyArray;.
6820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72  ...          Str
6830: 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c  ingBuilder resul
6840: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
6850: 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
6860: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 6f        foreach (o
6870: 62 6a 65 63 74 20 76 61 6c 75 65 20 69 6e 20 61  bject value in a
6880: 72 72 61 79 29 0d 0a 20 20 20 20 20 20 20 20 20  rray)..         
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
68b0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
68d0: 6c 74 2e 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e  lt.Append(Elemen
68e0: 74 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a  tSeparator);....
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6900: 73 75 6c 74 2e 41 70 70 65 6e 64 28 54 6f 44 69  sult.Append(ToDi
6910: 73 70 6c 61 79 53 74 72 69 6e 67 28 76 61 6c 75  splayString(valu
6920: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
6930: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
6940: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
6950: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
6960: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
6970: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6980: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
6990: 20 72 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30   result.Insert(0
69a0: 2c 20 41 72 72 61 79 4f 70 65 6e 2e 54 6f 53 74  , ArrayOpen.ToSt
69b0: 72 69 6e 67 28 29 29 3b 0d 0a 23 65 6c 73 65 0d  ring());..#else.
69c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
69d0: 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20  esult.Insert(0, 
69e0: 41 72 72 61 79 4f 70 65 6e 29 3b 0d 0a 23 65 6e  ArrayOpen);..#en
69f0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
6a00: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
6a10: 6e 64 28 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d  nd(ArrayClose);.
6a20: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
6a30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6a40: 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
6a50: 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ();..      }..  
6a60: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6a70: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
6a80: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
6ae0: 6e 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79  n Native Library
6af0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
6b00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6b10: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
6b20: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
6b30: 20 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20   a thin wrapper 
6b40: 61 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76  around the nativ
6b50: 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f  e library..  ///
6b60: 20 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65   loading feature
6b70: 73 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  s of the underly
6b80: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  ing platform... 
6b90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ba0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
6bb0: 69 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c  ic class NativeL
6bc0: 69 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20  ibraryHelper..  
6bd0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
6be0: 20 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74   Private Delegat
6bf0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  es..      /// <s
6c00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6c10: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
6c20: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
6c30: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
6c40: 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65  loading a native
6c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
6c60: 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20  ary, based on a 
6c70: 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72  file name, and r
6c80: 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61  eturning the loa
6c90: 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ded module..    
6ca0: 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20    /// handle... 
6cb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6cc0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6cd0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6ce0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6cf0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6d00: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6d10: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6d30: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6d40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6d50: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6d60: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6d70: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6d80: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6d90: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6da0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6db0: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
6dc0: 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ate IntPtr LoadL
6dd0: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d  ibraryCallback(.
6de0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6df0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
6e00: 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    );..      #end
6e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6e70: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
6e80: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
6e90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6ea0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
6eb0: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
6ec0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
6ed0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
6ee0: 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20  ing the Win32.. 
6ef0: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
6f00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6f10: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6f20: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6f30: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6f40: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6f50: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6f60: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6f80: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6f90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6fa0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6fb0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6fc0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6fd0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6fe0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6ff0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7000: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7010: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
7020: 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20  raryWin32(..    
7030: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7040: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
7050: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
7060: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
7070: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7080: 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61  sWin32.LoadLibra
7090: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
70a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7100: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7110: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
7140: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
7150: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
7160: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
7170: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
7180: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
7190: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
71a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
71b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
71c0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
71d0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
71e0: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
71f0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
7200: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7210: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7220: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7230: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
7240: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
7250: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
7260: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
7270: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
7280: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7290: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
72a0: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
72b0: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
72c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
72d0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
72e0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
72f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
7300: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7310: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
7320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
7330: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
7340: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
7350: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
7360: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
7370: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
7380: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
73e0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
73f0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
7400: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7410: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
7420: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
7430: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
7440: 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20  rary file...    
7450: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7470: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
7480: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7490: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
74a0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
74b0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
74c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
74d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
74e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
74f0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
7500: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
7510: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
7520: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
7530: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
7540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7550: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
7560: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
7580: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
7590: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
75a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f   {..          Lo
75b0: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
75c0: 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61  k callback = Loa
75d0: 64 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a  dLibraryWin32;..
75e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
75f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7600: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7610: 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  !HelperMethods.I
7620: 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
7630: 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62             callb
7640: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
7650: 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d  yPosix;..#endif.
7660: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
7670: 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c  urn callback(fil
7680: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
7690: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
76a0: 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
76b0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
7710: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
7720: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
7730: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f  Static Class (PO
7740: 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46  SIX)..#if !PLATF
7750: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7760: 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  WORK..  /// <sum
7770: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
7780: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
7790: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
77a0: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
77b0: 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20   POSIX APIs...  
77c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
77d0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
77e0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
77f0: 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ]..  internal st
7800: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
7810: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
7820: 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  six..  {..      
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7880: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7890: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
78a0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
78b0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
78c0: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
78d0: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
78e0: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
78f0: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
7900: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
7910: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
7920: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
7930: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
7940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7950: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7960: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
7970: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7980: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
7990: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
79a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
79b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
79c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
79d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
79e0: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
79f0: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
7a00: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
7a10: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
7a20: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
7a30: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
7a40: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
7a50: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
7a60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
7a70: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7a80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
7a90: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
7aa0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
7ab0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
7ac0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
7ad0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7ae0: 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44 41  ..#if NET_STANDA
7af0: 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44 6c  RD_20..      [Dl
7b00: 6c 49 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22 2c  lImport("libdl",
7b10: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
7b20: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
7b30: 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  ernal",..#endif.
7b40: 0a 20 20 20 20 20 20 20 20 20 20 45 6e 74 72 79  .          Entry
7b50: 50 6f 69 6e 74 20 3d 20 22 64 6c 6f 70 65 6e 22  Point = "dlopen"
7b60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c  ,..          Cal
7b70: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
7b80: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
7b90: 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
7ba0: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 6e 73 69  t = CharSet.Ansi
7bb0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 42 65 73  ,..          Bes
7bc0: 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20 66 61  tFitMapping = fa
7bd0: 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61  lse, ThrowOnUnma
7be0: 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74 72 75  ppableChar = tru
7bf0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65  e,..          Se
7c00: 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75  tLastError = tru
7c10: 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  e)]..      inter
7c20: 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
7c30: 6e 20 49 6e 74 50 74 72 20 64 6c 6f 70 65 6e 28  n IntPtr dlopen(
7c40: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
7c50: 20 69 6e 74 20 6d 6f 64 65 29 3b 0d 0a 0d 0a 20   int mode);.... 
7c60: 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a  //////////////..
7cb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7cc0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
7cd0: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
7ce0: 65 6e 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74  en(), bind funct
7cf0: 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a 69 6c 79  ion calls lazily
7d00: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7d10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
7d20: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
7d30: 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d 20 30 78  t RTLD_LAZY = 0x
7d40: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  1;....      ////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
7da0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7db0: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
7dc0: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
7dd0: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
7de0: 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0d 0a 20   immediately... 
7df0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7e00: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
7e10: 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54  nal const int RT
7e20: 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b 0d 0a 0d  LD_NOW = 0x2;...
7e30: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7e90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7ea0: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
7eb0: 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20 73 79 6d  open(), make sym
7ec0: 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79 20 61 76  bols globally av
7ed0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
7ee0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7ef0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
7f00: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 47 4c  onst int RTLD_GL
7f10: 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b 0d 0a 0d  OBAL = 0x100;...
7f20: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
7f80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
7f90: 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c   For use with dl
7fa0: 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73 69 74 65  open(), opposite
7fb0: 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c   of RTLD_GLOBAL,
7fc0: 20 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74   and the default
7fd0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7fe0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
7ff0: 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e  nternal const in
8000: 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20 3d 20 30  t RTLD_LOCAL = 0
8010: 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  x000;....      /
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20  ////////..      
8070: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8080: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
8090: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
80a0: 74 68 65 20 64 65 66 61 75 6c 74 73 20 75 73 65  the defaults use
80b0: 64 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e  d by this class.
80c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
80d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
80e0: 74 65 72 6e 61 6c 20 20 63 6f 6e 73 74 20 69 6e  ternal  const in
80f0: 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54 20 3d  t RTLD_DEFAULT =
8100: 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54 4c 44   RTLD_NOW | RTLD
8110: 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 7d 0d 0a 23  _GLOBAL;..  }..#
8120: 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67  endif..  #endreg
8130: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
8140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8180: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
8190: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
81a0: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
81b0: 61 74 69 63 20 43 6c 61 73 73 20 28 57 69 6e 33  atic Class (Win3
81c0: 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  2)..  /// <summa
81d0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
81e0: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
81f0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
8200: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 57  to call native W
8210: 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20 2f 2f  in32 APIs...  //
8220: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
8230: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8240: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8250: 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67  [SuppressUnmanag
8260: 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d  edCodeSecurity].
8270: 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72  .#endif..  inter
8280: 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
8290: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
82a0: 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b 0d 0a  hodsWin32..  {..
82b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8300: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8310: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8320: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
8330: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
8340: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
8350: 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69 62 72  e Win32 LoadLibr
8360: 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ary..      /// f
8370: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
8380: 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
8390: 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65  tion for full de
83a0: 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74  tails on what it
83b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73  ..      /// does
83c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
83d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
83e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
83f0: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
8400: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
8410: 66 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  f the executable
8420: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8430: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8440: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8450: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8460: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
8470: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
8480: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
8490: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
84a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
84b0: 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50 4c 41  turns>..#if !PLA
84c0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
84d0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44  MEWORK..      [D
84e0: 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c  llImport("kernel
84f0: 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  32",..#else..   
8500: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63     [DllImport("c
8510: 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66  oredll",..#endif
8520: 0d 0a 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  .. CallingConven
8530: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
8540: 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c  nvention.Winapi,
8550: 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
8560: 65 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50  et.Auto,..#if !P
8570: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8580: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
8590: 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69      BestFitMappi
85a0: 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f  ng = false, Thro
85b0: 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61  wOnUnmappableCha
85c0: 72 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69  r = true,..#endi
85d0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74  f..          Set
85e0: 4c 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65  LastError = true
85f0: 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  )]..      intern
8600: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
8610: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
8620: 61 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  ary(string fileN
8630: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ame);....      /
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8680: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
8690: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
86a0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
86b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
86c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
86d0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
86e0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
86f0: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
8700: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
8710: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
8720: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
8730: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
8740: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
8750: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
8760: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
8770: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
8780: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
8790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
87a0: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
87b0: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
87c0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
87d0: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
87e0: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
87f0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
8800: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8810: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f 72   [DllImport("cor
8820: 65 64 6c 6c 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  edll", CallingCo
8830: 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
8840: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57 69 6e  ngConvention.Win
8850: 61 70 69 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  api)]..      int
8860: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
8870: 65 72 6e 20 76 6f 69 64 20 47 65 74 53 79 73 74  ern void GetSyst
8880: 65 6d 49 6e 66 6f 28 6f 75 74 20 53 59 53 54 45  emInfo(out SYSTE
8890: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
88a0: 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  o);....      ///
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
8900: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8910: 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d     /// This enum
8920: 65 72 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73  eration contains
8930: 20 74 68 65 20 70 6f 73 73 69 62 6c 65 20 76 61   the possible va
8940: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f  lues for the pro
8950: 63 65 73 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  cessor..      //
8960: 2f 20 61 72 63 68 69 74 65 63 74 75 72 65 20 66  / architecture f
8970: 69 65 6c 64 20 6f 66 20 74 68 65 20 73 79 73 74  ield of the syst
8980: 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  em information s
8990: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
89a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
89b0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
89c0: 65 6e 75 6d 20 50 72 6f 63 65 73 73 6f 72 41 72  enum ProcessorAr
89d0: 63 68 69 74 65 63 74 75 72 65 20 3a 20 75 73 68  chitecture : ush
89e0: 6f 72 74 20 2f 2a 20 43 4f 4d 50 41 54 3a 20 57  ort /* COMPAT: W
89f0: 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  in32. */..      
8a00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 74  {..          Int
8a10: 65 6c 20 3d 20 30 2c 0d 0a 20 20 20 20 20 20 20  el = 0,..       
8a20: 20 20 20 4d 49 50 53 20 3d 20 31 2c 0d 0a 20 20     MIPS = 1,..  
8a30: 20 20 20 20 20 20 20 20 41 6c 70 68 61 20 3d 20          Alpha = 
8a40: 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6f  2,..          Po
8a50: 77 65 72 50 43 20 3d 20 33 2c 0d 0a 20 20 20 20  werPC = 3,..    
8a60: 20 20 20 20 20 20 53 48 78 20 3d 20 34 2c 0d 0a        SHx = 4,..
8a70: 20 20 20 20 20 20 20 20 20 20 41 52 4d 20 3d 20            ARM = 
8a80: 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41  5,..          IA
8a90: 36 34 20 3d 20 36 2c 0d 0a 20 20 20 20 20 20 20  64 = 6,..       
8aa0: 20 20 20 41 6c 70 68 61 36 34 20 3d 20 37 2c 0d     Alpha64 = 7,.
8ab0: 0a 20 20 20 20 20 20 20 20 20 20 4d 53 49 4c 20  .          MSIL 
8ac0: 3d 20 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 8,..          
8ad0: 41 4d 44 36 34 20 3d 20 39 2c 0d 0a 20 20 20 20  AMD64 = 9,..    
8ae0: 20 20 20 20 20 20 49 41 33 32 5f 6f 6e 5f 57 69        IA32_on_Wi
8af0: 6e 36 34 20 3d 20 31 30 2c 0d 0a 20 20 20 20 20  n64 = 10,..     
8b00: 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
8b10: 78 46 46 46 46 0d 0a 20 20 20 20 20 20 7d 0d 0a  xFFFF..      }..
8b20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
8b80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
8b90: 2f 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65  / This structure
8ba0: 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72 6d   contains inform
8bb0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
8bc0: 63 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 72  current computer
8bd0: 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f  . This..      //
8be0: 2f 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 70  / includes the p
8bf0: 72 6f 63 65 73 73 6f 72 20 74 79 70 65 2c 20 70  rocessor type, p
8c00: 61 67 65 20 73 69 7a 65 2c 20 6d 65 6d 6f 72 79  age size, memory
8c10: 20 61 64 64 72 65 73 73 65 73 2c 20 65 74 63 2e   addresses, etc.
8c20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8c30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 5b 53  mmary>..      [S
8c40: 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
8c50: 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
8c60: 6c 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  l)]..      inter
8c70: 6e 61 6c 20 73 74 72 75 63 74 20 53 59 53 54 45  nal struct SYSTE
8c80: 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20 20 20 7b 0d  M_INFO..      {.
8c90: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
8ca0: 63 20 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  c ProcessorArchi
8cb0: 74 65 63 74 75 72 65 20 77 50 72 6f 63 65 73 73  tecture wProcess
8cc0: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
8cd0: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
8ce0: 63 20 75 73 68 6f 72 74 20 77 52 65 73 65 72 76  c ushort wReserv
8cf0: 65 64 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ed; /* NOT USED 
8d00: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
8d10: 62 6c 69 63 20 75 69 6e 74 20 64 77 50 61 67 65  blic uint dwPage
8d20: 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Size; /* NOT USE
8d30: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
8d40: 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 6c 70  public IntPtr lp
8d50: 4d 69 6e 69 6d 75 6d 41 70 70 6c 69 63 61 74 69  MinimumApplicati
8d60: 6f 6e 41 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f  onAddress; /* NO
8d70: 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
8d80: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
8d90: 74 72 20 6c 70 4d 61 78 69 6d 75 6d 41 70 70 6c  tr lpMaximumAppl
8da0: 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20  icationAddress; 
8db0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
8dc0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
8dd0: 20 75 69 6e 74 20 64 77 41 63 74 69 76 65 50 72   uint dwActivePr
8de0: 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20  ocessorMask; /* 
8df0: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
8e00: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69         public ui
8e10: 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72 6f  nt dwNumberOfPro
8e20: 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54 20  cessors; /* NOT 
8e30: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
8e40: 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64     public uint d
8e50: 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b 20  wProcessorType; 
8e60: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
8e70: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
8e80: 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74 69   uint dwAllocati
8e90: 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20 2f  onGranularity; /
8ea0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
8eb0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8ec0: 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f  ushort wProcesso
8ed0: 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20 55  rLevel; /* NOT U
8ee0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
8ef0: 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20    public ushort 
8f00: 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73 69  wProcessorRevisi
8f10: 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  on; /* NOT USED 
8f20: 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e  */..      }..#en
8f30: 64 69 66 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64  dif..  }..  #end
8f40: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f  region....  ////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23  /////////....  #
8fa0: 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64  region Unmanaged
8fb0: 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73   Interop Methods
8fc0: 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 53   Static Class (S
8fd0: 51 4c 69 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73  QLite)..  /// <s
8fe0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
8ff0: 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72  his class declar
9000: 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  es P/Invoke meth
9010: 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69  ods to call nati
9020: 76 65 20 53 51 4c 69 74 65 20 41 50 49 73 2e 0d  ve SQLite APIs..
9030: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
9040: 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
9050: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
9060: 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e  K..  [SuppressUn
9070: 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72  managedCodeSecur
9080: 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ity]..#endif..  
9090: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
90a0: 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74 69  class UnsafeNati
90b0: 76 65 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a  veMethods..  {..
90c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
90d0: 73 74 20 73 74 72 69 6e 67 20 45 78 63 65 70 74  st string Except
90e0: 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d 61 74  ionMessageFormat
90f0: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 43   =..          "C
9100: 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e 20  aught exception 
9110: 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74 68 6f  in \"{0}\" metho
9120: 64 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20  d: {1}";....    
9130: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9180: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 68 61       #region Sha
9190: 72 65 64 20 4e 61 74 69 76 65 20 53 51 4c 69 74  red Native SQLit
91a0: 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
91b0: 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
91c0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
91d0: 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
91e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
91f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9200: 66 69 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75  file extension u
9210: 73 65 64 20 66 6f 72 20 64 79 6e 61 6d 69 63 20  sed for dynamic 
9220: 6c 69 6e 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d  link libraries..
9230: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
9240: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
9250: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
9260: 6f 6e 6c 79 20 73 74 72 69 6e 67 20 44 6c 6c 46  only string DllF
9270: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22  ileExtension = "
9280: 2e 64 6c 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  .dll";....      
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
92e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
92f0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
9300: 6c 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65  le extension use
9310: 64 20 66 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f  d for the XML co
9320: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
9330: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
9350: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
9360: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f  adonly string Co
9370: 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73 69 6f  nfigFileExtensio
9380: 6e 20 3d 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a  n = ".config";..
9390: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
93f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9400: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6e 61  / This is the na
9410: 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f  me of the XML co
9420: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
9430: 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65   specific to the
9440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 79 73 74  ..      /// Syst
9450: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 61  em.Data.SQLite a
9460: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
9470: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
9490: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
94a0: 72 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69  ring XmlConfigFi
94b0: 6c 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20  leName =..      
94c0: 20 20 20 20 74 79 70 65 6f 66 28 55 6e 73 61 66      typeof(Unsaf
94d0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 29 2e  eNativeMethods).
94e0: 4e 61 6d 65 73 70 61 63 65 20 2b 20 44 6c 6c 46  Namespace + DllF
94f0: 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a  ileExtension +..
9500: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69 67            Config
9510: 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a  FileExtension;..
9520: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9570: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9590: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 58 4d  / This is the XM
95a0: 4c 20 63 6f 6e 66 69 67 75 72 61 74 72 69 6f 6e  L configuratrion
95b0: 20 66 69 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74   file token that
95c0: 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65   will be replace
95d0: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f  d with..      //
95e0: 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64 20  / the qualified 
95f0: 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72 65  path to the dire
9600: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
9610: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
9620: 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  ration..      //
9630: 2f 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  / file...      /
9640: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9650: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9660: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
9670: 69 6e 67 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72  ing XmlConfigDir
9680: 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20  ectoryToken =.. 
9690: 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f           "%PreLo
96a0: 61 64 53 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66  adSQLite_XmlConf
96b0: 69 67 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a  igDirectory%";..
96c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
96d0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9720: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
9730: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
9740: 73 74 61 6e 74 73 20 28 44 65 73 6b 74 6f 70 20  stants (Desktop 
9750: 46 72 61 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d  Framework Only).
9760: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
9770: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9780: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9790: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
97a0: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
97b0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
97c0: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
97d0: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
97e0: 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  h..      /// the
97f0: 20 71 75 61 6c 69 66 69 65 64 20 70 61 74 68 20   qualified path 
9800: 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  to the directory
9810: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73   containing this
9820: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
9830: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9840: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
9850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
9860: 73 74 72 69 6e 67 20 41 73 73 65 6d 62 6c 79 44  string AssemblyD
9870: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d  irectoryToken =.
9880: 0a 20 20 20 20 20 20 20 20 20 20 22 25 50 72 65  .          "%Pre
9890: 4c 6f 61 64 53 51 4c 69 74 65 5f 41 73 73 65 6d  LoadSQLite_Assem
98a0: 62 6c 79 44 69 72 65 63 74 6f 72 79 25 22 3b 0d  blyDirectory%";.
98b0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
98c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9910: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9920: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 65  // This is the e
9930: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
9940: 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77  ble token that w
9950: 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20  ill be replaced 
9960: 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 2f  with an..      /
9970: 2f 2f 20 61 62 62 72 65 76 69 61 74 69 6f 6e 20  // abbreviation 
9980: 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 66 72  of the target fr
9990: 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
99a0: 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69 61 74  e value associat
99b0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
99c0: 2f 2f 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79  // this assembly
99d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
99e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
99f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
9a00: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 54 61  adonly string Ta
9a10: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b  rgetFrameworkTok
9a20: 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  en =..          
9a30: 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f  "%PreLoadSQLite_
9a40: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 25  TargetFramework%
9a50: 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  ";..#endif..    
9a60: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
9a70: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9ac0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
9ad0: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
9ae0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9af0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
9b00: 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65 64 20  is lock is used 
9b10: 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 73  to protect the s
9b20: 74 61 74 69 63 20 5f 53 51 4c 69 74 65 4e 61 74  tatic _SQLiteNat
9b30: 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
9b40: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53  e,..      /// _S
9b50: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
9b60: 65 48 61 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f  eHandle, and pro
9b70: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
9b80: 72 65 50 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c  rePlatforms fiel
9b90: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
9ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9bb0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
9bc0: 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
9bd0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d  staticSyncRoot =
9be0: 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a   new object();..
9bf0: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c40: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9c50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9c60: 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72  / This dictionar
9c70: 79 20 73 74 6f 72 65 73 20 74 68 65 20 6d 61 70  y stores the map
9c80: 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70 72  pings between pr
9c90: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
9ca0: 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ture..      /// 
9cb0: 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66 6f  names and platfo
9cc0: 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65  rm names.  These
9cd0: 20 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6e 6f   mappings are no
9ce0: 77 20 75 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a  w used for two..
9cf0: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
9d00: 65 73 2e 20 20 46 69 72 73 74 2c 20 74 68 65 79  es.  First, they
9d10: 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 74   are used to det
9d20: 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 61 73  ermine if the as
9d30: 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20  sembly code..   
9d40: 20 20 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75     /// base shou
9d50: 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  ld be used inste
9d60: 61 64 20 6f 66 20 74 68 65 20 6c 6f 63 61 74 69  ad of the locati
9d70: 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f 6e 20 77  on, based upon w
9d80: 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20  hether one..    
9d90: 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66    /// or more of
9da0: 20 74 68 65 20 6e 61 6d 65 64 20 73 75 62 2d 64   the named sub-d
9db0: 69 72 65 63 74 6f 72 69 65 73 20 65 78 69 73 74  irectories exist
9dc0: 20 77 69 74 68 69 6e 20 74 68 65 20 61 73 73 65   within the asse
9dd0: 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20  mbly code..     
9de0: 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53 65 63 6f   /// base.  Seco
9df0: 6e 64 2c 20 74 68 65 79 20 61 72 65 20 75 73 65  nd, they are use
9e00: 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20 6c  d to assist in l
9e10: 6f 61 64 69 6e 67 20 74 68 65 20 61 70 70 72 6f  oading the appro
9e20: 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f  priate..      //
9e30: 2f 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  / SQLite interop
9e40: 20 61 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74   assembly into t
9e50: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
9e60: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
9e70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9e80: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
9e90: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
9ea0: 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65  g, string> proce
9eb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
9ec0: 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20  Platforms;....  
9ed0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
9f20: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9f30: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
9f40: 69 73 20 69 73 20 74 68 65 20 63 61 63 68 65 64  is is the cached
9f50: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72   return value fr
9f60: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  om the..      //
9f70: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
9f80: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
9f90: 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52  y" /> method -OR
9fa0: 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74 20 6d  - null if that m
9fb0: 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ethod..      ///
9fc0: 20 68 61 73 20 6e 65 76 65 72 20 72 65 74 75 72   has never retur
9fd0: 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61 6c 75  ned a valid valu
9fe0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
9ff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a000: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
a010: 74 72 69 6e 67 20 63 61 63 68 65 64 41 73 73 65  tring cachedAsse
a020: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a  mblyDirectory;..
a030: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
a090: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a0a0: 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69 65 6c  / When this fiel
a0b0: 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69  d is non-zero, i
a0c0: 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 0d  t indicates the.
a0d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
a0e0: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
a0f0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
a100: 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20 61 62  ethod was not ab
a110: 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a  le to locate a..
a120: 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74 61 62        /// suitab
a130: 6c 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65  le assembly dire
a140: 63 74 6f 72 79 2e 20 20 54 68 65 0d 0a 20 20 20  ctory.  The..   
a150: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a160: 3d 22 47 65 74 43 61 63 68 65 64 41 73 73 65 6d  ="GetCachedAssem
a170: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e  blyDirectory" />
a180: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65   method will che
a190: 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f  ck this..      /
a1a0: 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69  // field and ski
a1b0: 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68  ps calls into th
a1c0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
a1d0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
a1e0: 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  y" />..      ///
a1f0: 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72   method whenever
a200: 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e   it is non-zero.
a210: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a220: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
a230: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
a240: 6c 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65  l noAssemblyDire
a250: 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
a2b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a2c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
a2d0: 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65 74  s the cached ret
a2e0: 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74  urn value from t
a2f0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
a300: 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43  ee cref="GetXmlC
a310: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
a320: 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75  > method -OR- nu
a330: 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  ll if that metho
a340: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 73  d..      /// has
a350: 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64 20   never returned 
a360: 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a  a valid value...
a370: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a380: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
a390: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
a3a0: 67 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  g cachedXmlConfi
a3b0: 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  gFileName;....  
a3c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
a3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
a410: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a420: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
a430: 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69 73  en this field is
a440: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e   non-zero, it in
a450: 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20 20  dicates the..   
a460: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a470: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
a480: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
a490: 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20 74  d was not able t
a4a0: 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20 20  o locate a..    
a4b0: 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20 58    /// suitable X
a4c0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
a4d0: 20 66 69 6c 65 20 6e 61 6d 65 2e 20 20 54 68 65   file name.  The
a4e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
a4f0: 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65 64   cref="GetCached
a500: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
a510: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  e" /> method wil
a520: 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20 20  l check this..  
a530: 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61 6e      /// field an
a540: 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69 6e  d skips calls in
a550: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
a560: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
a570: 6c 65 4e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20  leName" />..    
a580: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68 65    /// method whe
a590: 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e 2d  never it is non-
a5a0: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
a5b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a5c0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
a5d0: 63 20 62 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66  c bool noXmlConf
a5e0: 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  igFileName;..   
a5f0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
a600: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a650: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a660: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a670: 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d   For now, this m
a680: 65 74 68 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c  ethod simply cal
a690: 6c 73 20 74 68 65 20 49 6e 69 74 69 61 6c 69 7a  ls the Initializ
a6a0: 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  e method...     
a6b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a6c0: 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 55 6e  .      static Un
a6d0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
a6e0: 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  s()..      {..  
a6f0: 20 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69          Initiali
a700: 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ze();..      }..
a710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
a720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a760: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
a770: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a780: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e  / Attempts to in
a790: 69 74 69 61 6c 69 7a 65 20 74 68 69 73 20 63 6c  itialize this cl
a7a0: 61 73 73 20 62 79 20 70 72 65 2d 6c 6f 61 64 69  ass by pre-loadi
a7b0: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
a7c0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Lite..      /// 
a7d0: 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 65 20  library for the 
a7e0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
a7f0: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
a800: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
a810: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a820: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
a830: 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64  rnal static void
a840: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
a850: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a860: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
a870: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
a880: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
a890: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
a8a0: 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74  / NOTE: Create t
a8b0: 68 65 20 6c 69 73 74 73 20 6f 66 20 73 74 61 74  he lists of stat
a8c0: 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c  istics that will
a8d0: 20 63 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20   contain..      
a8e0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
a8f0: 69 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64  ious counts used
a900: 20 69 6e 20 64 65 62 75 67 67 69 6e 67 2c 20 69   in debugging, i
a910: 6e 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a 20 20  ncluding the..  
a920: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
a930: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
a940: 20 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61   each setting va
a950: 6c 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61  lue has been rea
a960: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  d...          //
a970: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
a980: 67 44 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65  gData.Initialize
a990: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
a9a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
a9b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
a9c0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
a9d0: 4e 4f 54 45 3a 20 43 68 65 63 6b 20 69 66 20 61  NOTE: Check if a
a9e0: 20 64 65 62 75 67 67 65 72 20 6e 65 65 64 73 20   debugger needs 
a9f0: 74 6f 20 62 65 20 61 74 74 61 63 68 65 64 20 62  to be attached b
aa00: 65 66 6f 72 65 20 64 6f 69 6e 67 20 61 6e 79 0d  efore doing any.
aa10: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
aa20: 20 20 20 20 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a      real work...
aa30: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
aa40: 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
aa50: 74 68 6f 64 73 2e 4d 61 79 62 65 42 72 65 61 6b  thods.MaybeBreak
aa60: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 3b 0d  IntoDebugger();.
aa70: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
aa80: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
aa90: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
aaa0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
aab0: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
aac0: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
aad0: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RY..          //
aae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
aaf0: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f  OTE: If the "No_
ab00: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65  PreLoadSQLite" e
ab10: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
ab20: 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a  ble is set (to..
ab30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
ab40: 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b     anything), sk
ab50: 69 70 20 61 6c 6c 20 6f 66 20 6f 75 72 20 73 70  ip all of our sp
ab60: 65 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73  ecial code and s
ab70: 69 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20  imply return... 
ab80: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ab90: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
aba0: 74 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50  ttingValue("No_P
abb0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e  reLoadSQLite", n
abc0: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
abd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
abe0: 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65  urn;..#endif..#e
abf0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
ac00: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
ac10: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
ac20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ac30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
ac40: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
ac50: 61 6b 65 20 73 75 72 65 20 74 68 69 73 20 6c 69  ake sure this li
ac60: 73 74 20 69 73 20 75 70 64 61 74 65 64 20 69 66  st is updated if
ac70: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 0d 0a   the supported..
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ac90: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
aca0: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
acb0: 6d 65 73 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66  mes and/or platf
acc0: 6f 72 6d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  orm names..     
acd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ace0: 20 20 63 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20    changes...    
acf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ad10: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
ad20: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
ad30: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ad40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ad50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad70: 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74    // NOTE: Creat
ad80: 65 20 74 68 65 20 6d 61 70 20 6f 66 20 70 72 6f  e the map of pro
ad90: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
ada0: 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  ure names..     
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
adc0: 20 20 20 20 20 20 74 6f 20 70 6c 61 74 66 6f 72        to platfor
add0: 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67 20 61 20  m names using a 
ade0: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
adf0: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
ae00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
ae10: 20 20 20 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20      comparer... 
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae30: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
ae40: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
ae50: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
ae60: 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20  forms =..       
ae70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
ae80: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
ae90: 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a  ring, string>(..
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aeb0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
aec0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
aed0: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a  IgnoreCase);....
aee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aef0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
af00: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
af10: 20 53 65 74 75 70 20 74 68 65 20 6c 69 73 74 20   Setup the list 
af20: 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  of platform name
af30: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
af40: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
af50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
af60: 65 20 73 75 70 70 6f 72 74 65 64 20 70 72 6f 63  e supported proc
af70: 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
af80: 72 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  res...          
af90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
afa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
afb0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
afc0: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
afd0: 28 22 78 38 36 22 2c 20 22 57 69 6e 33 32 22 29  ("x86", "Win32")
afe0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
aff0: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
b000: 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
b010: 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22 2c  rms.Add("AMD64",
b020: 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20   "x64");..      
b030: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
b040: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
b050: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
b060: 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d 22  IA64", "Itanium"
b070: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b080: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
b090: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
b0a0: 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c 20  orms.Add("ARM", 
b0b0: 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20 20  "WinCE");..     
b0c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69           }....#i
b0d0: 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
b0e0: 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
b0f0: 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
b100: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b110: 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  K..#if PRELOAD_N
b120: 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
b140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
b150: 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20 61  / BUGBUG: What a
b160: 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c 69  bout other appli
b170: 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f 0d  cation domains?.
b180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
b190: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
b1a0: 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74 69   if (_SQLiteNati
b1b0: 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d  veModuleHandle =
b1c0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
b1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
b1e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b1f0: 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44 69     string baseDi
b200: 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d  rectory = null;.
b210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b220: 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
b230: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
b240: 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
b260: 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20  IGNORED */..    
b270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
b280: 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
b290: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
b2a0: 20 20 20 20 20 20 20 20 20 72 65 66 20 62 61 73           ref bas
b2b0: 65 44 69 72 65 63 74 6f 72 79 2c 20 72 65 66 20  eDirectory, ref 
b2c0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
b2d0: 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  cture);....     
b2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
b2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b300: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
b310: 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20  mpt to pre-load 
b320: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
b330: 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20 20  library (or..   
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b350: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20  /       interop 
b360: 61 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73 74  assembly) and st
b370: 6f 72 65 20 62 6f 74 68 20 74 68 65 20 66 69 6c  ore both the fil
b380: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
b390: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
b3a0: 20 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f     and native mo
b3b0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20  dule handle for 
b3c0: 6c 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20 20  later usage...  
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3e0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
b3f0: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
b400: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
b410: 20 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53 51         PreLoadSQ
b420: 4c 69 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20  LiteDll(..      
b430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b440: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 70  baseDirectory, p
b450: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
b460: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
b480: 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   _SQLiteNativeMo
b490: 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20  duleFileName,.. 
b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4b0: 20 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65       ref _SQLite
b4c0: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  NativeModuleHand
b4d0: 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le);..          
b4e0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
b4f0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
b500: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
b510: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b560: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b570: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
b580: 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70 61 74 68  ombines two path
b590: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20   strings...     
b5a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
b5b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
b5c0: 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31 22 3e 0d  m name="path1">.
b5d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
b5e0: 69 72 73 74 20 70 61 74 68 20 2d 4f 52 2d 20 6e  irst path -OR- n
b5f0: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
b600: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b610: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b620: 22 70 61 74 68 32 22 3e 0d 0a 20 20 20 20 20 20  "path2">..      
b630: 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64 20 70  /// The second p
b640: 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a  ath -OR- null...
b650: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
b660: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
b670: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
b680: 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e 65 64 20  // The combined 
b690: 70 61 74 68 20 73 74 72 69 6e 67 20 2d 4f 52 2d  path string -OR-
b6a0: 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68 20 6f 66   null if both of
b6b0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 70 61   the original pa
b6c0: 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74  th..      /// st
b6d0: 72 69 6e 67 73 20 61 72 65 20 6e 75 6c 6c 2e 0d  rings are null..
b6e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
b6f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
b700: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
b710: 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50  ng MaybeCombineP
b720: 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ath(..          
b730: 73 74 72 69 6e 67 20 70 61 74 68 31 2c 0d 0a 20  string path1,.. 
b740: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b750: 70 61 74 68 32 0d 0a 20 20 20 20 20 20 20 20 20  path2..         
b760: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
b770: 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68 31         if (path1
b780: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
b790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b7a0: 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32 20        if (path2 
b7b0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b7d0: 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28  rn Path.Combine(
b7e0: 70 61 74 68 31 2c 20 70 61 74 68 32 29 3b 0d 0a  path1, path2);..
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
b800: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
b810: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
b820: 68 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  h1;..          }
b830: 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
b840: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
b850: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
b860: 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d  (path2 != null).
b870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b880: 20 20 20 72 65 74 75 72 6e 20 70 61 74 68 32 3b     return path2;
b890: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b8a0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
b8b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
b8c0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
b8d0: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
b8e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
b930: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b940: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65  y>..      /// Re
b950: 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64 20  sets the cached 
b960: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
b970: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75  n file name valu
b980: 65 2c 20 74 68 75 73 20 66 6f 72 63 69 6e 67 20  e, thus forcing 
b990: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  the..      /// n
b9a0: 65 78 74 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65  ext call to <see
b9b0: 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65 64   cref="GetCached
b9c0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
b9d0: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20  e" /> method to 
b9e0: 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rely..      /// 
b9f0: 75 70 6f 6e 20 74 68 65 20 3c 73 65 65 20 63 72  upon the <see cr
ba00: 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67  ef="GetXmlConfig
ba10: 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74  FileName" /> met
ba20: 68 6f 64 20 74 6f 20 66 65 74 63 68 20 74 68 65  hod to fetch the
ba30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 58 4d 4c 20  ..      /// XML 
ba40: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
ba50: 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
ba60: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ba70: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
ba80: 61 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43  atic void ResetC
ba90: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
baa0: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
bab0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
bac0: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
bad0: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
bae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
baf0: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
bb00: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
bb10: 64 5f 52 65 73 65 74 43 61 63 68 65 64 58 6d 6c  d_ResetCachedXml
bb20: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29  ConfigFileName")
bb30: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
bb40: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
bb50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
bb60: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
bb70: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
bb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
bb90: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
bba0: 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  leName = null;..
bbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
bbc0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
bbd0: 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e = false;..    
bbe0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
bbf0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
bc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc40: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
bc50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bc60: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
bc70: 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68  returns the cach
bc80: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
bc90: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66  tion file name f
bca0: 6f 72 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  or the..      //
bcb0: 2f 20 61 73 73 65 6d 62 6c 79 20 63 6f 6e 74 61  / assembly conta
bcc0: 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65  ining the manage
bcd0: 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  d System.Data.SQ
bce0: 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c  Lite components,
bcf0: 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   if..      /// a
bd00: 76 61 69 6c 61 62 6c 65 2e 20 20 49 66 20 74 68  vailable.  If th
bd10: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
bd20: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
bd30: 6e 61 6d 65 20 76 61 6c 75 65 20 69 73 20 6e 6f  name value is no
bd40: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76 61  t..      /// ava
bd50: 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c 73 65 65  ilable, the <see
bd60: 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e   cref="GetXmlCon
bd70: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
bd80: 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20  method will..   
bd90: 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 74     /// be used t
bda0: 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 58 4d 4c  o obtain the XML
bdb0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
bdc0: 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ile name...     
bdd0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
bde0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
bdf0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
be00: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
be10: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
be20: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
be30: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
be40: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
be50: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
be60: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
be70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
be80: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
be90: 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64 58  tring GetCachedX
bea0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
beb0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
bec0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
bed0: 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
bee0: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
bef0: 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
bf00: 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
bf10: 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43  unt("Method_GetC
bf20: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
bf30: 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69  leName");..#endi
bf40: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
bf50: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
bf60: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
bf70: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
bf80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bf90: 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68 65         if (cache
bfa0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
bfb0: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
bfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
bfd0: 65 74 75 72 6e 20 63 61 63 68 65 64 58 6d 6c 43  eturn cachedXmlC
bfe0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a  onfigFileName;..
bff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c000: 69 66 20 28 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46  if (noXmlConfigF
c010: 69 6c 65 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20  ileName)..      
c020: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
c030: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
c040: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c050: 20 20 20 72 65 74 75 72 6e 20 47 65 74 58 6d 6c     return GetXml
c060: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29  ConfigFileName()
c070: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
c080: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
c0d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c0e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
c0f0: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
c100: 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  s the XML config
c110: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
c120: 65 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  e for the assemb
c130: 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ly..      /// co
c140: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e  ntaining the man
c150: 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61  aged System.Data
c160: 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e  .SQLite componen
c170: 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ts...      /// <
c180: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c190: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
c1a0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d        /// The XM
c1b0: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
c1c0: 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e  file name -OR- n
c1d0: 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  ull if it cannot
c1e0: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a   be determined..
c1f0: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65        /// or doe
c200: 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20  s not exist...  
c210: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
c220: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
c230: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
c240: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
c250: 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  Name()..      {.
c260: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
c270: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
c280: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
c290: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
c2a0: 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
c2b0: 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
c2c0: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
c2d0: 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  Name");..#endif.
c2e0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
c2f0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
c300: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
c310: 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
c320: 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b  string fileName;
c330: 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
c340: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
c350: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 64 69  RK..          di
c360: 72 65 63 74 6f 72 79 20 3d 20 41 70 70 44 6f 6d  rectory = AppDom
c370: 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
c380: 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
c390: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  ..          file
c3a0: 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62  Name = MaybeComb
c3b0: 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72  inePath(director
c3c0: 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  y, XmlConfigFile
c3d0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
c3e0: 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
c3f0: 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  sts(fileName))..
c400: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c410: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
c420: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
c430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c440: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c450: 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f       cachedXmlCo
c460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66  nfigFileName = f
c470: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
c480: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c490: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c4a0: 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
c4b0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
c4c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 64 69  ....          di
c4d0: 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63  rectory = GetCac
c4e0: 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
c4f0: 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20  tory();..       
c500: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61     fileName = Ma
c510: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
c520: 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
c530: 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
c540: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
c550: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
c560: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
c570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c580: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
c590: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
c5a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
c5c0: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
c5d0: 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d  ame = fileName;.
c5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
c5f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c600: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
c610: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
c620: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
c630: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
c640: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
c650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
c660: 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  oXmlConfigFileNa
c670: 6d 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  me = true;..    
c680: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c690: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
c6a0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
c6b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c700: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c710: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c720: 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20 72 65  If necessary, re
c730: 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70 70 6f  places all suppo
c740: 72 74 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  rted XML configu
c750: 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  ration file toke
c760: 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  ns..      /// wi
c770: 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69 61  th their associa
c780: 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  ted values...   
c790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c7a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
c7b0: 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
c7c0: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
c7d0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
c7e0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
c7f0: 6e 20 66 69 6c 65 20 62 65 69 6e 67 20 72 65 61  n file being rea
c800: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
c810: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
c820: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
c830: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  alue">..      //
c840: 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61 6c 75  / A setting valu
c850: 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20  e read from the 
c860: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
c870: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
c880: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
c890: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
c8a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
c8b0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61  value of the <pa
c8c0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c  ramref name="val
c8d0: 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20  ue" /> will all 
c8e0: 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 0d 0a 20  supported XML.. 
c8f0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
c900: 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  ration file toke
c910: 6e 73 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f  ns replaced.  No
c920: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73   return value is
c930: 20 72 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20   reserved..     
c940: 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65   /// to indicate
c950: 20 61 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73   an error.  This
c960: 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66   method cannot f
c970: 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ail...      /// 
c980: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
c990: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c9a0: 20 73 74 72 69 6e 67 20 52 65 70 6c 61 63 65 58   string ReplaceX
c9b0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65  mlConfigFileToke
c9c0: 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ns(..          s
c9d0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 0d  tring fileName,.
c9e0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
c9f0: 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
ca00: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
ca10: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
ca20: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
ca30: 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
ca40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ca50: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
ca60: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
ca70: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
ca80: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caa0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
cab0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cad0: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
cae0: 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
caf0: 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
cb00: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
cb20: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
cb30: 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79  rEmpty(directory
cb40: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
cb50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb70: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
cb80: 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20  alue.Replace(.. 
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
cbb0: 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54  ConfigDirectoryT
cbc0: 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29  oken, directory)
cbd0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
cbe0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
cc00: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
cc10: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
cc20: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
cc30: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
cc40: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
cc50: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
cc60: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
cc70: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
cc80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cc90: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
cca0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ccb0: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd00: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
cd10: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
cd20: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
cd30: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
cd60: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
cd70: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
cd80: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cda0: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
cdb0: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
cdc0: 20 58 4d 4c 20 22 20 2b 0d 0a 20 20 20 20 20 20   XML " +..      
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 20 20 20 20 20 20 22 63 6f 6e 66 69 67 75          "configu
cdf0: 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 30  ration file \"{0
ce00: 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20 7b 31 7d 22  }\" tokens: {1}"
ce10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce30: 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20   fileName, e)); 
ce40: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
ce50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
ce80: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
ce90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ceb0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
cec0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
cee0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
cef0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cf00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
cf10: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cf20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
cf30: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ue;..      }....
cf40: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
cf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
cf90: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cfa0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cfb0: 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65  / Queries and re
cfc0: 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20  turns the value 
cfd0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
cfe0: 20 73 65 74 74 69 6e 67 2c 20 75 73 69 6e 67 20   setting, using 
cff0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  the..      /// s
d000: 70 65 63 69 66 69 65 64 20 58 4d 4c 20 63 6f 6e  pecified XML con
d010: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
d020: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
d030: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d040: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
d050: 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
d060: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
d070: 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   the XML configu
d080: 72 61 74 69 6f 6e 20 66 69 6c 65 20 74 6f 20 72  ration file to r
d090: 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ead...      /// 
d0a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
d0b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d0c0: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
d0d0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
d0e0: 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20  he setting...   
d0f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d100: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
d110: 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22  m name="default"
d120: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
d130: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
d140: 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65 74  urned if the set
d150: 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65  ting has not bee
d160: 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
d170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63  ..      /// or c
d180: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
d190: 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
d1a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
d1b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d1c0: 22 65 78 70 61 6e 64 22 3e 0d 0a 20 20 20 20 20  "expand">..     
d1d0: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
d1e0: 20 65 78 70 61 6e 64 20 61 6e 79 20 65 6e 76 69   expand any envi
d1f0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
d200: 20 72 65 66 65 72 65 6e 63 65 73 20 63 6f 6e 74   references cont
d210: 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20 20  ained in..      
d220: 2f 2f 2f 20 74 68 65 20 73 65 74 74 69 6e 67 20  /// the setting 
d230: 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75  value to be retu
d240: 72 6e 65 64 2e 20 20 54 68 69 73 20 68 61 73 20  rned.  This has 
d250: 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65  no effect on the
d260: 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f   .NET..      ///
d270: 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
d280: 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  rk...      /// <
d290: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
d2a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
d2b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
d2c0: 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
d2d0: 20 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c   -OR- the defaul
d2e0: 74 20 76 61 6c 75 65 20 73 70 65 63 69 66 69 65  t value specifie
d2f0: 64 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d by..      /// 
d300: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
d310: 64 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69  default" /> if i
d320: 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  t has not been s
d330: 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72  et explicitly or
d340: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e  ..      /// cann
d350: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
d360: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
d370: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
d380: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
d390: 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e 67 56  ring GetSettingV
d3a0: 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67  alueViaXmlConfig
d3b0: 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  File(..         
d3c0: 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
d3d0: 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
d3e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
d3f0: 65 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  e,     /* in */.
d400: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
d410: 67 20 40 64 65 66 61 75 6c 74 2c 20 2f 2a 20 69  g @default, /* i
d420: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
d430: 62 6f 6f 6c 20 65 78 70 61 6e 64 20 20 20 20 20  bool expand     
d440: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
d450: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
d460: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
d470: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d480: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
d490: 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  fileName == null
d4a0: 29 20 7c 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e 75  ) || (name == nu
d4b0: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
d4c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
d4d0: 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20  default;....    
d4e0: 20 20 20 20 20 20 20 20 20 20 58 6d 6c 44 6f 63            XmlDoc
d4f0: 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d  ument document =
d500: 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74   new XmlDocument
d510: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
d520: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f       document.Lo
d530: 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a  ad(fileName); /*
d540: 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
d550: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
d560: 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20  ement element = 
d570: 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53  document.SelectS
d580: 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20  ingleNode(..    
d590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
d5a0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
d5b0: 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
d5c0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
d5d0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
d5e0: 20 20 20 20 20 20 20 20 20 20 22 2f 63 6f 6e 66            "/conf
d5f0: 69 67 75 72 61 74 69 6f 6e 2f 61 70 70 53 65 74  iguration/appSet
d600: 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27  tings/add[@key='
d610: 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61  {0}']", name)) a
d620: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
d630: 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b       XmlElement;
d640: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a   /* throw */....
d650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d660: 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c   (element != nul
d670: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d680: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d690: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
d6a0: 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  lue = null;.... 
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6c0: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73   if (element.Has
d6d0: 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75 65  Attribute("value
d6e0: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
d6f0: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
d700: 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74   = element.GetAt
d710: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29  tribute("value")
d720: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d730: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
d740: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
d750: 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
d760: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
d770: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
d780: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
d790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7a0: 20 20 20 20 20 69 66 20 28 65 78 70 61 6e 64 29       if (expand)
d7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
d7d0: 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
d7e0: 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
d7f0: 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
d800: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d810: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
d820: 65 20 3d 20 52 65 70 6c 61 63 65 45 6e 76 69 72  e = ReplaceEnvir
d830: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f  onmentVariableTo
d840: 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65  kens(value);..#e
d850: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
d860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
d870: 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 58 6d 6c  lue = ReplaceXml
d880: 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73  ConfigFileTokens
d890: 28 66 69 6c 65 4e 61 6d 65 2c 20 76 61 6c 75 65  (fileName, value
d8a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d8b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d8d0: 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
d8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
d900: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
d910: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d920: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
d930: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
d940: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
d950: 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
d960: 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
d970: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
d980: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
d990: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  if..          {.
d9a0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
d9b0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
d9c0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
d9d0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
d9e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
da00: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
da10: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
da20: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
da30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
da40: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
da50: 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69  ntCulture, "Nati
da60: 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a  ve library " +..
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da80: 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65        "pre-loade
da90: 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74 20  r failed to get 
daa0: 73 65 74 74 69 6e 67 20 5c 22 7b 30 7d 5c 22 20  setting \"{0}\" 
dab0: 76 61 6c 75 65 20 22 20 2b 0d 0a 20 20 20 20 20  value " +..     
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 22 66 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69   "from XML confi
dae0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22  guration file \"
daf0: 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d  {1}\": {2}", nam
db00: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
db10: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
db20: 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  me, e)); /* thro
db30: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
db40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
db50: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
db60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
db70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
db80: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
dba0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
dbb0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
dbc0: 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
dbd0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
dbe0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
dc30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
dc40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
dc50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
dc60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
dc70: 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  Attempts to dete
dc80: 72 6d 69 6e 65 20 74 68 65 20 74 61 72 67 65 74  rmine the target
dc90: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
dca0: 62 75 74 65 20 76 61 6c 75 65 20 74 68 61 74 20  bute value that 
dcb0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  is..      /// as
dcc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
dcd0: 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61  e specified mana
dce0: 67 65 64 20 61 73 73 65 6d 62 6c 79 2c 20 69 66  ged assembly, if
dcf0: 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20 20   applicable...  
dd00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
dd10: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
dd20: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 73 73 65 6d  aram name="assem
dd30: 62 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  bly">..      ///
dd40: 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61 73 73   The managed ass
dd50: 65 6d 62 6c 79 20 74 6f 20 72 65 61 64 20 74 68  embly to read th
dd60: 65 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f  e target framewo
dd70: 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61 6c  rk attribute val
dd80: 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 72  ue..      /// fr
dd90: 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  om...      /// <
dda0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
ddb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
ddc0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
ddd0: 65 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20  e of the target 
dde0: 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
ddf0: 75 74 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ute value for th
de00: 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
de10: 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 61     /// managed a
de20: 73 73 65 6d 62 6c 79 20 2d 4f 52 2d 20 6e 75 6c  ssembly -OR- nul
de30: 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  l if it cannot b
de40: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20 20 49  e determined.  I
de50: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f  f this..      //
de60: 2f 20 61 73 73 65 6d 62 6c 79 20 77 61 73 20 63  / assembly was c
de70: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 61 20 76  ompiled with a v
de80: 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e  ersion of the .N
de90: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 70 72 69  ET Framework pri
dea0: 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  or to..      ///
deb0: 20 76 65 72 73 69 6f 6e 20 34 2e 30 2c 20 74 68   version 4.0, th
dec0: 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
ded0: 20 4d 41 59 20 72 65 66 6c 65 63 74 20 74 68 61   MAY reflect tha
dee0: 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  t version of the
def0: 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f   .NET..      ///
df00: 20 46 72 61 6d 65 77 6f 72 6b 20 69 6e 73 74 65   Framework inste
df10: 61 64 20 6f 66 20 74 68 65 20 6f 6e 65 20 61 73  ad of the one as
df20: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
df30: 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61  e specified mana
df40: 67 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  ged..      /// a
df50: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
df60: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
df70: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
df80: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41  atic string GetA
df90: 73 73 65 6d 62 6c 79 54 61 72 67 65 74 46 72 61  ssemblyTargetFra
dfa0: 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
dfb0: 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
dfc0: 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  mbly..          
dfd0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
dfe0: 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
dff0: 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly != null)..   
e000: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 4e 45         {..#if NE
e010: 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20 7c  T_40 || NET_45 |
e020: 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45 54  | NET_451 || NET
e030: 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20 7c  _452 || NET_46 |
e040: 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45 54  | NET_461 || NET
e050: 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34 37 20 7c  _462 || NET_47 |
e060: 7c 20 4e 45 54 5f 34 37 31 0d 0a 20 20 20 20 20  | NET_471..     
e070: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
e080: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0a0: 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
e0b0: 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0d0: 20 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65      typeof(Targe
e0e0: 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62  tFrameworkAttrib
e0f0: 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
e100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e120: 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74            Target
e130: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
e140: 74 65 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  te targetFramewo
e150: 72 6b 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  rk =..          
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e170: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
e180: 41 74 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20  Attribute)..    
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47        assembly.G
e1b0: 65 74 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74  etCustomAttribut
e1c0: 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1e0: 20 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74     typeof(Target
e1f0: 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75  FrameworkAttribu
e200: 74 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d  te), false)[0];.
e210: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e220: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e230: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e  targetFramework.
e240: 46 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a  FrameworkName;..
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e260: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e270: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
e280: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
e290: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e2b0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
e2d0: 65 6c 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20  elif NET_35..   
e2e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e2f0: 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
e300: 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d  ,Version=v3.5";.
e310: 0a 23 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20  .#elif NET_20.. 
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e330: 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f  urn ".NETFramewo
e340: 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22  rk,Version=v2.0"
e350: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
e360: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e370: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
e380: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
e390: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
e3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e3e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
e3f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
e400: 63 63 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61  ccepts a long ta
e410: 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61  rget framework a
e420: 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61  ttribute value a
e430: 6e 64 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f  nd makes it into
e440: 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75   a..      /// mu
e450: 63 68 20 73 68 6f 72 74 65 72 20 76 65 72 73 69  ch shorter versi
e460: 6f 6e 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72  on, suitable for
e470: 20 75 73 65 20 77 69 74 68 20 4e 75 47 65 74 20   use with NuGet 
e480: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20  packages...     
e490: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e4a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
e4b0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
e4c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c  .      /// The l
e4d0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
e4e0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
e4f0: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  alue to convert.
e500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
e510: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
e520: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
e530: 20 2f 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74   /// The short t
e540: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
e550: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
e560: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
e570: 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f  cannot..      //
e580: 2f 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20  / be determined 
e590: 6f 72 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20  or converted... 
e5a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
e5b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
e5c0: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
e5d0: 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
e5e0: 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
e5f0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
e600: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29  lue..          )
e610: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
e620: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
e630: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
e640: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
e650: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
e660: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
e670: 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65  value = value.Re
e680: 70 6c 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65  place(".NETFrame
e690: 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
e6a0: 20 22 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20   "net");..      
e6b0: 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
e6c0: 65 2e 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53  e.Replace(".", S
e6d0: 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d  tring.Empty);...
e6e0: 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69  .          int i
e6f0: 6e 64 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64  ndex = value.Ind
e700: 65 78 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20  exOf(',');....  
e710: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
e720: 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  x != -1)..      
e730: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
e740: 76 61 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28  value.Substring(
e750: 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  0, index);....  
e760: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
e770: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
e780: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
e7e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e7f0: 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79  /// If necessary
e800: 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73  , replaces all s
e810: 75 70 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e  upported environ
e820: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
e830: 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  kens..      /// 
e840: 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f 63  with their assoc
e850: 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  iated values... 
e860: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e870: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
e880: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
e890: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
e8a0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
e8b0: 65 61 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69  ead from an envi
e8c0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
e8d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
e8e0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
e8f0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e900: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
e910: 6f 66 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66  of the <paramref
e920: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e   name="value" />
e930: 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72   will all suppor
e940: 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65  ted..      /// e
e950: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
e960: 62 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61  ble tokens repla
e970: 63 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20  ced.  No return 
e980: 76 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65  value is reserve
e990: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  d..      /// to 
e9a0: 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f  indicate an erro
e9b0: 72 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20  r.  This method 
e9c0: 63 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20  cannot fail...  
e9d0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
e9e0: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
e9f0: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
ea00: 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65  ReplaceEnvironme
ea10: 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73  ntVariableTokens
ea20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
ea30: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
ea40: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
ea50: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
ea60: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
ea70: 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20  mpty(value))..  
ea80: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ea90: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
eaa0: 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43  directory = GetC
eab0: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
eac0: 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20  ectory();....   
ead0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
eae0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
eaf0: 6d 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29  mpty(directory))
eb00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eb10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
eb20: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
eb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb50: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
eb60: 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20  ue.Replace(..   
eb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb80: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44         AssemblyD
eb90: 69 72 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64  irectoryToken, d
eba0: 69 72 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20  irectory);..    
ebb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ebc0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
ebd0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
ebe0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
ebf0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
ec00: 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
ec10: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
ec20: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
ec30: 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
ec40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ec50: 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
ec60: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ec70: 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec90: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
eca0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
ecd0: 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
ece0: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
ecf0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed10: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
ed20: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
ed30: 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
ed40: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed60: 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
ed70: 61 69 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ailed to replace
ed80: 20 61 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20   assembly " +.. 
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 69               "di
edb0: 72 65 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b  rectory token: {
edc0: 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
edd0: 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee00: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ee30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee40: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
ee50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee60: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
ee70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ee80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ee90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
eea0: 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
eeb0: 61 73 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b  assembly = null;
eec0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
eed0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
eee0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
eef0: 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
ef00: 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65  ly = Assembly.Ge
ef10: 74 45 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62  tExecutingAssemb
ef20: 6c 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ly();..         
ef30: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
ef40: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
ef50: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
ef60: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ef70: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
ef80: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
ef90: 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
efa0: 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
efb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
efc0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
efd0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
efe0: 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
eff0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
f000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f020: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
f030: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
f040: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
f050: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
f070: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
f080: 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69  ntCulture, "Nati
f090: 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a  ve library " +..
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0b0: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
f0c0: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
f0d0: 6f 62 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67  obtain executing
f0e0: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f100: 22 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c  "assembly: {0}",
f110: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
f120: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
f130: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f140: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
f150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f170: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
f180: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f1a0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f1b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f1c0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
f1d0: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
f1e0: 20 3d 20 41 62 62 72 65 76 69 61 74 65 54 61 72   = AbbreviateTar
f1f0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
f200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f210: 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67   GetAssemblyTarg
f220: 65 74 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65  etFramework(asse
f230: 6d 62 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly));....     
f240: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
f250: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
f260: 74 79 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f  ty(targetFramewo
f270: 72 6b 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rk))..          
f280: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f290: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f2c0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
f2d0: 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d   value.Replace(.
f2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f2f0: 20 20 20 20 20 20 20 20 20 20 20 54 61 72 67 65             Targe
f300: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c  tFrameworkToken,
f310: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
f320: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
f330: 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
f340: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
f350: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f370: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
f380: 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
f3a0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
f3b0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f3c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
f3d0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
f3e0: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
f3f0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
f400: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f420: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
f450: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
f460: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
f470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f480: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
f490: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
f4a0: 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
f4b0: 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4d0: 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d             "pre-
f4e0: 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
f4f0: 20 72 65 70 6c 61 63 65 20 74 61 72 67 65 74 20   replace target 
f500: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
f510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f520: 20 20 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f     "framework to
f530: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
f540: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
f550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f560: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f570: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
f580: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
f590: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5b0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
f5c0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
f5d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
f5e0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
f5f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f600: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f610: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f620: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
f630: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65  ue;..      }..#e
f640: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ndif....      //
f650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
f6a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f6b0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
f6c0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
f6d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
f6e0: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
f6f0: 75 73 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20  using the XML.. 
f700: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
f710: 72 61 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f  ration file and/
f720: 6f 72 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65  or the environme
f730: 6e 74 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72  nt variables for
f740: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
f750: 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20      /// process 
f760: 61 6e 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65  and/or the curre
f770: 6e 74 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20  nt system, when 
f780: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
f790: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
f7a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
f7b0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
f7c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
f7d0: 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69  ame of the setti
f7e0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
f7f0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
f800: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
f810: 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20  default">..     
f820: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
f830: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  o be returned if
f840: 20 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73   the setting has
f850: 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78   not been set ex
f860: 70 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20  plicitly..      
f870: 2f 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65  /// or cannot be
f880: 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
f890: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
f8a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
f8b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
f8c0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
f8d0: 65 20 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74  e setting -OR- t
f8e0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
f8f0: 20 73 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20   specified by.. 
f900: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
f910: 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74  ef name="default
f920: 22 20 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e  " /> if it has n
f930: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
f940: 69 63 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20  icitly or..     
f950: 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
f960: 65 74 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64  etermined.  By d
f970: 65 66 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65  efault, all refe
f980: 72 65 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69  rences to existi
f990: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ng..      /// en
f9a0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
f9b0: 6c 65 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61  les will be expa
f9c0: 6e 64 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f  nded to their co
f9d0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75  rresponding valu
f9e0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  es..      /// wi
f9f0: 74 68 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74  thin the value t
fa00: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e  o be returned un
fa10: 6c 65 73 73 20 65 69 74 68 65 72 20 74 68 65 20  less either the 
fa20: 22 4e 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a  "No_Expand" or..
fa30: 20 20 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78        /// "No_Ex
fa40: 70 61 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e  pand_<paramref n
fa50: 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65  ame="name" />" e
fa60: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
fa70: 62 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a  ble is set [to..
fa80: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69        /// anythi
fa90: 6e 67 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ng]...      /// 
faa0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
fab0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
fac0: 63 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74  c string GetSett
fad0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
fae0: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
faf0: 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
fb00: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
fb10: 40 64 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a  @default /* in *
fb20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  /..          )..
fb30: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
fb40: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
fb50: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
fb60: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
fb70: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
fb80: 20 73 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c   special "No_SQL
fb90: 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
fba0: 75 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d  ue" environment.
fbb0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
fbc0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 69 73 20      variable is 
fbd0: 73 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67  set [to anything
fbe0: 5d 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  ], this method w
fbf0: 69 6c 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  ill always..    
fc00: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
fc10: 65 74 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c  eturn the defaul
fc20: 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  t value...      
fc30: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
fc40: 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
fc50: 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
fc60: 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
fc70: 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
fc80: 51 4c 69 74 65 47 65 74 53 65 74 74 69 6e 67 56  QLiteGetSettingV
fc90: 61 6c 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d  alue") != null).
fca0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
fcc0: 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20  rn @default;..  
fcd0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
fce0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  f....          /
fcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
fd40: 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
fd50: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
fd60: 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75     return @defau
fd70: 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  lt;....         
fd80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fdd0: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
fde0: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
fdf0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
fe00: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
fe10: 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65   // NOTE: We are
fe20: 20 61 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61   about to read a
fe30: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66   setting value f
fe40: 72 6f 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d  rom the environm
fe50: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
fe60: 2f 20 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69  /       or possi
fe70: 62 6c 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  bly from the XML
fe80: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
fe90: 69 6c 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a  ile; create or..
fea0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
feb0: 20 20 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65     increment the
fec0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 73 74 61   appropriate sta
fed0: 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20  tistic now...   
fee0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
fef0: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
ff00: 6e 63 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52  ncrementSettingR
ff10: 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66  eadCount(name, f
ff20: 61 6c 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alse);..#endif..
ff30: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
ff40: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
ff50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
ff60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff90: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
ffa0: 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64       bool expand
ffb0: 20 3d 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52   = true; /* SHAR
ffc0: 45 44 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20  ED: Environment 
ffd0: 2d 41 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67  -AND- XML config
ffe0: 20 66 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20   file. */....   
fff0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10040 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
10050 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
10060 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
10070 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
10080 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
10090 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
100a0 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
100b0 6c 65 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20  le("No_Expand") 
100c0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
100d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
100e0 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61       expand = fa
100f0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
10100 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
10110 65 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e  e if (Environmen
10120 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
10130 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c               Hel
10150 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
10160 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
10170 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
10180 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
10190 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70           "No_Exp
101a0 61 6e 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29  and_{0}", name))
101b0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
101c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
101d0 20 20 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66        expand = f
101e0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
101f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10200 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d  value = Environm
10210 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65  ent.GetEnvironme
10220 6e 74 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29  ntVariable(name)
10230 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
10240 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
10250 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
10260 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10280 28 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20  (expand)..      
10290 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
102a0 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  e = Environment.
102b0 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e  ExpandEnvironmen
102c0 74 56 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65  tVariables(value
102d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
102e0 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
102f0 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  aceEnvironmentVa
10300 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c  riableTokens(val
10310 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
10320 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
10330 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
10340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10350 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
10360 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
10370 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
10380 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51  E: If the "No_SQ
10390 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  LiteXmlConfigFil
103a0 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  e" environment v
103b0 61 72 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20  ariable is..    
103c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
103d0 65 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d  et [to anything]
103e0 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  , this method wi
103f0 6c 6c 20 4e 45 56 45 52 20 72 65 61 64 20 66 72  ll NEVER read fr
10400 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
10410 20 20 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63    //       XML c
10420 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
10430 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
10440 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
10450 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45  Environment.GetE
10460 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62  nvironmentVariab
10470 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
10480 20 20 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58       "No_SQLiteX
10490 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21  mlConfigFile") !
104a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
104b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
104c0 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
104d0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ult;..          
104e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
104f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10540 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
10550 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
10560 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
10570 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
10580 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
10590 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
105a0 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
105b0 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d  alue from the XM
105c0 4c 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  L..          // 
105d0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
105e0 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65  ion file; create
105f0 20 6f 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68   or increment th
10600 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
10610 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
10620 20 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e    statistic now.
10630 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
10640 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
10650 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74  ata.IncrementSet
10660 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61  tingReadCount(na
10670 6d 65 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64  me, true);..#end
10680 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
10690 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
106a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
106b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
106f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10700 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56  GetSettingValueV
10710 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28  iaXmlConfigFile(
10720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10730 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
10740 69 67 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61  igFileName(), na
10750 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78  me, @default, ex
10760 70 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pand);..      }.
10770 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
10780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107c0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
107d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
107e0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76  WORK..      priv
107f0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
10800 67 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49  g ListToString(I
10810 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73  List<string> lis
10820 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  t)..      {..   
10830 20 20 20 20 20 20 20 69 66 20 28 6c 69 73 74 20         if (list 
10840 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
10850 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
10860 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
10870 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
10880 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72  result = new Str
10890 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
108a0 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
108b0 63 68 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65  ch (string eleme
108c0 6e 74 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20  nt in list)..   
108d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
108e0 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
108f0 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ent == null)..  
10900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10910 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
10920 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
10930 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
10940 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10950 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
10960 6e 64 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20  nd(' ');....    
10970 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
10980 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29  .Append(element)
10990 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
109a0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
109b0 72 6e 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69  rn result.ToStri
109c0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ng();..      }..
109d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
109e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a20 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61  /....      priva
10a30 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 43 68  te static int Ch
10a40 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75  eckForArchitectu
10a50 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28  resAndPlatforms(
10a60 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
10a70 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
10a80 20 20 20 20 20 20 20 20 20 72 65 66 20 4c 69 73           ref Lis
10a90 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65  t<string> matche
10aa0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
10ab0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10ac0 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
10ad0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
10ae0 69 66 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e  if (matches == n
10af0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10b00 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65      matches = ne
10b10 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29  w List<string>()
10b20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  ;....          l
10b30 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
10b40 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
10b50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10b60 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
10b70 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
10b80 74 6f 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20  tory) &&..      
10b90 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f              (pro
10ba0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
10bb0 72 65 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e  rePlatforms != n
10bc0 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
10bd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10be0 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
10bf0 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c  h (KeyValuePair<
10c00 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
10c10 70 61 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20  pair..          
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c30 20 20 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72    in processorAr
10c40 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f  chitecturePlatfo
10c50 72 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rms)..          
10c60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c80 20 69 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45   if (Directory.E
10c90 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69  xists(MaybeCombi
10ca0 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79  nePath(directory
10cb0 2c 20 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20  , pair.Key))).. 
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cf0 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61    matches.Add(pa
10d00 69 72 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ir.Key);..      
10d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d40 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d60 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70  string value = p
10d70 61 69 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20  air.Value;....  
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d90 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
10da0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dc0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20    continue;.... 
10dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10de0 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74 6f       if (Directo
10df0 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43  ry.Exists(MaybeC
10e00 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
10e10 74 6f 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a  tory, value)))..
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e50 20 20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76     matches.Add(v
10e60 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
10e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e80 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
10e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ea0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10eb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10ec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10ed0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10ee0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
10ef0 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lt;..      }....
10f00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10f50 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
10f60 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65   static bool Che
10f70 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
10f80 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41  se(..          A
10f90 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
10fa0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  ,..          ref
10fb0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
10fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
10fd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10fe0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
10ff0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11000 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d    if (assembly =
11010 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
11020 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11030 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
11040 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
11050 20 63 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65   codeBase = asse
11060 6d 62 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a  mbly.CodeBase;..
11070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11080 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
11090 6c 4f 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73  lOrEmpty(codeBas
110a0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
110b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
110c0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
110d0 20 20 20 20 20 20 55 72 69 20 75 72 69 20 3d 20        Uri uri = 
110e0 6e 65 77 20 55 72 69 28 63 6f 64 65 42 61 73 65  new Uri(codeBase
110f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
11100 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69    string localFi
11110 6c 65 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63  leName = uri.Loc
11120 61 6c 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  alPath;....     
11130 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
11140 6c 65 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46  le.Exists(localF
11150 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11170 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
11180 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
11190 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50  ng directory = P
111a0 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
111b0 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
111c0 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69           localFi
111d0 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
111e0 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  w */....        
111f0 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c        string xml
11200 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
11210 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
11220 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
11230 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c        directory,
11240 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
11250 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
11260 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45        if (File.E
11270 78 69 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46  xists(xmlConfigF
11280 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
11290 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
112a0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
112b0 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
112c0 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
112d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
112e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
112f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11300 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
11310 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
11320 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
11330 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11340 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
11350 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
11360 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
11370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11380 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
11390 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
113a0 6f 75 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75  ound XML configu
113b0 72 61 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d  ration file " +.
113c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
113d0 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
113e0 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
113f0 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
11400 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
11410 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
11420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11430 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   xmlConfigFileNa
11440 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
11450 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11460 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11470 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
11480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11490 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
114a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
114b0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
114c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
114d0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
114e0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
114f0 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c  eName = localFil
11500 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
11510 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11520 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
11530 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11540 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74           List<st
11550 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20  ring> matches = 
11560 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
11570 20 20 20 20 20 20 20 69 66 20 28 43 68 65 63 6b         if (Check
11580 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 73  ForArchitectures
11590 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72  AndPlatforms(dir
115a0 65 63 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63  ectory, ref matc
115b0 68 65 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20  hes) > 0)..     
115c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
115d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
115e0 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49  && TRACE_DETECTI
115f0 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ON..            
11600 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11610 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11630 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
11640 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
11650 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
11660 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11670 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
11680 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
11690 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116b0 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
116c0 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66  ary pre-loader f
116d0 6f 75 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d  ound native sub-
116e0 64 69 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d  directories " +.
116f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11700 20 20 20 20 20 20 20 20 20 20 20 22 76 69 61 20             "via 
11710 63 6f 64 65 20 62 61 73 65 20 66 6f 72 20 63 75  code base for cu
11720 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
11730 67 20 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30  g assembly: \"{0
11740 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  }\"",..         
11750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11760 20 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61   ListToString(ma
11770 74 63 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72  tches))); /* thr
11780 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
11790 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
117a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
117b0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
117c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
117d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117e0 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11800 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
11810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11820 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61   fileName = loca
11830 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  lFileName;..    
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11850 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
11860 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11870 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11880 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
11890 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
118a0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
118b0 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
118c0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
118d0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
118e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  se..          ca
118f0 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d  tch (Exception).
11900 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
11910 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
11920 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
11930 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
11940 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
11950 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11970 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
11980 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
11990 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119b0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
119c0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
119d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
119e0 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
119f0 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
11a00 72 20 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63  r failed to chec
11a10 6b 20 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d  k code base " +.
11a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11a30 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
11a40 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
11a50 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
11a60 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
11a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11a80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
11a90 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
11aa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11ab0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
11ac0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
11ad0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
11ae0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
11af0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
11b00 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
11b10 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
11b20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
11b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11b70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11b80 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  ry>..      /// R
11b90 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64  esets the cached
11ba0 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74   assembly direct
11bb0 6f 72 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20  ory value, thus 
11bc0 66 6f 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74  forcing the next
11bd0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c  ..      /// call
11be0 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47   to <see cref="G
11bf0 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
11c00 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
11c10 74 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20  thod to rely..  
11c20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65      /// upon the
11c30 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
11c40 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
11c50 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66  " /> method to f
11c60 65 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20  etch the..      
11c70 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72  /// assembly dir
11c80 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ectory...      /
11c90 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11ca0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
11cb0 74 69 63 20 76 6f 69 64 20 52 65 73 65 74 43 61  tic void ResetCa
11cc0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
11cd0 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b  ctory()..      {
11ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67  ..          #reg
11cf0 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20  ion Debug Build 
11d00 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d  Only..#if DEBUG.
11d10 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
11d20 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74  Data.IncrementOt
11d30 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64  herCount("Method
11d40 5f 52 65 73 65 74 43 61 63 68 65 64 41 73 73 65  _ResetCachedAsse
11d50 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b  mblyDirectory");
11d60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
11d70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
11d80 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
11d90 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
11da0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
11db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
11dc0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
11dd0 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
11de0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
11df0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
11e00 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
11e10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
11e20 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
11e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e70 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
11e80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11e90 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
11ea0 65 74 75 72 6e 73 20 74 68 65 20 63 61 63 68 65  eturns the cache
11eb0 64 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  d directory for 
11ec0 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72  the assembly cur
11ed0 72 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  rently..      //
11ee0 2f 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  / being executed
11ef0 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20  , if available. 
11f00 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 61   If the cached a
11f10 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
11f20 79 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f  y value..      /
11f30 2f 2f 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  // is not availa
11f40 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ble, the <see cr
11f50 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44  ef="GetAssemblyD
11f60 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74  irectory" /> met
11f70 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
11f80 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f  /// be used to o
11f90 62 74 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62  btain the assemb
11fa0 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
11fb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11fc0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
11fd0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11fe0 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
11ff0 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
12000 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
12010 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
12020 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
12030 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
12040 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
12050 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
12060 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
12070 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
12080 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
12090 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
120a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
120b0 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
120c0 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
120d0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
120e0 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
120f0 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
12100 65 74 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41  ethod_GetCachedA
12110 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
12120 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ");..#endif..   
12130 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12140 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  n....          l
12150 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
12160 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
12170 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12180 20 69 66 20 28 63 61 63 68 65 64 41 73 73 65 6d   if (cachedAssem
12190 62 6c 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20  blyDirectory != 
121a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
121b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
121c0 63 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  cachedAssemblyDi
121d0 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20  rectory;....    
121e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
121f0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
12200 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
12210 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
12220 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  l;..          }.
12230 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
12240 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
12250 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20  irectory();..   
12260 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
12270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
122b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
122c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
122d0 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
122e0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
122f0 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
12300 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
12310 6e 74 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20  ntly being..    
12320 20 20 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d    /// executed..
12330 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12340 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12350 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12360 20 20 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74    /// The direct
12370 6f 72 79 20 66 6f 72 20 74 68 65 20 61 73 73 65  ory for the asse
12380 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
12390 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f  eing executed -O
123a0 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20  R- null if..    
123b0 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
123c0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
123d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
123e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
123f0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
12400 67 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  g GetAssemblyDir
12410 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
12420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
12430 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
12440 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
12450 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
12460 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
12470 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
12480 64 5f 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  d_GetAssemblyDir
12490 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
124a0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
124b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
124c0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
124d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
124e0 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
124f0 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c  sembly = Assembl
12500 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73  y.GetExecutingAs
12510 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  sembly();....   
12520 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
12530 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
12540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12550 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12560 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
12570 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
12580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
125a0 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
125b0 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
125c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
125d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
125e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
125f0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
12600 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12610 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
12620 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ng fileName = nu
12630 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ll;....#if PLATF
12640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
12650 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
12660 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65      AssemblyName
12670 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20   assemblyName = 
12680 61 73 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65  assembly.GetName
12690 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
126a0 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c       if (assembl
126b0 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
126c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
126d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
126e0 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
126f0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
12700 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12720 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
12730 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
12740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12750 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12760 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12770 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
12780 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12790 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
127a0 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d  me = assemblyNam
127b0 65 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c  e.CodeBase;..#el
127c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
127d0 20 20 69 66 20 28 21 43 68 65 63 6b 41 73 73 65    if (!CheckAsse
127e0 6d 62 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73  mblyCodeBase(ass
127f0 65 6d 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e  embly, ref fileN
12800 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
12810 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
12820 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63  e = assembly.Loc
12830 61 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ation;..#endif..
12840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12850 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
12860 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d  lOrEmpty(fileNam
12870 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
12880 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12890 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
128a0 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
128d0 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
128e0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
128f0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
12900 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
12930 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
12950 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
12960 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
12970 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65  oryName(fileName
12980 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12990 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
129a0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
129b0 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
129c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
129e0 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
129f0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
12a00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
12a20 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
12a30 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12a50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12a60 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
12a70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12a80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12a90 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
12aa0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
12ab0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
12ad0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
12ae0 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72  ctory = director
12af0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
12b00 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12b10 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72 65       return dire
12b20 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
12b30 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
12b40 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
12b50 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20  E_SHARED..      
12b60 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
12b70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
12b80 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
12b90 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
12ba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
12bb0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
12bc0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53  CT_20 && TRACE_S
12bd0 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20  HARED..         
12be0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
12bf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12c00 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
12c10 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
12c20 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
12c30 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
12c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c50 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
12c60 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c80 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61     "Native libra
12c90 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61  ry pre-loader fa
12ca0 69 6c 65 64 20 74 6f 20 67 65 74 20 64 69 72 65  iled to get dire
12cb0 63 74 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  ctory " +..     
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cd0 20 22 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20   "for currently 
12ce0 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
12cf0 6c 79 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  ly: {0}", e)); /
12d00 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
12d10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12d20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
12d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12d50 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
12d60 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
12d70 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
12d80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12d90 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
12da0 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
12db0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12dc0 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d           noAssem
12dd0 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74  blyDirectory = t
12de0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
12df0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
12e00 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
12e10 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
12e20 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
12e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12e80 20 20 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f     #region Optio
12e90 6e 61 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74  nal Native SQLit
12ea0 65 20 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f  e Library Pre-Lo
12eb0 61 64 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20  ading Code..    
12ec0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
12ed0 4f 54 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c  OTE: If we are l
12ee0 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73  ooking for the s
12ef0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44  tandard SQLite D
12f00 4c 4c 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c  LL ("sqlite3.dll
12f10 22 29 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  "),..      //   
12f20 20 20 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20      the interop 
12f30 44 4c 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74  DLL ("SQLite.Int
12f40 65 72 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77  erop.dll"), or w
12f50 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
12f60 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20   the..      //  
12f70 20 20 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63       .NET Compac
12f80 74 20 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20  t Framework, we 
12f90 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74  should include t
12fa0 68 69 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69  his code (only i
12fb0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  f the..      // 
12fc0 20 20 20 20 20 20 66 65 61 74 75 72 65 20 68 61        feature ha
12fd0 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20  s actually been 
12fe0 65 6e 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20  enabled).  This 
12ff0 63 6f 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f  code would be to
13000 74 61 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20  tally..      // 
13010 20 20 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20        redundant 
13020 69 66 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68  if this module h
13030 61 73 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20  as been bundled 
13040 69 6e 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d  into the mixed-m
13050 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ode..      //   
13060 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20      assembly... 
13070 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c       //..#if SQL
13080 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
13090 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
130a0 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
130b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a  ACTFRAMEWORK....
130c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
130d0 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f  // NOTE: Only co
130e0 6d 70 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74  mpile in the nat
130f0 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
13100 6c 6f 61 64 20 63 6f 64 65 20 69 66 20 74 68 65  load code if the
13110 20 66 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20   feature..      
13120 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
13130 6e 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68  n enabled for th
13140 69 73 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20  is build...     
13150 20 2f 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44   //..#if PRELOAD
13160 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
13170 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13180 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13190 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
131a0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
131b0 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  able containing 
131c0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20  the processor.. 
131d0 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65       /// archite
131e0 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72  cture of the cur
131f0 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20  rent process... 
13200 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13210 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
13220 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
13230 6c 79 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53  ly string PROCES
13240 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45  SOR_ARCHITECTURE
13250 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50   =..          "P
13260 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
13270 43 54 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20  CTURE";....     
13280 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
132d0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
132e0 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
132f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13300 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
13310 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20  ive module file 
13320 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
13330 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
13340 72 79 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ry or null...   
13350 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13360 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
13370 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
13380 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
13390 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  uleFileName = nu
133a0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll;....      ///
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133f0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
13400 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13410 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
13420 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20  e module handle 
13430 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
13440 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72  QLite library or
13450 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20   the value..    
13460 20 20 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72    /// IntPtr.Zer
13470 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
13480 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13490 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49  private static I
134a0 6e 74 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74  ntPtr _SQLiteNat
134b0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
134c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
134d0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
134e0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
134f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13530 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
13540 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13550 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74  /// Determines t
13560 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
13570 65 20 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64  e (without any d
13580 69 72 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61  irectory informa
13590 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion)..      ///
135a0 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
135b0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74  SQLite library t
135c0 6f 20 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20  o be pre-loaded 
135d0 62 79 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  by this class...
135e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
135f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13600 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
13610 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69   /// The base fi
13620 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
13630 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
13640 62 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d  brary to be pre-
13650 6c 6f 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20  loaded by..     
13660 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
13670 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73  -OR- null if its
13680 20 76 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65   value cannot be
13690 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
136a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
136b0 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
136c0 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  al static string
136d0 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72   GetNativeLibrar
136e0 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d  yFileNameOnly().
136f0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
13700 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
13710 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74  ameOnly = GetSet
13720 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
13730 20 20 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f            "PreLo
13740 61 64 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79  adSQLite_Library
13750 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e  FileNameOnly", n
13760 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
13770 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f     if (fileNameO
13780 6e 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nly != null)..  
13790 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
137a0 72 6e 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b  rn fileNameOnly;
137b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
137c0 74 75 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b  turn SQLITE_DLL;
137d0 20 2f 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20   /* COMPAT */.. 
137e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
137f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
13840 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13850 20 20 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68        /// Search
13860 65 73 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  es for the nativ
13870 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
13880 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   in the director
13890 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  y containing..  
138a0 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65      /// the asse
138b0 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62  mbly currently b
138c0 65 69 6e 67 20 65 78 65 63 75 74 65 64 20 61 73  eing executed as
138d0 20 77 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73   well as the bas
138e0 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
138f0 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63     /// for the c
13900 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
13910 6f 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20  on domain...    
13920 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13930 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
13940 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72  am name="baseDir
13950 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20  ectory">..      
13960 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
13970 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
13980 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
13990 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68  d to refer to th
139a0 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f  e base..      //
139b0 2f 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  / directory cont
139c0 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76  aining the nativ
139d0 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
139e0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
139f0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
13a00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
13a10 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
13a20 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ure">..      ///
13a30 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
13a40 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69  his parameter wi
13a50 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  ll be modified t
13a60 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e  o refer to the n
13a70 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ame..      /// o
13a80 66 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20  f the immediate 
13a90 64 69 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20  directory (i.e. 
13aa0 74 68 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  the offset from 
13ab0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
13ac0 72 79 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ry)..      /// c
13ad0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61  ontaining the na
13ae0 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
13af0 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary...      /// 
13b00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13b10 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
13b20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
13b30 6f 20 28 73 75 63 63 65 73 73 29 20 69 66 20 74  o (success) if t
13b40 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
13b50 20 6c 69 62 72 61 72 79 20 77 61 73 20 66 6f 75   library was fou
13b60 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a  nd; otherwise,..
13b70 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 28        /// zero (
13b80 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20 20 20  failure)...     
13b90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
13ba0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
13bb0 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61 72 63  tatic bool Searc
13bc0 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
13bd0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
13be0 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
13bf0 72 79 2c 20 20 20 20 20 20 20 20 2f 2a 20 6f 75  ry,        /* ou
13c00 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
13c10 72 65 66 20 73 74 72 69 6e 67 20 70 72 6f 63 65  ref string proce
13c20 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
13c30 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
13c40 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
13c50 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
13c60 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
13c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c80 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65    "PreLoadSQLite
13c90 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69 72 65  _NoSearchForDire
13ca0 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d  ctory", null) !=
13cb0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13cc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13cd0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
13ce0 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a 2f 0d   /* DISABLED */.
13cf0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13d00 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13d10 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13d20 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
13d30 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
13d40 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
13d50 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
13d60 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
13d70 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
13d80 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
13d90 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
13da0 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
13db0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
13dc0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
13dd0 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
13de0 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
13df0 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
13e00 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
13e10 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
13e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13e30 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13e40 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
13e50 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
13e60 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f  Build the list o
13e70 66 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 69  f base directori
13e80 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72  es and processor
13e90 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 20  /platform..     
13ea0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 61       //       na
13eb0 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69 73 74  mes.  These list
13ec0 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  s will be used t
13ed0 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20 74 68  o help locate th
13ee0 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
13ef0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 51 4c      //       SQL
13f00 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
13f10 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61 73 73   (or interop ass
13f20 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d 6c 6f  embly) to pre-lo
13f30 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20  ad into..       
13f40 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73     //       this
13f50 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
13f60 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13f70 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69 72 65     string[] dire
13f80 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20  ctories = {..   
13f90 20 20 20 20 20 20 20 20 20 20 20 47 65 74 41 73             GetAs
13fa0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
13fb0 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ),..#if !PLATFOR
13fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13fd0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
13fe0 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72    AppDomain.Curr
13ff0 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
14000 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64 69 66  rectory,..#endif
14010 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a  ..          };..
14020 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
14030 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f 72  ng[] subDirector
14040 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20  ies = {..       
14050 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65 73         GetProces
14060 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
14070 29 2c 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61  ), GetPlatformNa
14080 6d 65 28 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  me(null)..      
14090 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
140a0 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
140b0 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
140c0 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
140d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
140e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
140f0 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
14100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14110 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
14120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
14130 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
14140 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
14150 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
14160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14180 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
14190 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
141a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141b0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
141c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
141d0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
141e0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
141f0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
14200 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
14210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
14220 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
14230 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
14240 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
14250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14260 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
14270 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14280 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
14290 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
142a0 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
142b0 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
142c0 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
142d0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
142e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
142f0 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
14300 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
14310 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14330 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
14340 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
14350 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
14360 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
14380 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
14390 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
143a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
143b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
143c0 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
143d0 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
143e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143f0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
14400 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
14410 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
14420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14430 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
14440 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14460 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
14470 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
14480 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
14490 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
144a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144b0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
144c0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
144d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144f0 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
14500 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
14510 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
14520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14540 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
14550 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
14560 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
14570 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
14580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14590 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
145a0 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
145b0 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
145c0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145e0 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
145f0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
14600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14610 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
14630 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
14640 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14660 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
14670 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
14680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14690 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146b0 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
146c0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
146d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146e0 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
146f0 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
14700 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
14710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14720 72 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20  return true; /* 
14730 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20  FOUND */..      
14740 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14750 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14760 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14770 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14780 66 61 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f  false; /* NOT FO
14790 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d  UND */..      }.
147a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
147b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
14800 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14810 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
14820 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20  eturns the base 
14830 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
14840 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61   current applica
14850 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
14860 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f  domain...      /
14870 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14880 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
14890 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
148a0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
148b0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
148c0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
148d0 61 69 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ain -OR- null if
148e0 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   it..      /// c
148f0 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
14900 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
14910 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
14920 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
14930 20 73 74 72 69 6e 67 20 47 65 74 42 61 73 65 44   string GetBaseD
14940 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
14950 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
14960 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
14970 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72  NOTE: If the "Pr
14980 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65  eLoadSQLite_Base
14990 44 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72  Directory" envir
149a0 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d  onment variable.
149b0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
149c0 20 20 20 20 69 73 20 73 65 74 2c 20 75 73 65 20      is set, use 
149d0 69 74 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20  it verbatim for 
149e0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
149f0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ry...          /
14a00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
14a10 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
14a20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
14a30 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
14a40 61 73 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a  aseDirectory",..
14a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
14a60 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
14a70 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79 20    if (directory 
14a80 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
14a90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
14aa0 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66  irectory;....#if
14ab0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
14ac0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
14ad0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14ae0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
14af0 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c   the "PreLoadSQL
14b00 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44  ite_UseAssemblyD
14b10 69 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f  irectory" enviro
14b20 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
14b30 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
14b40 6c 65 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e  le is set (to an
14b50 79 74 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74  ything), then at
14b60 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
14b70 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
14b80 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 63       directory c
14b90 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75  ontaining the cu
14ba0 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
14bb0 67 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  g assembly..    
14bc0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
14bd0 69 2e 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61  i.e. System.Data
14be0 2e 53 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64  .SQLite) intsead
14bf0 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   of the applicat
14c00 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ion..          /
14c10 2f 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62  /       domain b
14c20 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
14c30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14c40 20 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53          if (GetS
14c50 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
14c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c70 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55  "PreLoadSQLite_U
14c80 73 65 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  seAssemblyDirect
14c90 6f 72 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  ory", null) != n
14ca0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14cb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14cc0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
14cd0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
14ce0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
14cf0 20 20 20 20 20 20 69 66 20 28 64 69 72 65 63 74        if (direct
14d00 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory != null)..  
14d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
14d30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
14d40 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
14d50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
14d60 45 3a 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61  E: Otherwise, fa
14d70 6c 6c 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20  llback on using 
14d80 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
14d90 72 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ry of the..     
14da0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75       //       cu
14db0 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f  rrent applicatio
14dc0 6e 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20  n domain...     
14dd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14de0 20 20 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d     return AppDom
14df0 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69  ain.CurrentDomai
14e00 6e 2e 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b  n.BaseDirectory;
14e10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
14e20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14e30 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
14e40 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
14e50 20 75 73 69 6e 67 20 74 68 65 20 64 69 72 65 63   using the direc
14e60 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
14e70 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
14e80 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c      the currentl
14e90 79 20 65 78 65 63 75 74 69 6e 67 20 61 73 73 65  y executing asse
14ea0 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  mbly...         
14eb0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72   //..          r
14ec0 65 74 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c  eturn GetAssembl
14ed0 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23  yDirectory();..#
14ee0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a  endif..      }..
14ef0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
14f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
14f50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14f60 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
14f70 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
14f80 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
14f90 6d 65 20 72 65 71 75 69 72 65 73 20 61 20 73 75  me requires a su
14fa0 66 66 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ffix..      /// 
14fb0 61 6e 64 20 61 64 64 73 20 69 74 20 69 66 20 6e  and adds it if n
14fc0 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
14fd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14fe0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
14ff0 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
15000 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
15010 65 20 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d  e original dynam
15020 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
15030 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73  file name to ins
15040 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pect...      ///
15050 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
15060 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
15070 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79        /// The dy
15080 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
15090 72 79 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f  ry file name, po
150a0 73 73 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20  ssibly modified 
150b0 74 6f 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20  to include an.. 
150c0 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69       /// extensi
150d0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
150e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
150f0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
15100 73 74 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46  string FixUpDllF
15110 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
15120 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
15130 61 6d 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ame /* in */..  
15140 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
15150 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
15160 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
15170 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
15180 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
15190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
151a0 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
151b0 2e 49 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20  .IsWindows()).. 
151c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
151d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151e0 20 20 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e    if (!fileName.
151f0 45 6e 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65  EndsWith(DllFile
15200 45 78 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20  Extension,..    
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15220 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70        StringComp
15230 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
15240 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20  noreCase))..    
15250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
15260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15270 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 69         return fi
15280 6c 65 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65  leName + DllFile
15290 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  Extension;..    
152a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
152b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
152c0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
152d0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
152e0 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  n fileName;..   
152f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
15300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15340 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
15350 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15360 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
15370 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
15380 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
15390 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
153a0 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
153b0 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
153c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
153d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
153e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
153f0 54 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  The processor ar
15400 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
15410 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
15420 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  s -OR- null if i
15430 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
15440 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
15450 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
15460 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
15470 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
15480 74 72 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73  tring GetProcess
15490 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28 29  orArchitecture()
154a0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
154b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
154c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
154d0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
154e0 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  e_ProcessorArchi
154f0 74 65 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e  tecture" environ
15500 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
15510 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
15520 65 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74  e is set, use it
15530 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
15540 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
15550 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  sor..          /
15560 2f 20 20 20 20 20 20 20 61 72 63 68 69 74 65 63  /       architec
15570 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ture...         
15580 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   //..          s
15590 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41  tring processorA
155a0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
155b0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
155c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
155d0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f  reLoadSQLite_Pro
155e0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
155f0 72 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  re", null);.... 
15600 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
15610 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
15620 72 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  re != null)..   
15630 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15640 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  n processorArchi
15650 74 65 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20  tecture;....    
15660 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15670 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
15680 69 6c 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20  ill this always 
15690 62 65 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20  be reliable?..  
156a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
156b0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
156c0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
156d0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52  tSettingValue(PR
156e0 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43  OCESSOR_ARCHITEC
156f0 54 55 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  TURE, null);....
15700 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15750 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
15760 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15770 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
15780 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41  .          // HA
15790 43 4b 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  CK: Check for an
157a0 20 22 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69   "impossible" si
157b0 74 75 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  tuation.  If the
157c0 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20   pointer size.. 
157d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
157e0 20 20 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68    is 32-bits, th
157f0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
15800 69 74 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20  itecture cannot 
15810 62 65 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20  be "AMD64"...   
15820 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
15830 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 77 65  In that case, we
15840 20 61 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74   are almost cert
15850 61 69 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20  ainly hitting a 
15860 62 75 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  bug in the..    
15870 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
15880 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
15890 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74  and/or Visual St
158a0 75 64 69 6f 20 74 68 61 74 20 63 61 75 73 65 73  udio that causes
158b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
158c0 2f 2f 20 20 20 20 20 20 20 50 52 4f 43 45 53 53  //       PROCESS
158d0 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20  OR_ARCHITECTURE 
158e0 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
158f0 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20  able to contain 
15900 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  the..          /
15910 2f 20 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61  /       wrong va
15920 6c 75 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63  lue in some circ
15930 75 6d 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61  umstances.  Plea
15940 73 65 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b  se refer to tick
15950 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  et..          //
15960 20 20 20 20 20 20 20 5b 39 61 63 39 38 36 32 36         [9ac98626
15970 31 31 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20  11] for further 
15980 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20  information...  
15990 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
159a0 20 20 20 20 20 20 69 66 20 28 28 49 6e 74 50 74        if ((IntPt
159b0 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
159c0 28 69 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20  (int)) &&..     
159d0 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e           String.
159e0 45 71 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72  Equals(processor
159f0 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 22 41  Architecture, "A
15a00 4d 44 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  MD64",..        
15a10 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
15a20 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
15a30 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
15a40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
15a50 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
15a60 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
15a70 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
15a80 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15a90 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
15aa0 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e  en tracing is en
15ab0 61 62 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20  abled, save the 
15ac0 6f 72 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63  originally detec
15ad0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
15ae0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63     //       proc
15af0 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
15b00 72 65 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69  re before changi
15b10 6e 67 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  ng it...        
15b20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15b30 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
15b40 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
15b50 68 69 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63  hitecture = proc
15b60 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15b70 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
15b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15ba0 20 4e 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74   NOTE: We know t
15bb0 68 61 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79  hat operating sy
15bc0 73 74 65 6d 73 20 74 68 61 74 20 72 65 74 75 72  stems that retur
15bd0 6e 20 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20  n "AMD64" as..  
15be0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15bf0 20 20 20 20 20 74 68 65 20 70 72 6f 63 65 73 73       the process
15c00 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
15c10 61 72 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73  are actually a s
15c20 75 70 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20  uperset of..    
15c30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
15c40 20 20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f     the "x86" pro
15c50 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
15c60 75 72 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ure; therefore, 
15c70 72 65 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20  return..        
15c80 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
15c90 78 38 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f  x86" when the po
15ca0 69 6e 74 65 72 20 73 69 7a 65 20 69 73 20 33 32  inter size is 32
15cb0 2d 62 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  -bits...        
15cc0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15cd0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
15ce0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
15cf0 22 78 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e  "x86";....#if !N
15d00 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
15d10 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
15d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d30 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
15d40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15d50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
15d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15d70 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74   NOTE: Show that
15d80 20 77 65 20 68 69 74 20 61 20 66 61 69 72 6c 79   we hit a fairly
15d90 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69   unusual situati
15da0 6f 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  on (i.e...      
15db0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15dc0 20 20 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22       the "wrong"
15dd0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
15de0 74 65 63 74 75 72 65 20 77 61 73 20 64 65 74 65  tecture was dete
15df0 63 74 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20  cted)...        
15e00 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
15e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
15e30 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
15e40 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
15e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e60 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
15e70 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
15e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e90 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
15ea0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
15eb0 20 64 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69   detected {0}-bi
15ec0 74 20 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20  t pointer " +.. 
15ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ee0 20 20 20 20 20 22 73 69 7a 65 20 77 69 74 68 20       "size with 
15ef0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
15f00 65 63 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20  ecture \"{1}\", 
15f10 75 73 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  using " +..     
15f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f30 20 22 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68   "processor arch
15f40 69 74 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22  itecture \"{2}\"
15f50 20 69 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20   instead...",.. 
15f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f70 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
15f80 20 2a 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c   * 8 /* bits */,
15f90 20 73 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41   savedProcessorA
15fa0 72 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20  rchitecture,..  
15fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15fc0 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
15fd0 68 69 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20  hitecture)); /* 
15fe0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
15ff0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16000 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
16010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16030 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
16040 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16050 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
16060 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
16070 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
16080 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16090 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
160a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
160b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
160c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
160d0 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20  TE: On the .NET 
160e0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
160f0 6b 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  k, attempt to us
16100 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  e the native..  
16110 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
16120 20 20 20 20 20 57 69 6e 33 32 20 41 50 49 20 66       Win32 API f
16130 75 6e 63 74 69 6f 6e 20 28 76 69 61 20 50 2f 49  unction (via P/I
16140 6e 76 6f 6b 65 29 20 74 68 61 74 20 63 61 6e 20  nvoke) that can 
16150 70 72 6f 76 69 64 65 20 75 73 0d 0a 20 20 20 20  provide us..    
16160 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
16170 20 20 20 77 69 74 68 20 74 68 65 20 70 72 6f 63     with the proc
16180 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16190 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
161a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
161b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
161c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
161d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
161e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
161f0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
16200 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 47 65  output of the Ge
16210 74 53 79 73 74 65 6d 49 6e 66 6f 20 66 75 6e 63  tSystemInfo func
16220 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20  tion will be..  
16230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16240 2f 2f 20 20 20 20 20 20 20 70 6c 61 63 65 64 20  //       placed 
16250 68 65 72 65 2e 20 20 4f 6e 6c 79 20 74 68 65 20  here.  Only the 
16260 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
16270 65 63 74 75 72 65 20 66 69 65 6c 64 0d 0a 20 20  ecture field..  
16280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16290 2f 2f 20 20 20 20 20 20 20 69 73 20 75 73 65 64  //       is used
162a0 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
162b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
162c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
162d0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
162e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
162f0 33 32 2e 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  32.SYSTEM_INFO s
16300 79 73 74 65 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20  ystemInfo;....  
16310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16320 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
16330 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
16340 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
16350 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
16360 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16380 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
16390 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
163a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
163b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
163c0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
163d0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69  eNativeMethodsWi
163e0 6e 33 32 2e 47 65 74 53 79 73 74 65 6d 49 6e 66  n32.GetSystemInf
163f0 6f 28 6f 75 74 20 73 79 73 74 65 6d 49 6e 66 6f  o(out systemInfo
16400 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
16410 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16430 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
16440 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
16450 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
16460 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
16470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16480 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16490 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
164a0 63 68 69 74 65 63 74 75 72 65 20 3d 0d 0a 20 20  chitecture =..  
164b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
164c0 20 20 20 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77      systemInfo.w
164d0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
164e0 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
164f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
16500 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
16510 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
16520 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16530 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
16540 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
16550 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16560 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
16570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16580 2f 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69  / NOTE: Upon fai
16590 6c 75 72 65 2c 20 72 65 74 75 72 6e 20 61 6e 20  lure, return an 
165a0 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20 54  empty string.  T
165b0 68 69 73 20 77 69 6c 6c 20 70 72 65 76 65 6e 74  his will prevent
165c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
165d0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 61 6c  //       the cal
165e0 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66 72 6f 6d  ling method from
165f0 20 63 6f 6e 73 69 64 65 72 69 6e 67 20 74 68 69   considering thi
16600 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 61 0d  s method call a.
16610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16620 2f 20 20 20 20 20 20 20 22 66 61 69 6c 75 72 65  /       "failure
16630 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "...            
16640 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16650 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
16660 68 69 74 65 63 74 75 72 65 20 3d 20 53 74 72 69  hitecture = Stri
16670 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
16680 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
16690 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
166a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
166f0 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72 41  eturn processorA
16700 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20 20  rchitecture;..  
16710 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16760 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
16770 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16780 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 74       /// Given t
16790 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
167a0 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75 72  hitecture, retur
167b0 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ns the name of t
167c0 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20  he platform...  
167d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
167e0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
167f0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
16800 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16810 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
16820 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
16830 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20 74  itecture to be t
16840 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20 70  ranslated to a p
16850 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
16860 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16870 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
16880 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
16890 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e  / The platform n
168a0 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  ame for the spec
168b0 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20  ified processor 
168c0 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f 52  architecture -OR
168d0 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  - null..      //
168e0 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  / if it cannot b
168f0 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
16900 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
16910 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
16920 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
16930 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65   GetPlatformName
16940 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
16950 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
16960 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e 20  hitecture /* in 
16970 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
16980 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
16990 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
169a0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d  rArchitecture ==
169b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
169c0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
169d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65  rchitecture = Ge
169e0 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  tProcessorArchit
169f0 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20  ecture();....   
16a00 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
16a10 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
16a20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16a30 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
16a40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
16a50 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
16a60 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
16a70 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
16a80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16a90 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
16aa0 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
16ab0 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  forms == null)..
16ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16ad0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
16ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16af0 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e  string platformN
16b00 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
16b10 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
16b20 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
16b30 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74 56  latforms.TryGetV
16b40 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
16b50 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
16b60 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
16b70 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72 6d  re, out platform
16b80 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
16b90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16ba0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16bb0 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d  n platformName;.
16bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
16bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
16be0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
16bf0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
16c00 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
16c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
16c60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c70 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
16c80 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65 20  load the native 
16c90 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62  SQLite library b
16ca0 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63  ased on the spec
16cb0 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ified..      ///
16cc0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 70   directory and p
16cd0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
16ce0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  cture...      //
16cf0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16d00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16d10 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74 6f  ame="baseDirecto
16d20 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ry">..      /// 
16d30 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  The base directo
16d40 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c 20  ry to use, null 
16d50 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68 65  for default (the
16d60 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
16d70 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  of..      /// th
16d80 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63  e current applic
16d90 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20 20  ation domain).  
16da0 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 73  This directory s
16db0 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68  hould contain th
16dc0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  e..      /// pro
16dd0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
16de0 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75 62  ure specific sub
16df0 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a 20  -directories... 
16e00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16e10 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
16e20 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65 73  ram name="proces
16e30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22  sorArchitecture"
16e40 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
16e50 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63 65   requested proce
16e60 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
16e70 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61  e, null for defa
16e80 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20 20  ult (the..      
16e90 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72  /// processor ar
16ea0 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
16eb0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
16ec0 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65 72  s).  This caller
16ed0 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
16ee0 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79 73  // almost always
16ef0 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66 6f   specify null fo
16f00 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  r this parameter
16f10 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
16f20 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
16f30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
16f40 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
16f50 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
16f60 54 68 65 20 63 61 6e 64 69 64 61 74 65 20 6e 61  The candidate na
16f70 74 69 76 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65  tive module file
16f80 20 6e 61 6d 65 20 74 6f 20 6c 6f 61 64 20 77 69   name to load wi
16f90 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 68 65 72  ll be stored her
16fa0 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66  e,..      /// if
16fb0 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
16fc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16fd0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
16fe0 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 4d 6f  m name="nativeMo
16ff0 64 75 6c 65 48 61 6e 64 6c 65 22 3e 0d 0a 20 20  duleHandle">..  
17000 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
17010 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
17020 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
17030 4c 6f 61 64 4c 69 62 72 61 72 79 20 77 69 6c 6c  LoadLibrary will
17040 20 62 65 20 73 74 6f 72 65 64 0d 0a 20 20 20 20   be stored..    
17050 20 20 2f 2f 2f 20 68 65 72 65 2c 20 69 66 20 6e    /// here, if n
17060 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73 20  ecessary.  This 
17070 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 49 6e  value will be In
17080 74 50 74 72 2e 5a 65 72 6f 20 69 66 20 74 68 65  tPtr.Zero if the
17090 20 63 61 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20   call to..      
170a0 2f 2f 2f 20 4c 6f 61 64 4c 69 62 72 61 72 79 20  /// LoadLibrary 
170b0 66 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  fails...      //
170c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
170d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
170e0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
170f0 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
17100 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 6c 6f 61  e module was loa
17110 64 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ded successfully
17120 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
17130 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20      /// zero... 
17140 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
17150 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
17160 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  te static bool P
17170 72 65 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28  reLoadSQLiteDll(
17180 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
17190 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ng baseDirectory
171a0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
171b0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
171c0 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 6f   string processo
171d0 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 20  rArchitecture,  
171e0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
171f0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
17200 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c   nativeModuleFil
17210 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f  eName, /* out */
17220 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
17230 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f 64  IntPtr nativeMod
17240 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a 20  uleHandle    /* 
17250 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
17260 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
17270 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17280 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
17290 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
172a0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
172b0 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 20  s null, use the 
172c0 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 20  default..       
172d0 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e 65     //       (i.e
172e0 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74  . attempt to aut
172f0 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65 63  omatically detec
17300 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20 20  t it)...        
17310 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17320 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
17330 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
17340 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
17350 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61 73  rectory = GetBas
17360 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d  eDirectory();...
17370 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
17380 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
17390 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20 74  : If we failed t
173a0 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73 65  o query the base
173b0 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f 70   directory, stop
173c0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
173d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
173e0 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72 79  f (baseDirectory
173f0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
17400 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17410 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
17420 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17430 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65 72    // NOTE: Deter
17440 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66 69  mine the base fi
17450 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
17460 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
17470 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
17480 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68    //       If th
17490 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20  is is not known 
174a0 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20 77  by this class, w
174b0 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75  e cannot continu
174c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e...          //
174d0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
174e0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
174f0 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72 61  = GetNativeLibra
17500 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29  ryFileNameOnly()
17510 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
17520 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  f (fileNameOnly 
17530 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
17540 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
17550 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
17560 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17570 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
17580 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
17590 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69 6e  ibrary exists in
175a0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
175b0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ory..          /
175c0 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20  /       itself, 
175d0 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stop now...     
175e0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
175f0 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
17600 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
17610 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
17620 6e 65 50 61 74 68 28 62 61 73 65 44 69 72 65 63  nePath(baseDirec
17630 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
17640 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c       fileNameOnl
17650 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
17660 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
17670 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
17680 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
17690 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
176a0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
176b0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
176c0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
176d0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
176e0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
176f0 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
17700 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
17710 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
17720 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
17730 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
17740 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
17750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
17760 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
17770 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
17780 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
17790 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
177a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
177b0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
177c0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
177d0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
177e0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
177f0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
17800 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
17810 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
17820 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
17830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17840 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
17850 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17860 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
17870 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
17880 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
17890 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
178a0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
178b0 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
178c0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
178d0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
178e0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
178f0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17900 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
17910 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
17920 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
17930 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
17940 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
17950 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
17960 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
17970 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
17980 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
17990 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
179a0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
179b0 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
179c0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
179d0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
179e0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
179f0 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
17a00 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
17a10 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
17a20 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
17a30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17a40 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
17a50 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
17a60 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
17a70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
17a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17a90 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
17aa0 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
17ab0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
17ac0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
17ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
17ae0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
17af0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
17b00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17b10 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
17b20 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
17b30 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
17b40 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
17b50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
17b60 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17b70 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
17b80 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
17b90 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
17ba0 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
17bb0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
17bc0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17bd0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
17be0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
17bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17c00 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
17c10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17c20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17c30 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
17c40 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
17c50 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
17c60 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
17c70 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
17c80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
17c90 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
17ca0 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
17cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
17cd0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
17ce0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
17cf0 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
17d00 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
17d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17d20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
17d30 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
17d40 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
17d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17d60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
17d70 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
17d80 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
17d90 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
17da0 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
17db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17dd0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
17de0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
17df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
17e00 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
17e10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17e20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
17e30 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
17e40 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
17e50 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
17e60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
17e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17e80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17e90 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
17ea0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
17eb0 54 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79  TE: Show exactly
17ec0 20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72   where we are tr
17ed0 79 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65  ying to load the
17ee0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
17ef0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
17f00 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
17f10 72 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20  ry from...      
17f20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
17f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f40 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
17f50 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
17f60 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
17f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f80 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
17f90 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
17fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17fb0 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
17fc0 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
17fd0 65 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  er is trying to 
17fe0 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
17ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18000 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
18010 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e  ibrary \"{0}\"..
18020 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20  .", fileName)); 
18030 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
18040 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
18050 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
18060 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
18070 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18080 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
18090 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
180a0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
180b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
180c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
180d0 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70   // NOTE: Attemp
180e0 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  t to load the na
180f0 74 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54  tive library.  T
18100 68 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d  his will either.
18110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
18120 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  /       return a
18130 20 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f   valid native mo
18140 64 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74  dule handle, ret
18150 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  urn IntPtr.Zero,
18160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18170 2f 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f  //       or thro
18180 77 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20  w an exception. 
18190 20 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74   This must use t
181a0 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  he appropriate..
181b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
181c0 20 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20         P/Invoke 
181d0 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63  method for the c
181e0 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67  urrent operating
181f0 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20   system...      
18200 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18210 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
18220 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d  ModuleFileName =
18230 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20   fileName;..    
18240 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
18250 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e  ModuleHandle = N
18260 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70  ativeLibraryHelp
18270 65 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  er.LoadLibrary(f
18280 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
18290 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
182a0 6e 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48  n (nativeModuleH
182b0 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
182c0 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
182d0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
182e0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
182f0 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20  E_PRELOAD..     
18300 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
18310 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
18320 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
18330 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
18340 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
18350 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
18360 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
18370 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20  PRELOAD..       
18380 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
18390 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
183a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
183b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
183c0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69       // NOTE: Fi
183d0 72 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61  rst, grab the la
183e0 73 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e  st Win32 error n
183f0 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
18400 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18420 69 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20  int lastError = 
18430 4d 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57  Marshal.GetLastW
18440 69 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20  in32Error(); /* 
18450 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
18460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18480 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
18490 77 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65  w where we faile
184a0 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61  d to load the na
184b0 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20  tive SQLite..   
184c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
184d0 2f 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20  /       library 
184e0 66 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20  from along with 
184f0 74 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20  the Win32 error 
18500 63 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  code and..      
18510 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
18520 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69       exception i
18530 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20  nformation...   
18540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18550 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18560 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
18570 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
18580 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
18590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
185a0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
185b0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
185c0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
185d0 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69             "Nati
185e0 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c  ve library pre-l
185f0 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
18600 6c 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d  load native " +.
18610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18620 20 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c         "SQLite l
18630 69 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28  ibrary \"{0}\" (
18640 67 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b  getLastError = {
18650 31 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20  1}): {2}",..    
18660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18670 20 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74    fileName, last
18680 45 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74  Error, e)); /* t
18690 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
186a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
186b0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
186c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
186d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186e0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
186f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18700 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
18710 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18720 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
18730 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
18740 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  if..#endif..    
18750 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
18760 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
187b0 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
187c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
187d0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
187e0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
187f0 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
18800 77 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65  work, the native
18810 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
18820 79 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20  y must..    //  
18830 20 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63       be used bec
18840 61 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73  ause it provides
18850 20 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f   several workaro
18860 75 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d  unds to .NET Com
18870 70 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20  pact..    //    
18880 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d     Framework lim
18890 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61  itations importa
188a0 6e 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70  nt for proper op
188b0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  eration of the c
188c0 6f 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ore..    //     
188d0 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51    System.Data.SQ
188e0 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69  Lite functionali
188f0 74 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61  ty (e.g. being a
18900 62 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20  ble to bind..   
18910 20 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65   //       parame
18920 74 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20  ters and handle 
18930 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66  column values of
18940 20 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64   types Int64 and
18950 20 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f   Double)...    /
18960 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
18970 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
18980 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
18990 65 2e 49 6e 74 65 72 6f 70 2e 31 30 39 2e 64 6c  e.Interop.109.dl
189a0 6c 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54  l";..#elif SQLIT
189b0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
189c0 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
189d0 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74   Otherwise, if t
189e0 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69  he standard SQLi
189f0 74 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e  te library is en
18a00 61 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a  abled, use it...
18a10 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
18a20 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
18a30 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
18a40 73 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66  sqlite3";..#elif
18a50 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c   USE_INTEROP_DLL
18a60 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
18a70 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
18a80 2c 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  , if the native 
18a90 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  SQLite interop a
18aa0 73 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c  ssembly is enabl
18ab0 65 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  ed,..    //     
18ac0 20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f    use it...    /
18ad0 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  /..    internal 
18ae0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c  const string SQL
18af0 49 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74  ITE_DLL = "SQLit
18b00 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d  e.Interop.dll";.
18b10 0a 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a  .#else..    //..
18b20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e      // NOTE: Fin
18b30 61 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61  ally, assume tha
18b40 74 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65  t the mixed-mode
18b50 20 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69   assembly is bei
18b60 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  ng used...    //
18b70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
18b80 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
18b90 54 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d  TE_DLL = "System
18ba0 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
18bb0 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  ";..#endif....  
18bc0 20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f    // This sectio
18bd0 6e 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63  n uses interop c
18be0 61 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66  alls that also f
18bf0 65 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68  etch text length
18c00 20 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e   to optimize con
18c10 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  version...    //
18c20 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   When using the 
18c30 73 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65  standard dll, we
18c40 20 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65   can replace the
18c50 73 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f  se calls with no
18c60 72 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c  rmal sqlite call
18c70 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f  s and..    // do
18c80 20 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e   unoptimized con
18c90 76 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64  versions instead
18ca0 20 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20   afterwards..   
18cb0 20 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70   #region interop
18cc0 20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74   added textlengt
18cd0 68 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21  h calls....#if !
18ce0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
18cf0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18d00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18d10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18d20 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18d30 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  r sqlite3_bind_p
18d40 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e  arameter_name_in
18d50 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
18d60 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
18d70 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
18d80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
18d90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
18da0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
18db0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
18dc0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
18dd0 61 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72  abase_name_inter
18de0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
18df0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
18e00 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
18e10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
18e20 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
18e30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
18e40 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
18e50 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61  e3_column_databa
18e60 73 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  se_name16_intero
18e70 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
18e80 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
18e90 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
18ea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
18eb0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
18ec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
18ed0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
18ee0 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70  3_column_decltyp
18ef0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
18f00 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18f10 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
18f20 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18f30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18f40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18f50 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18f60 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
18f70 5f 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65  _decltype16_inte
18f80 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
18f90 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
18fa0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
18fb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
18fc0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
18fd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
18fe0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
18ff0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f  te3_column_name_
19000 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
19010 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
19020 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
19030 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19040 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19050 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19060 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
19070 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
19080 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e  ame16_interop(In
19090 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
190a0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
190b0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
190c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
190d0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
190e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
190f0 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19100 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65  lumn_origin_name
19110 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
19120 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
19130 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
19140 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19150 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19160 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19170 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
19180 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
19190 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e  origin_name16_in
191a0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
191b0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
191c0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
191d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
191e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
191f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19200 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19210 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
19220 6c 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28  le_name_interop(
19230 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19240 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
19250 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
19260 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19270 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19280 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19290 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
192a0 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d  column_table_nam
192b0 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
192c0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
192d0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
192e0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
192f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19300 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19310 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19320 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
19330 6d 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  mn_text_interop(
19340 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
19350 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
19360 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
19370 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19380 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19390 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
193a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
193b0 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e  column_text16_in
193c0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
193d0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
193e0 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
193f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19400 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19410 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19420 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19430 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74  lite3_errmsg_int
19440 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
19450 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
19460 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19470 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19480 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19490 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
194a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
194b0 5f 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70  _prepare_interop
194c0 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50  (IntPtr db, IntP
194d0 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79  tr pSql, int nBy
194e0 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tes, ref IntPtr 
194f0 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72  stmt, ref IntPtr
19500 20 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20   ptrRemain, ref 
19510 69 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d  int nRemain);...
19520 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19530 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19540 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19550 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19560 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19570 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
19580 74 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49  tadata_interop(I
19590 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
195a0 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
195b0 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
195c0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
195d0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
195e0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
195f0 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
19600 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
19610 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
19620 20 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65   int autoInc, re
19630 66 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66  f int dtLen, ref
19640 20 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a   int csLen);....
19650 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19660 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19670 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19680 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
19690 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78  qlite3_value_tex
196a0 74 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  t_interop(IntPtr
196b0 20 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29   p, ref int len)
196c0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
196d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
196e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
196f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19700 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
19710 65 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70  e_text16_interop
19720 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69  (IntPtr p, ref i
19730 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
19740 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19750 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
19760 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19770 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
19780 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
19790 72 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  rop(IntPtr p);..
197a0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f  ..#if INTEROP_LO
197b0 47 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  G..    [DllImpor
197c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
197d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
197e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
197f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19800 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e  e3_config_log_in
19810 74 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66  terop();..#endif
19820 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51  ..#endif..// !SQ
19830 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
19840 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
19850 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
19860 66 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78  functions add ex
19870 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61  isting functiona
19880 6c 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53  lity on top of S
19890 51 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72  QLite and requir
198a0 65 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72  e a little effor
198b0 74 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74  t to..    // get
198c0 20 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73   working when us
198d0 69 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64  ing the standard
198e0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
198f0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e  ..    #region in
19900 74 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63  terop added func
19910 74 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66  tionality....#if
19920 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
19930 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  D....    [DllImp
19940 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19950 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19960 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19970 50 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76  Ptr interop_libv
19980 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  ersion();....   
19990 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
199a0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
199b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
199c0 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65  tern IntPtr inte
199d0 72 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d  rop_sourceid();.
199e0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
199f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19a00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19a10 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69  tic extern int i
19a20 6e 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70  nterop_compileop
19a30 74 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72  tion_used(IntPtr
19a40 20 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   zOptName);.... 
19a50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19a60 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19a70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19a80 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e  extern IntPtr in
19a90 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
19aa0 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
19ab0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19ac0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19ad0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19ae0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
19af0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19b00 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
19b10 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a  (IntPtr db);....
19b20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19b30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19b40 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19b50 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
19b60 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
19b70 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f  create_function_
19b80 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64  interop(IntPtr d
19b90 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d  b, byte[] strNam
19ba0 65 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e  e, int nArgs, in
19bb0 74 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20  t nType, IntPtr 
19bc0 70 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61  pvUser, SQLiteCa
19bd0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c  llback func, SQL
19be0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65  iteCallback fste
19bf0 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61  p, SQLiteFinalCa
19c00 6c 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69  llback ffinal, i
19c10 6e 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b  nt needCollSeq);
19c20 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
19c30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
19c40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
19c50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
19c60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
19c70 74 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74  te3_finalize_int
19c80 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19c90 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19ca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19cb0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19cc0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19cd0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19ce0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e  lite3_backup_fin
19cf0 69 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ish_interop(IntP
19d00 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20  tr backup);.... 
19d10 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19d20 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19d30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19d40 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
19d50 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
19d60 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f  lob_close_intero
19d70 70 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d  p(IntPtr blob);.
19d80 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19d90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19da0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19db0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
19dc0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
19dd0 65 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28  e3_open_interop(
19de0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
19df0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
19e00 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
19e10 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
19e20 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
19e30 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
19e40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19e50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19e60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19e70 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19e80 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19e90 5f 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28  _open16_interop(
19ea0 62 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e  byte[] utf8Filen
19eb0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e  ame, byte[] vfsN
19ec0 61 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46  ame, SQLiteOpenF
19ed0 6c 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20  lagsEnum flags, 
19ee0 69 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65  int extFuncs, re
19ef0 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  f IntPtr db);...
19f00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
19f10 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
19f20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
19f30 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
19f40 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
19f50 5f 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49  _reset_interop(I
19f60 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
19f70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
19f80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
19f90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
19fa0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
19fb0 74 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65  te3_changes_inte
19fc0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  rop(IntPtr db);.
19fd0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
19fe0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
19ff0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1a000 0d 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61  ..    // The sta
1a010 6e 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65  ndard api call e
1a020 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68  quivalents of th
1a030 65 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20  e above interop 
1a040 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
1a050 6f 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73  on standard vers
1a060 69 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20  ions of interop 
1a070 66 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66  functions....#if
1a080 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
1a090 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a0a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a0b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a0c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a0d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a0e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a0f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a100 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a110 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a120 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a130 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a140 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a150 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  Code sqlite3_clo
1a160 73 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  se(IntPtr db);..
1a170 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c  ..#if !INTEROP_L
1a180 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66  EGACY_CLOSE..#if
1a190 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1a1a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1a1b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a1c0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1a1d0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1a1e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1a1f0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1a200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a210 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1a220 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1a230 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1a240 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1a250 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49  lite3_close_v2(I
1a260 6e 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e  ntPtr db); /* 3.
1a270 37 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66  7.14+ */..#endif
1a280 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1a290 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1a2a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1a2b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1a2c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1a2d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1a2e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1a2f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1a300 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1a310 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1a320 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1a330 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1a340 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65  Code sqlite3_cre
1a350 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74  ate_function(Int
1a360 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
1a370 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67  trName, int nArg
1a380 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e  s, int nType, In
1a390 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c  tPtr pvUser, SQL
1a3a0 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
1a3b0 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
1a3c0 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69   fstep, SQLiteFi
1a3d0 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e  nalCallback ffin
1a3e0 61 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  al);....#if !PLA
1a3f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1a400 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1a410 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1a420 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1a430 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1a440 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1a450 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1a460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a470 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1a480 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1a490 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1a4a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1a4b0 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72  _finalize(IntPtr
1a4c0 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1a4d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a4e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a4f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a500 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a510 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a520 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a530 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a550 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a560 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a570 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a580 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a590 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
1a5a0 68 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  h(IntPtr backup)
1a5b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a5c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a5d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a5e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a5f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a600 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a610 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a620 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a630 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a640 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a650 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a660 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1a670 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65  rCode sqlite3_re
1a680 73 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29  set(IntPtr stmt)
1a690 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a6a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a6b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a6c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a6d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a6e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a6f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a700 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a710 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a720 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a730 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a740 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1a750 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
1a760 74 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ter_name(IntPtr 
1a770 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1a780 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1a790 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1a7a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1a7b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1a7c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a7d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1a7e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1a7f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1a800 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1a810 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1a820 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1a830 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1a840 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1a850 62 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72  base_name(IntPtr
1a860 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1a870 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1a880 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1a890 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1a8a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1a8b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1a8c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1a8d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1a8e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1a8f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1a900 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1a910 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1a920 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1a930 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74  lite3_column_dat
1a940 61 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74  abase_name16(Int
1a950 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1a960 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1a970 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1a980 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1a990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1a9a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1a9b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1a9c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1a9d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1a9e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a9f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1aa00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1aa10 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1aa20 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1aa30 64 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20  decltype(IntPtr 
1aa40 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1aa50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1aa60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1aa70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1aa80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1aa90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1aaa0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1aab0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1aac0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1aad0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1aae0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aaf0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ab00 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1ab10 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c  ite3_column_decl
1ab20 74 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74  type16(IntPtr st
1ab30 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1ab40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ab50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ab60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ab70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ab80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ab90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1aba0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1abb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1abc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1abd0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1abe0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1abf0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ac00 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49  e3_column_name(I
1ac10 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1ac20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1ac30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ac40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ac50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ac60 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ac70 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ac80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ac90 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1aca0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1acb0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1acc0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1acd0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1ace0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1acf0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
1ad00 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1ad10 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ad20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ad30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ad40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1ad50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ad60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ad70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ad80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1ad90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ada0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1adb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1adc0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1add0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67  ite3_column_orig
1ade0 69 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  in_name(IntPtr s
1adf0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ae00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ae10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ae20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ae30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ae40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ae50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ae60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ae70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ae80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ae90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1aea0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1aeb0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1aec0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1aed0 6e 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20  n_name16(IntPtr 
1aee0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1aef0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1af00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1af10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1af20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1af30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1af40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1af50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1af60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1af70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1af80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1af90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1afa0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1afb0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
1afc0 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  e_name(IntPtr st
1afd0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1afe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1aff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1b0a0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f  e3_column_table_
1b0b0 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74  name16(IntPtr st
1b0c0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1b0d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1b0e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1b0f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1b100 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1b110 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1b120 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1b130 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1b140 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1b150 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1b160 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1b170 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1b180 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1b190 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49  e3_column_text(I
1b1a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1b1b0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1b1c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b1d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b1e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b1f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b200 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b210 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b220 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b230 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b240 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b250 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b260 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b270 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1b280 6e 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20  n_text16(IntPtr 
1b290 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1b2a0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b2b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b2c0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b2d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b2e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b2f0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b300 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b310 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b320 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b330 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b340 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b350 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1b360 69 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50  ite3_errmsg(IntP
1b370 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
1b380 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b390 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b3a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b3b0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b3c0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b3d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b3e0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b3f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b400 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b410 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b420 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1b430 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1b440 74 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50  te3_prepare(IntP
1b450 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53  tr db, IntPtr pS
1b460 71 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20  ql, int nBytes, 
1b470 72 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c  ref IntPtr stmt,
1b480 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52   ref IntPtr ptrR
1b490 65 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55  emain);....#if U
1b4a0 53 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23  SE_PREPARE_V2..#
1b4b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1b4c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1b4d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b4e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1b4f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1b500 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1b510 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1b520 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b530 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1b540 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1b550 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1b560 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b570 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
1b580 76 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  v2(IntPtr db, In
1b590 74 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e  tPtr pSql, int n
1b5a0 42 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74  Bytes, ref IntPt
1b5b0 72 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50  r stmt, ref IntP
1b5c0 74 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a  tr ptrRemain);..
1b5d0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1b5e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1b5f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1b600 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b610 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1b620 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1b630 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1b640 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1b650 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b660 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1b670 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1b680 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1b690 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1b6a0 65 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f  e3_table_column_
1b6b0 6d 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20  metadata(IntPtr 
1b6c0 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
1b6d0 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d  e, byte[] tblNam
1b6e0 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d  e, byte[] colNam
1b6f0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  e, ref IntPtr pt
1b700 72 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49  rDataType, ref I
1b710 6e 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71  ntPtr ptrCollSeq
1b720 2c 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c  , ref int notNul
1b730 6c 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61  l, ref int prima
1b740 72 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61  ryKey, ref int a
1b750 75 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  utoInc);....#if 
1b760 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1b770 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1b780 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b790 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1b7a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1b7b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1b7c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1b7d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1b7e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1b7f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1b800 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1b810 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  Ptr sqlite3_valu
1b820 65 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29  e_text(IntPtr p)
1b830 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1b840 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b850 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b870 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b880 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b890 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b8a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b8b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b8c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b8d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b8e0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1b8f0 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31  ite3_value_text1
1b900 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
1b910 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53  #endif..    // S
1b920 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1b930 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1b940 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65  ....    // These
1b950 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63   functions are c
1b960 75 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e  ustom and have n
1b970 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
1b980 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65  ndard library me
1b990 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c  thod...    // Al
1b9a0 6c 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e  l of them are "n
1b9b0 69 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e  ice to haves" an
1b9c0 64 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c  d not necessaril
1b9d0 79 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73  y "need to haves
1b9e0 22 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  "...    #region 
1b9f0 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74  no equivalent st
1ba00 61 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d  andard method...
1ba10 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
1ba20 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
1ba30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ba40 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1ba50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ba60 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1ba70 63 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f  context_collseq_
1ba80 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63  interop(IntPtr c
1ba90 6f 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20  ontext, ref int 
1baa0 74 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e  type, ref int en
1bab0 63 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  c, ref int len);
1bac0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1bad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bae0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1baf0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1bb00 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f  sqlite3_context_
1bb10 63 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65  collcompare_inte
1bb20 72 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  rop(IntPtr conte
1bb30 78 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69  xt, byte[] p1, i
1bb40 6e 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d  nt p1len, byte[]
1bb50 20 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b   p2, int p2len);
1bb60 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1bb70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bb80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1bb90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1bba0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1bbb0 74 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64  te3_cursor_rowid
1bbc0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1bbd0 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
1bbe0 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64  , ref long rowid
1bbf0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1bc00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1bc10 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1bc20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1bc30 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1bc40 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75  lite3_index_colu
1bc50 6d 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28  mn_info_interop(
1bc60 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1bc70 5d 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b  ] catalog, byte[
1bc80 5d 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74  ] IndexName, byt
1bc90 65 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20  e[] ColumnName, 
1bca0 72 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65  ref int sortOrde
1bcb0 72 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72  r, ref int onErr
1bcc0 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43  or, ref IntPtr C
1bcd0 6f 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e  ollation, ref in
1bce0 74 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20  t colllen);.... 
1bcf0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bd00 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1bd10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1bd20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1bd30 65 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f  e3_table_cursor_
1bd40 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1bd50 74 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74  tmt, int db, int
1bd60 20 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b   tableRootPage);
1bd70 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21  ....#endif..// !
1bd80 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1bd90 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ...    #endregio
1bda0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e  n....    // Stan
1bdb0 64 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67  dard API calls g
1bdc0 6c 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72  lobal across ver
1bdd0 73 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72  sions.  There ar
1bde0 65 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65  e a few instance
1bdf0 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c  s of interop cal
1be00 6c 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74  ls..    // scatt
1be10 65 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75  ered in here, bu
1be20 74 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20  t they are only 
1be30 61 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54  active when PLAT
1be40 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1be50 45 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65  EWORK is declare
1be60 64 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  d...    #region 
1be70 73 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20  standard sqlite 
1be80 61 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66  api calls....#if
1be90 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1bea0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1beb0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1bec0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1bed0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1bee0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1bef0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1bf00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bf10 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1bf20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1bf30 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1bf40 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62  tPtr sqlite3_lib
1bf50 76 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69  version();....#i
1bf60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1bf70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1bf80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bf90 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1bfa0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1bfb0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1bfc0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1bfd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1bfe0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1bff0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1c000 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
1c010 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  nt sqlite3_libve
1c020 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d  rsion_number();.
1c030 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1c040 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1c050 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1c060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1c070 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1c080 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1c090 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1c0a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1c0b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c0c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1c0d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c0e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1c0f0 65 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  e3_sourceid();..
1c100 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1c110 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1c120 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c130 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1c140 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1c150 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c160 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1c170 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1c180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c190 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1c1a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c1b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
1c1c0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
1c1d0 64 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d  d(IntPtr zOptNam
1c1e0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
1c1f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1c200 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1c210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c220 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1c230 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1c240 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1c250 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1c260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c270 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1c280 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c290 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c2a0 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
1c2b0 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b  tion_get(int N);
1c2c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1c2d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c2e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1c2f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1c300 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1c310 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1c320 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1c330 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1c340 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c350 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1c360 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c370 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1c380 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61  Code sqlite3_ena
1c390 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
1c3a0 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65  (..        int e
1c3b0 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  nable);....#if !
1c3c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c3d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c3e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c3f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c400 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c410 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c420 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c430 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c440 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c450 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c460 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c470 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c480 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f  te3_enable_load_
1c490 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20  extension(..    
1c4a0 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69      IntPtr db, i
1c4b0 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
1c4c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1c4d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1c4e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c4f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1c500 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1c510 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1c520 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1c530 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c540 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1c550 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1c560 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c570 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c580 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
1c590 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ension(..       
1c5a0 20 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65   IntPtr db, byte
1c5b0 5b 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74  [] fileName, byt
1c5c0 65 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65  e[] procName, re
1c5d0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29  f IntPtr pError)
1c5e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c5f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c600 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c610 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c630 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c640 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c650 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c660 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c670 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c680 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c690 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c6a0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76  rCode sqlite3_ov
1c6b0 65 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28  erload_function(
1c6c0 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1c6d0 72 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  r zName, int nAr
1c6e0 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44  gs);....#if WIND
1c6f0 4f 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  OWS..#if !PLATFO
1c700 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c710 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c720 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c730 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c740 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c750 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
1c760 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
1c770 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
1c780 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c790 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
1c7a0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1c7b0 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
1c7c0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1c7d0 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74  NOTE: The "sqlit
1c7e0 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
1c7f0 65 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63  ectory" SQLite c
1c800 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63  ore library func
1c810 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20  tion is..    // 
1c820 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f        only suppo
1c830 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e  rted on Windows.
1c840 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e  ..    //..    in
1c850 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c860 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1c870 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e  Code sqlite3_win
1c880 33 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79  32_set_directory
1c890 28 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69  (uint type, stri
1c8a0 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  ng value);....#i
1c8b0 66 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45  f !DEBUG // NOTE
1c8c0 3a 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e  : Should be "WIN
1c8d0 33 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45  32HEAP && !MEMDE
1c8e0 42 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46  BUG"..#if !PLATF
1c8f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1c900 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1c910 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1c920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1c930 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1c940 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1c950 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c960 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c970 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1c980 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
1c990 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69   The "sqlite3_wi
1c9a0 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20  n32_reset_heap" 
1c9b0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1c9c0 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d  ary function is.
1c9d0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
1c9e0 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20  ly supported on 
1c9f0 57 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65  Windows when the
1ca00 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c   Win32 native al
1ca10 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20  locator is in.. 
1ca20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20     //       use 
1ca30 28 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74  (i.e. by default
1ca40 2c 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62  , in "Release" b
1ca50 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1ca60 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20  Data.SQLite..   
1ca70 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e   //       only).
1ca80 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e    By default, in
1ca90 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20   "Debug" builds 
1caa0 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
1cab0 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20  QLite, the..    
1cac0 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55  //       MEMDEBU
1cad0 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75  G allocator is u
1cae0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20  sed...    //..  
1caf0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1cb00 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1cb10 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1cb20 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61  _win32_reset_hea
1cb30 70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  p();....#if !PLA
1cb40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1cb50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1cb60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1cb70 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1cb80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1cb90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1cba0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1cbb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cbc0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1cbd0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
1cbe0 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f  E: The "sqlite3_
1cbf0 77 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65  win32_compact_he
1cc00 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ap" SQLite core 
1cc10 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e  library function
1cc20 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   is..    //     
1cc30 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64    only supported
1cc40 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e   on Windows when
1cc50 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
1cc60 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69  e allocator is i
1cc70 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  n..    //       
1cc80 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66  use (i.e. by def
1cc90 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73  ault, in "Releas
1cca0 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  e" builds of Sys
1ccb0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
1ccc0 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e  .    //       on
1ccd0 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ly).  By default
1cce0 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69  , in "Debug" bui
1ccf0 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61  lds of System.Da
1cd00 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a  ta.SQLite, the..
1cd10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d      //       MEM
1cd20 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20  DEBUG allocator 
1cd30 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  is used...    //
1cd40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cd50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cd60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cd70 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61  ite3_win32_compa
1cd80 63 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74  ct_heap(ref uint
1cd90 20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64   largest);..#end
1cda0 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  if..#endif....#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 49   static extern I
1ce60 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61  ntPtr sqlite3_ma
1ce70 6c 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a  lloc(int n);....
1ce80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1ce90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1cea0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ceb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1cec0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ced0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cee0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1cef0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1cf00 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1cf10 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1cf20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cf30 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1cf40 6d 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e 67 20 6e  malloc64(ulong n
1cf50 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1cf60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1cf70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1cf80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1cf90 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1cfa0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1cfb0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cfc0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1cfd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cfe0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1cff0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d000 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1d010 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e  lite3_realloc(In
1d020 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d  tPtr p, int n);.
1d030 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d040 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d050 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d070 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d080 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d090 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d0a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d0b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d0c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d0d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d0e0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d0f0 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 49 6e 74  e3_realloc64(Int
1d100 50 74 72 20 70 2c 20 75 6c 6f 6e 67 20 6e 29 3b  Ptr p, ulong n);
1d110 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d120 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d130 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d140 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d150 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d160 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d170 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d180 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d190 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d1a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d1b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d1c0 74 65 72 6e 20 75 6c 6f 6e 67 20 73 71 6c 69 74  tern ulong sqlit
1d1d0 65 33 5f 6d 73 69 7a 65 28 49 6e 74 50 74 72 20  e3_msize(IntPtr 
1d1e0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
1d1f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d200 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d210 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d220 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d230 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d240 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d250 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d260 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d270 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d280 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d290 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1d2a0 69 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72  ite3_free(IntPtr
1d2b0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
1d2c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d2d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d2e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d2f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d300 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d310 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d320 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d340 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d350 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d360 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1d370 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1d380 5f 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20  _open_v2(byte[] 
1d390 75 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65  utf8Filename, re
1d3a0 66 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  f IntPtr db, SQL
1d3b0 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
1d3c0 20 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76   flags, byte[] v
1d3d0 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  fsName);....#if 
1d3e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d3f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d400 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d410 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d420 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d430 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d440 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
1d450 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
1d460 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d470 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d480 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
1d490 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1d4a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d4b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d4c0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1d4d0 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  de sqlite3_open1
1d4e0 36 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  6(string fileNam
1d4f0 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62  e, ref IntPtr db
1d500 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1d510 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d520 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d540 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d550 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d560 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d570 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d580 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d590 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d5a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d5b0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1d5c0 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e  te3_interrupt(In
1d5d0 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66  tPtr db);....#if
1d5e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1d5f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1d600 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d610 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1d620 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1d630 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1d640 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ecl)]..    inter
1d650 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d660 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c  n long sqlite3_l
1d670 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
1d680 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65  (IntPtr db);..#e
1d690 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1d6a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d6b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d6c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d6d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d6e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d6f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d700 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1d710 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d720 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1d730 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d740 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1d750 69 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74  ite3_changes(Int
1d760 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
1d770 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d780 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d790 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d7a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d7b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d7c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d7d0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1d7e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d7f0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65   long sqlite3_me
1d800 6d 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65  mory_used();..#e
1d810 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1d820 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d830 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d850 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d860 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d870 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d890 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
1d8a0 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
1d8b0 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72  _highwater(int r
1d8c0 65 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64  esetFlag);..#end
1d8d0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1d8e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1d8f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1d900 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1d910 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d920 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1d930 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1d940 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1d950 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d960 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1d970 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d980 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1d990 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73  orCode sqlite3_s
1d9a0 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69  hutdown();....#i
1d9b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d9c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d9d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d9e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d9f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1da00 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1da10 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1da20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1da30 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1da40 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1da50 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1da60 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1da70 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
1da80 6f 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69  out(IntPtr db, i
1da90 6e 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  nt ms);....#if !
1daa0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dab0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1dac0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dad0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1dae0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1daf0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1db00 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1db10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1db20 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1db30 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1db40 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1db50 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1db60 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e  te3_clear_bindin
1db70 67 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  gs(IntPtr stmt);
1db80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1db90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dba0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dbb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1dbc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dbd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dbe0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dbf0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dc00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dc10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dc20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1dc30 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1dc40 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
1dc50 64 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74  d_blob(IntPtr st
1dc60 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42  mt, int index, B
1dc70 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
1dc80 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e   nSize, IntPtr n
1dc90 54 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23  Transient);....#
1dca0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1dcb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1dcc0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dcd0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1dce0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1dcf0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1dd00 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1dd10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1dd20 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1dd30 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
1dd40 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
1dd50 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1dd60 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
1dd70 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1dd80 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1dd90 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1dda0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ddb0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ddc0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ddd0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dde0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ddf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1de00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1de10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1de20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1de30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1de40 65 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50  e3_bind_int(IntP
1de50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1de60 65 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  ex, int value);.
1de70 0a 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f  ...    //..    /
1de80 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61  / NOTE: This rea
1de90 6c 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22  lly just calls "
1dea0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1deb0 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68  "; however, it h
1dec0 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20  as the..    //  
1ded0 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70       correct typ
1dee0 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20  e signature for 
1def0 61 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d  an unsigned (32-
1df00 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20  bit) integer... 
1df10 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54     //..#if !PLAT
1df20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1df30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1df40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1df50 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1df60 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1df70 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
1df80 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1df90 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1dfa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1dfb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1dfc0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
1dfd0 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69   "sqlite3_bind_i
1dfe0 6e 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  nt")]..#endif.. 
1dff0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e000 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1e010 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1e020 33 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50  3_bind_uint(IntP
1e030 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1e040 65 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b  ex, uint value);
1e050 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e060 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e070 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e080 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e090 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e0a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e0b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
1e0c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e0d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
1e0e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
1e0f0 5f 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50  _bind_int64(IntP
1e100 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1e110 65 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ex, long value);
1e120 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
1e130 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  //..    // NOTE:
1e140 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73   This really jus
1e150 74 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33  t calls "sqlite3
1e160 5f 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f  _bind_int64"; ho
1e170 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68  wever, it has th
1e180 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1e190 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67  correct type sig
1e1a0 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e  nature for an un
1e1b0 73 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d  signed long (64-
1e1c0 62 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20  bit) integer... 
1e1d0 20 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54     //..#if !PLAT
1e1e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e1f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e200 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e210 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
1e220 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1e230 36 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  64", CallingConv
1e240 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e250 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e260 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1e270 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e280 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e290 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74  qlite3_bind_uint
1e2a0 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  64(IntPtr stmt, 
1e2b0 69 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67  int index, ulong
1e2c0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
1e2d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e2e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e2f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e300 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e310 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e320 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e330 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e340 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e350 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e360 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e370 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e380 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1e390 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
1e3a0 64 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74  d_null(IntPtr st
1e3b0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1e3c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e3d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e3e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e3f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e400 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e410 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e420 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e430 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e440 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e450 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e460 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e470 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e480 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
1e490 5f 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d  _text(IntPtr stm
1e4a0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79  t, int index, by
1e4b0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
1e4c0 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
1e4d0 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
1e4e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e4f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e500 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e510 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e520 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e530 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e540 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e550 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e560 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e570 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e580 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1e590 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  t sqlite3_bind_p
1e5a0 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49  arameter_count(I
1e5b0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1e5c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e5d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e5e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e5f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e600 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e610 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e620 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e630 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e640 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e650 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e660 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e670 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
1e680 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65  d_parameter_inde
1e690 78 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62  x(IntPtr stmt, b
1e6a0 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d  yte[] strName);.
1e6b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e6c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e6d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e6e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e6f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e700 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e710 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e720 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e730 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e740 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e750 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e760 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
1e770 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74  column_count(Int
1e780 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69  Ptr stmt);....#i
1e790 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e7a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e7b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e7c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e7d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e7e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e7f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e800 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e810 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e820 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e830 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e840 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e850 71 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50  qlite3_step(IntP
1e860 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
1e870 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1e880 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1e890 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e8a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1e8b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1e8c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1e8d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1e8e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e8f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1e900 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1e910 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1e920 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72  t sqlite3_stmt_r
1e930 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73  eadonly(IntPtr s
1e940 74 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20  tmt); /* 3.7.4+ 
1e950 2a 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  */....#if !PLATF
1e960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e970 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1e980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1e990 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e9a0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1e9b0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1e9c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e9d0 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
1e9e0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  e sqlite3_column
1e9f0 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73  _double(IntPtr s
1ea00 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ea10 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
1ea20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ea30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ea40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ea50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ea60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ea70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ea80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ea90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eaa0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1eab0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1eac0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1ead0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1eae0 69 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  int(IntPtr stmt,
1eaf0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
1eb00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1eb10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1eb20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1eb30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1eb40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1eb50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eb60 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1eb70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1eb80 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65  tern long sqlite
1eb90 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49  3_column_int64(I
1eba0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1ebb0 69 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d  index);..#endif.
1ebc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ebd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ebe0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ebf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ec00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ec10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ec20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ec30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ec40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ec50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ec60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ec70 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ec80 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49  e3_column_blob(I
1ec90 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1eca0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1ecb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ecc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ecd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ece0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ecf0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ed00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ed10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ed20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ed30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ed40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ed50 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
1ed60 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
1ed70 79 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74  ytes(IntPtr stmt
1ed80 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1ed90 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1eda0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1edb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1edc0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1edd0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ede0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1edf0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ee00 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ee10 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1ee20 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ee30 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ee40 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1ee50 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74  lumn_bytes16(Int
1ee60 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1ee70 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1ee80 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ee90 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1eea0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1eeb0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1eec0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1eed0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1eee0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1eef0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ef00 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ef10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ef20 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
1ef30 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63  finity sqlite3_c
1ef40 6f 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74  olumn_type(IntPt
1ef50 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1ef60 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1ef70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1ef80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ef90 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1efa0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1efb0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1efc0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1efd0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1efe0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1eff0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1f000 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f010 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1f020 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1f030 63 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e  create_collation
1f040 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65  (IntPtr db, byte
1f050 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20  [] strName, int 
1f060 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76  nType, IntPtr pv
1f070 55 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c  User, SQLiteColl
1f080 61 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a  ation func);....
1f090 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1f0a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1f0b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f0c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1f0d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1f0e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f0f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1f100 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f110 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1f120 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1f130 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1f140 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67   int sqlite3_agg
1f150 72 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74  regate_count(Int
1f160 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
1f170 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f180 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f190 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f1a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f1b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f1c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f1d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f1e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f1f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f200 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f210 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f220 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1f230 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50  _value_blob(IntP
1f240 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
1f250 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f260 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f270 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f280 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f290 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f2a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f2b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f2c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f2d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f2e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f2f0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1f300 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
1f310 65 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  es(IntPtr p);...
1f320 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f330 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f340 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f350 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f360 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f370 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f380 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f390 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f3a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f3b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f3c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f3d0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
1f3e0 6c 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50  lue_bytes16(IntP
1f3f0 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  tr p);....#if !P
1f400 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f410 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f420 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f430 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f440 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f450 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f460 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1f470 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64   static extern d
1f480 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61  ouble sqlite3_va
1f490 6c 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74  lue_double(IntPt
1f4a0 72 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  r p);..#endif...
1f4b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f4c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f4d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f4e0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f4f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f500 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f510 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f520 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f530 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f540 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f550 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f560 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61  n int sqlite3_va
1f570 6c 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70  lue_int(IntPtr p
1f580 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f590 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f5a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f5b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f5c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f5d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f5e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f5f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f600 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
1f610 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
1f620 74 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  t64(IntPtr p);..
1f630 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1f640 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f650 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f660 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f670 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f680 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f690 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f6a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f6b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f6c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f6d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f6e0 74 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41  tic extern TypeA
1f6f0 66 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f  ffinity sqlite3_
1f700 76 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74  value_type(IntPt
1f710 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
1f720 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f730 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f740 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f750 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f760 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f770 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f780 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f790 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f7a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f7b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f7c0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f7d0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c  qlite3_result_bl
1f7e0 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ob(IntPtr contex
1f7f0 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c  t, byte[] value,
1f800 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50   int nSize, IntP
1f810 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
1f820 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f830 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f840 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f850 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f860 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f870 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f880 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
1f890 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1f8a0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1f8b0 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
1f8c0 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  le(IntPtr contex
1f8d0 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  t, double value)
1f8e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1f8f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f900 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f920 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f930 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f940 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f950 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f960 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f970 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f980 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f990 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1f9a0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1f9b0 74 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63  t_error(IntPtr c
1f9c0 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73  ontext, byte[] s
1f9d0 74 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29  trErr, int nLen)
1f9e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f9f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1fa00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1fa10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1fa20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1fa30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1fa40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1fa50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1fa60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1fa70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1fa80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1fa90 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1faa0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1fab0 63 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  code(IntPtr cont
1fac0 65 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72  ext, SQLiteError
1fad0 43 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  Code value);....
1fae0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1faf0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fb00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fb10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1fb20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fb30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fb40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fb50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fb60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1fb70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1fb80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fb90 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1fba0 73 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69  sult_error_toobi
1fbb0 67 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  g(IntPtr context
1fbc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1fbd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fbe0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1fbf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1fc00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1fc10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1fc20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1fc30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1fc40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fc50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1fc60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fc70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
1fc80 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1fc90 5f 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f  _nomem(IntPtr co
1fca0 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
1fcb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1fcc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1fcd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1fce0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1fcf0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1fd00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1fd10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1fd20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1fd30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1fd40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fd50 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
1fd60 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
1fd70 76 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e  value(IntPtr con
1fd80 74 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c  text, IntPtr val
1fd90 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
1fda0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fdb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1fdc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fdd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1fde0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1fdf0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fe00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1fe10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1fe20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1fe30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1fe40 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
1fe50 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
1fe60 6f 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e  oblob(IntPtr con
1fe70 74 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  text, int nLen);
1fe80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1fe90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1fea0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1feb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fec0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fed0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fee0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fef0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ff00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ff10 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ff20 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ff30 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1ff40 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74  3_result_int(Int
1ff50 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74  Ptr context, int
1ff60 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
1ff70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ff80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ff90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ffa0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ffb0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ffc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ffd0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1ffe0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fff0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
20000 73 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74  sult_int64(IntPt
20010 72 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20  r context, long 
20020 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
20030 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20040 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20050 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20060 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20070 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20080 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20090 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
200a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
200b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
200c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
200d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
200e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
200f0 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74  _result_null(Int
20100 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
20110 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20120 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20130 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20140 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20150 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20160 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20170 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20180 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20190 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
201a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
201b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
201c0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
201d0 65 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74  esult_text(IntPt
201e0 72 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b  r context, byte[
201f0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65  ] value, int nLe
20200 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
20210 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
20220 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20230 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20240 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20250 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20260 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20270 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20280 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
202a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
202b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
202c0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
202d0 72 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67  r sqlite3_aggreg
202e0 61 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50  ate_context(IntP
202f0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
20300 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20  nBytes);....#if 
20310 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20320 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20330 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20340 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20350 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20360 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20370 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  cl, CharSet = Ch
20380 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
20390 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
203a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
203b0 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  L, CharSet = Cha
203c0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
203d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
203e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
203f0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
20400 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
20410 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74  text16(IntPtr st
20420 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73  mt, int index, s
20430 74 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74  tring value, int
20440 20 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nlen, IntPtr pv
20450 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
20460 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20470 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20480 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20490 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
204a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
204b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
204c0 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
204d0 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
204e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
204f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20500 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
20510 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
20520 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20530 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20540 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
20550 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36  3_result_error16
20560 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
20570 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
20580 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23   int nLen);....#
20590 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
205a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
205b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
205c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
205d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
205e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
205f0 43 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d  Cdecl, CharSet =
20600 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65   CharSet.Unicode
20610 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20620 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20630 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20  _DLL, CharSet = 
20640 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
20650 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20660 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20670 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
20680 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
20690 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
206a0 20 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c   string strName,
206b0 20 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74   int nLen, IntPt
206c0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
206d0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
206e0 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49  DEC || INTEROP_I
206f0 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20  NCLUDE_SEE..#if 
20700 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20710 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20720 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20730 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20740 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20750 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20760 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20770 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20780 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20790 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
207a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
207b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
207c0 69 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20  ite3_key(IntPtr 
207d0 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20  db, byte[] key, 
207e0 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a  int keylen);....
207f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20800 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20810 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20820 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20830 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20840 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20850 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20860 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20870 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20880 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20890 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
208a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
208b0 20 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49   sqlite3_rekey(I
208c0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
208d0 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
208e0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
208f0 66 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  f INTEROP_INCLUD
20900 45 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50  E_ZIPVFS..#if !P
20910 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20920 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20930 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20940 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20950 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20960 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20970 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20980 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20990 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
209a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
209b0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
209c0 7a 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b  zipvfsInit_v2();
209d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
209e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
209f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20a00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20a10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20a20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20a30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20a40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20a50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20a60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20a70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20a80 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73  tern void zipvfs
20a90 49 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44  Init_v3(int regD
20aa0 66 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  flt);..#endif...
20ab0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20ac0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20ad0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20ae0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20af0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20b00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20b10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20b20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20b30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20b40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20b50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20b60 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70  n void sqlite3_p
20b70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
20b80 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f  IntPtr db, int o
20b90 70 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65  ps, SQLiteProgre
20ba0 73 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ssCallback func,
20bb0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
20bc0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20bd0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20be0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20bf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20c00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20c10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20c20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20c30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20c40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20c50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20c60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20c70 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20c80 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
20c90 65 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  er(IntPtr db, SQ
20ca0 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61  LiteAuthorizerCa
20cb0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
20cc0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
20cd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20ce0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20cf0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20d00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20d10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20d20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20d30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20d40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20d50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20d60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20d70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20d80 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
20d90 75 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50  update_hook(IntP
20da0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64  tr db, SQLiteUpd
20db0 61 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ateCallback func
20dc0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
20dd0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20de0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20df0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20e00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20e10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20e20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20e30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20e40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20e50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20e60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20e70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20e80 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
20e90 69 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b  ite3_commit_hook
20ea0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
20eb0 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b  teCommitCallback
20ec0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
20ed0 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
20ee0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20ef0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20f00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20f10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20f20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20f30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20f40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20f50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20f60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20f70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20f80 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
20f90 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  r sqlite3_trace(
20fa0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
20fb0 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66  eTraceCallback f
20fc0 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
20fd0 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
20fe0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20ff0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21000 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21010 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21020 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21030 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21040 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21050 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21060 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21070 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21080 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
21090 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
210a0 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
210b0 74 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73  teTraceFlags mas
210c0 6b 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  k, SQLiteTraceCa
210d0 6c 6c 62 61 63 6b 32 20 66 75 6e 63 2c 20 49 6e  llback2 func, In
210e0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
210f0 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
21100 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74  lite3_config() t
21110 61 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20  akes a variable 
21120 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77  argument list, w
21130 65 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f  e have to overlo
21140 61 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d  ad declarations.
21150 0a 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20  .    // for all 
21160 70 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74  possible calls t
21170 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75  hat we want to u
21180 73 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  se...#if !PLATFO
21190 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
211a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
211b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
211c0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
211d0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43  lite3_config", C
211e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
211f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
21200 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21210 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21220 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21230 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
21240 6c 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d  lite3_config")].
21250 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21260 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21270 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21280 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ode sqlite3_conf
21290 69 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f  ig_none(SQLiteCo
212a0 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b  nfigOpsEnum op);
212b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
212c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
212d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
212e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
212f0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
21300 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
21310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21320 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21330 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21340 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
21360 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
21370 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
21380 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21390 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
213a0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
213b0 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
213c0 67 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66  g_int(SQLiteConf
213d0 69 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e  igOpsEnum op, in
213e0 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  t value);....#if
213f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21420 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
21430 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
21440 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
21450 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21460 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21470 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21480 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21490 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
214a0 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f  nt = "sqlite3_co
214b0 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d  nfig")]..#endif.
214c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
214d0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
214e0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
214f0 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53  te3_config_log(S
21500 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e  QLiteConfigOpsEn
21510 75 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67  um op, SQLiteLog
21520 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
21530 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
21540 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21550 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21560 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21570 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
21580 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
21590 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43  e3_db_config", C
215a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
215b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
215c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
215d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
215e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
215f0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
21600 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22  lite3_db_config"
21610 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21620 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21630 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21640 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64  orCode sqlite3_d
21650 62 5f 63 6f 6e 66 69 67 5f 63 68 61 72 70 74 72  b_config_charptr
21660 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
21670 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
21680 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 63 68 61  m op, IntPtr cha
21690 72 50 74 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rPtr);....#if !P
216a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
216b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
216c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
216d0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
216e0 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  = "sqlite3_db_co
216f0 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  nfig", CallingCo
21700 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21710 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21720 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21730 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21740 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
21750 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
21760 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#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 53   static extern S
21790 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
217a0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
217b0 5f 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50  _int_refint(IntP
217c0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e  tr db, SQLiteCon
217d0 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c  figDbOpsEnum op,
217e0 20 69 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20   int value, ref 
217f0 69 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a  int result);....
21800 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21810 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21820 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21830 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21840 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
21850 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  _db_config", Cal
21860 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21870 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21880 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21890 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
218a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
218b0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
218c0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d  te3_db_config")]
218d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
218e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
218f0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
21900 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f  Code sqlite3_db_
21910 63 6f 6e 66 69 67 5f 69 6e 74 70 74 72 5f 74 77  config_intptr_tw
21920 6f 5f 69 6e 74 73 28 49 6e 74 50 74 72 20 64 62  o_ints(IntPtr db
21930 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  , SQLiteConfigDb
21940 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50  OpsEnum op, IntP
21950 74 72 20 70 74 72 2c 20 69 6e 74 20 69 6e 74 30  tr ptr, int int0
21960 2c 20 69 6e 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a  , int int1);....
21970 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21980 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21990 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
219a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
219b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
219c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
219d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
219e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
219f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21a00 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21a10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21a20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21a30 20 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74   sqlite3_db_stat
21a40 75 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  us(IntPtr db, SQ
21a50 4c 69 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75  LiteStatusOpsEnu
21a60 6d 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 63 75  m op, ref int cu
21a70 72 72 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68  rrent, ref int h
21a80 69 67 68 77 61 74 65 72 2c 20 69 6e 74 20 72 65  ighwater, int re
21a90 73 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23 69 66  setFlag);....#if
21aa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21ab0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21ac0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21ad0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21ae0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21af0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21b00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21b10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21b20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21b30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21b40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
21b50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c  tPtr sqlite3_rol
21b60 6c 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74  lback_hook(IntPt
21b70 72 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c  r db, SQLiteRoll
21b80 62 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e  backCallback fun
21b90 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
21ba0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21bb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21bc0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21bd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21be0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21bf0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21c00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21c10 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21c20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21c30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21c40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21c50 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
21c60 6c 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28  lite3_db_handle(
21c70 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
21c80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21c90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21ca0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21cb0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21cc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21cd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21ce0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21cf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21d00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21d10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21d20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21d30 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21d40 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c  e sqlite3_db_rel
21d50 65 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50  ease_memory(IntP
21d60 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
21d70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21d80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21d90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21da0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21db0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21dc0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21dd0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21de0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21df0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21e00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21e10 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
21e20 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69  tr sqlite3_db_fi
21e30 6c 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62  lename(IntPtr db
21e40 2c 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29  , IntPtr dbName)
21e50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21e60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21e70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21e80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21e90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21ea0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21eb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21ec0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21ed0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21ee0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21ef0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21f00 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
21f10 33 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  3_db_readonly(In
21f20 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
21f30 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  dbName);....#if 
21f40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21f50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21f60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21f70 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
21f80 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
21f90 66 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69  filename", Calli
21fa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21fb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21fc0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21fd0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21fe0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
21ff0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
22000 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d  3_db_filename")]
22010 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22020 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22030 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
22040 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f  te3_db_filename_
22050 62 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c  bytes(IntPtr db,
22060 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b   byte[] dbName);
22070 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22080 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22090 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
220a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
220b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
220c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
220d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
220e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
220f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22100 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22110 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22120 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
22130 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e  te3_next_stmt(In
22140 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
22150 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
22160 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22170 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22180 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22190 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
221a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
221b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
221c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
221d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
221e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
221f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22200 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
22210 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
22220 65 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64  e3_exec(IntPtr d
22230 62 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c  b, byte[] strSql
22240 2c 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62  , IntPtr pvCallb
22250 61 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61  ack, IntPtr pvPa
22260 72 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20  ram, ref IntPtr 
22270 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20  errMsg);....#if 
22280 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22290 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
222a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
222b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
222c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
222d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
222e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
222f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22300 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22310 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22320 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22330 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65   sqlite3_release
22340 5f 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74  _memory(int nByt
22350 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
22360 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22370 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22380 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22390 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
223a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
223b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
223c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
223d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
223e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
223f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22400 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
22410 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
22420 6d 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  mit(IntPtr db);.
22430 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22440 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22450 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22460 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22470 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22480 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22490 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
224a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
224b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
224c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
224d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
224e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
224f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  ode sqlite3_exte
22500 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
22510 73 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74  s(IntPtr db, int
22520 20 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20   onoff);....#if 
22530 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22540 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22550 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22560 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22570 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22590 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
225a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
225b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
225c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
225d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
225e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
225f0 69 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74  ite3_errcode(Int
22600 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
22610 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22620 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22640 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22650 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22660 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22670 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22680 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22690 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
226a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
226b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
226c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
226d0 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72  ite3_extended_er
226e0 72 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29  rcode(IntPtr db)
226f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22700 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22710 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22720 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22730 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22740 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22750 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22760 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22770 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22780 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22790 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
227a0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
227b0 69 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69  ite3_errstr(SQLi
227c0 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b  teErrorCode rc);
227d0 20 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a   /* 3.7.15+ */..
227e0 0d 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73  ..    // Since s
227f0 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b  qlite3_log() tak
22800 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72  es a variable ar
22810 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20  gument list, we 
22820 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64  have to overload
22830 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20   declarations.. 
22840 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f     // for all po
22850 73 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46  ssible calls.  F
22860 6f 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f  or now, we are o
22870 6e 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73  nly exposing a s
22880 69 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e  ingle string, an
22890 64 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64  d..    // depend
228a0 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74   on the caller t
228b0 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72  o format the str
228c0 69 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46  ing...#if !PLATF
228d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
228e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
228f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22900 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22910 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22920 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22930 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22940 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22950 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22960 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22970 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
22980 74 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72  te3_log(SQLiteEr
22990 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65  rorCode iErrCode
229a0 2c 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74  , byte[] zFormat
229b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
229c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
229d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
229e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
229f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22a00 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22a10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22a20 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22a30 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22a40 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22a50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22a60 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22a70 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66  orCode sqlite3_f
22a80 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50  ile_control(IntP
22a90 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44  tr db, byte[] zD
22aa0 62 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49  bName, int op, I
22ab0 6e 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a  ntPtr pArg);....
22ac0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22ad0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22ae0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22af0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22b00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22b10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22b20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22b30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22b40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22b50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22b60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22b70 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
22b80 62 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50  backup_init(IntP
22b90 74 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b  tr destDb, byte[
22ba0 5d 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74  ] zDestName, Int
22bb0 50 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79  Ptr sourceDb, by
22bc0 74 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65  te[] zSourceName
22bd0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22be0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22bf0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22c00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22c10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22c20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22c30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22c40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22c50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22c60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22c70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22c80 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22c90 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
22ca0 61 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74  ackup_step(IntPt
22cb0 72 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50  r backup, int nP
22cc0 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  age);....#if !PL
22cd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22ce0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22cf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22d00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22d10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22d20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22d30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22d40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22d50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22d60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22d70 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
22d80 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d  lite3_backup_rem
22d90 61 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61  aining(IntPtr ba
22da0 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
22db0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22dc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22dd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22de0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22df0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22e00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22e10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22e30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22e40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22e50 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
22e60 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61  qlite3_backup_pa
22e70 67 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62  gecount(IntPtr b
22e80 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
22e90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22ea0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22eb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22ec0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22ed0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22ee0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22ef0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22f10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22f20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22f30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
22f40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
22f50 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49  te3_blob_close(I
22f60 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a  ntPtr blob);....
22f70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22f80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22f90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22fa0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22fb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22fc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22fd0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22fe0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ff0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23000 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23010 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23020 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f   int sqlite3_blo
23030 62 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62  b_bytes(IntPtr b
23040 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lob);....#if !PL
23050 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23060 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23070 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23080 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23090 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
230a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
230b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
230c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
230d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
230e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
230f0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
23100 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
23110 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50  3_blob_open(IntP
23120 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
23130 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c  Name, byte[] tbl
23140 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c  Name, byte[] col
23150 4e 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64  Name, long rowId
23160 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66  , int flags, ref
23170 20 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29   IntPtr ptrBlob)
23180 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23190 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
231a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
231b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
231c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
231d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
231e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
231f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23200 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23210 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23220 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23230 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23240 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
23250 6f 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62  ob_read(IntPtr b
23260 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28  lob, [MarshalAs(
23270 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50  UnmanagedType.LP
23280 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62  Array)] byte[] b
23290 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74  uffer, int count
232a0 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a  , int offset);..
232b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
232c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
232d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
232e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
232f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23300 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23310 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23320 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23330 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23340 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23350 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23360 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
23370 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  de sqlite3_blob_
23380 72 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c  reopen(IntPtr bl
23390 6f 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b  ob, long rowId);
233a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
233b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
233c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
233d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
233e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
233f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23400 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23410 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23420 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23430 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23440 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23450 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
23460 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
23470 62 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62  b_write(IntPtr b
23480 6c 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28  lob, [MarshalAs(
23490 55 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50  UnmanagedType.LP
234a0 41 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62  Array)] byte[] b
234b0 75 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74  uffer, int count
234c0 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a  , int offset);..
234d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
234e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
234f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23500 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23520 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23530 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23540 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23550 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23560 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23570 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23580 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
23590 64 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61  de sqlite3_decla
235a0 72 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64  re_vtab(IntPtr d
235b0 62 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b  b, IntPtr zSQL);
235c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
235d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
235e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
235f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23610 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23620 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23630 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23640 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23650 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23660 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23670 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
23680 74 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50  te3_mprintf(IntP
23690 74 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67  tr format, __arg
236a0 6c 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64  list);..    #end
236b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
236c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
236f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23700 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23710 20 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63   // SQLite API c
23720 61 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72  alls that are pr
23730 6f 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d  ovided by "well-
23740 6b 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e  known" extension
23750 73 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74  s that may be st
23760 61 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f  atically..    //
23770 20 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65   linked with the
23780 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74   SQLite core nat
23790 69 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72  ive library curr
237a0 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20  ently in use... 
237b0 20 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e     #region exten
237c0 73 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20  sion sqlite api 
237d0 63 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69  calls..    #regi
237e0 6f 6e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  on virtual table
237f0 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
23800 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
23810 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
23820 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
23830 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23840 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
23850 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
23860 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23870 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
23880 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23890 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
238a0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
238b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
238c0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65  tPtr sqlite3_cre
238d0 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
238e0 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c  odule(IntPtr db,
238f0 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65   IntPtr name, re
23900 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  f sqlite3_module
23910 20 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20   module, IntPtr 
23920 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65  pClientData, xDe
23930 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73  stroyModule xDes
23940 74 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  troy);....#if !P
23950 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23960 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23970 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23980 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23990 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
239a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
239b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
239c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
239d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
239e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
239f0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23a00 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f  sqlite3_dispose_
23a10 6d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d  module(IntPtr pM
23a20 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  odule);..#endif.
23a30 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
23a40 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
23a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a90 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
23aa0 6e 20 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73  n session extens
23ab0 69 6f 6e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ion..#if INTEROP
23ac0 5f 53 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49  _SESSION_EXTENSI
23ad0 4f 4e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ON..#if !PLATFOR
23ae0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23af0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
23b00 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
23b10 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
23b20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
23b30 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23b40 6c 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78  l delegate int x
23b50 53 65 73 73 69 6f 6e 46 69 6c 74 65 72 28 49 6e  SessionFilter(In
23b60 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
23b70 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 29 3b 0d  tPtr pTblName);.
23b80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23b90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23ba0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
23bb0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
23bc0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
23bd0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
23be0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23bf0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
23c00 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63  ChangeSetConflic
23c10 74 52 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e  tResult xSession
23c20 43 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20  Conflict(IntPtr 
23c30 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43  context, SQLiteC
23c40 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
23c50 54 79 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74  Type type, IntPt
23c60 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a  r iterator);....
23c70 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23c80 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23c90 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
23ca0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
23cb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23cc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
23cd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65  .    internal de
23ce0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
23cf0 6f 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 49  orCode xSessionI
23d00 6e 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  nput(IntPtr cont
23d10 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74  ext, IntPtr pDat
23d20 61 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61  a, ref int nData
23d30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23d40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23d50 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
23d60 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
23d70 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
23d80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23d90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23da0 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c  nal delegate SQL
23db0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65  iteErrorCode xSe
23dc0 73 73 69 6f 6e 4f 75 74 70 75 74 28 49 6e 74 50  ssionOutput(IntP
23dd0 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
23de0 74 72 20 70 44 61 74 61 2c 20 69 6e 74 20 6e 44  tr pData, int nD
23df0 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ata);....    ///
23e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
23e50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23e60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23e70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23e80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23e90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23ea0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23eb0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
23ec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23ed0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23ee0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23ef0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
23f00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
23f10 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61  ite3session_crea
23f20 74 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  te(IntPtr db, by
23f30 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 72 65 66  te[] dbName, ref
23f40 20 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29   IntPtr session)
23f50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23f60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23f70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23f80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23f90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23fa0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23fb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23fc0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23fd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23fe0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23ff0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24000 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
24010 65 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65  e3session_delete
24020 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29  (IntPtr session)
24030 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24040 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24050 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24070 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24080 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24090 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
240a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
240b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
240c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
240d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
240e0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
240f0 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28  3session_enable(
24100 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20  IntPtr session, 
24110 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a  int enable);....
24120 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24130 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24140 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24150 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24160 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24170 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24180 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24190 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
241a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
241b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
241c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
241d0 20 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73   int sqlite3sess
241e0 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28 49 6e 74  ion_indirect(Int
241f0 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74  Ptr session, int
24200 20 69 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23   indirect);....#
24210 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24220 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24230 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24240 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24250 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24260 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24270 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24280 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24290 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
242a0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
242b0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
242c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
242d0 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 61  sqlite3session_a
242e0 74 74 61 63 68 28 49 6e 74 50 74 72 20 73 65 73  ttach(IntPtr ses
242f0 73 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 74 62 6c  sion, byte[] tbl
24300 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
24310 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24320 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24330 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24340 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24350 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24360 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24370 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
24380 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24390 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
243a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
243b0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
243c0 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 74  sqlite3session_t
243d0 61 62 6c 65 5f 66 69 6c 74 65 72 28 49 6e 74 50  able_filter(IntP
243e0 74 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73  tr session, xSes
243f0 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
24400 65 72 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  er, IntPtr conte
24410 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  xt);....#if !PLA
24420 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24430 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24440 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24450 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24460 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24470 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24480 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24490 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
244a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
244b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
244c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
244d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
244e0 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65  session_changese
244f0 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  t(IntPtr session
24500 2c 20 72 65 66 20 69 6e 74 20 6e 43 68 61 6e 67  , ref int nChang
24510 65 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72  eSet, ref IntPtr
24520 20 70 43 68 61 6e 67 65 53 65 74 29 3b 0a 0d 0a   pChangeSet);...
24530 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24540 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24550 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24560 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24590 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
245a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
245b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
245c0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
245d0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
245e0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
245f0 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
24600 64 69 66 66 28 49 6e 74 50 74 72 20 73 65 73 73  diff(IntPtr sess
24610 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 66 72 6f 6d  ion, byte[] from
24620 44 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  DbName, byte[] t
24630 62 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  blName, ref IntP
24640 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23  tr errMsg);....#
24650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
246a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
246b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
246c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
246d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
246e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
246f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24700 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24710 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70  sqlite3session_p
24720 61 74 63 68 73 65 74 28 49 6e 74 50 74 72 20 73  atchset(IntPtr s
24730 65 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20  ession, ref int 
24740 6e 50 61 74 63 68 53 65 74 2c 20 72 65 66 20 49  nPatchSet, ref I
24750 6e 74 50 74 72 20 70 50 61 74 63 68 53 65 74 29  ntPtr pPatchSet)
24760 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24770 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24780 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24790 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
247a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
247b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
247c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
247d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
247e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
247f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24800 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24810 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
24820 33 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74 79  3session_isempty
24830 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29  (IntPtr session)
24840 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24850 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24860 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24870 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24880 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24890 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
248a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
248b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
248c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
248d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
248e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
248f0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24900 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
24910 6e 67 65 73 65 74 5f 73 74 61 72 74 28 72 65 66  ngeset_start(ref
24920 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
24930 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74  , int nChangeSet
24940 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65  , IntPtr pChange
24950 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Set);....#if !PL
24960 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24970 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24980 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24990 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
249a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
249b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
249c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
249d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
249e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
249f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24a00 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24a10 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
24a20 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 78 74 28  3changeset_next(
24a30 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29  IntPtr iterator)
24a40 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24a50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24a60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24a70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24a80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24a90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24aa0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24ab0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24ac0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24ad0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24ae0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24af0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24b00 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
24b10 6e 67 65 73 65 74 5f 6f 70 28 49 6e 74 50 74 72  ngeset_op(IntPtr
24b20 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49   iterator, ref I
24b30 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 2c 20  ntPtr pTblName, 
24b40 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73  ref int nColumns
24b50 2c 20 72 65 66 20 53 51 4c 69 74 65 41 75 74 68  , ref SQLiteAuth
24b60 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65  orizerActionCode
24b70 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 62 49 6e   op, ref int bIn
24b80 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20  direct);....#if 
24b90 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24ba0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24bb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24bc0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24bd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24be0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24bf0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24c00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24c10 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24c20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24c30 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24c40 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24c50 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 70 6b  ite3changeset_pk
24c60 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
24c70 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 50 72  , ref IntPtr pPr
24c80 69 6d 61 72 79 4b 65 79 73 2c 20 72 65 66 20 69  imaryKeys, ref i
24c90 6e 74 20 6e 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d  nt nColumns);...
24ca0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24cb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24cc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24cd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24ce0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24cf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24d00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24d10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24d20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24d30 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24d40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24d50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24d60 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
24d70 65 74 5f 6f 6c 64 28 49 6e 74 50 74 72 20 69 74  et_old(IntPtr it
24d80 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75  erator, int colu
24d90 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74  mnIndex, ref Int
24da0 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a  Ptr pValue);....
24db0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24dc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24dd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24de0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24df0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24e00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24e10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24e20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24e30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24e40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24e50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24e60 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24e70 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
24e80 74 5f 6e 65 77 28 49 6e 74 50 74 72 20 69 74 65  t_new(IntPtr ite
24e90 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d  rator, int colum
24ea0 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50  nIndex, ref IntP
24eb0 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23  tr pValue);....#
24ec0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24ed0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24ef0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24f00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24f10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24f20 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24f30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24f40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24f50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24f60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24f70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24f80 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
24f90 5f 63 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72  _conflict(IntPtr
24fa0 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63   iterator, int c
24fb0 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20  olumnIndex, ref 
24fc0 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d  IntPtr pValue);.
24fd0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24fe0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24ff0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25000 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25010 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25020 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25030 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25040 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25050 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
25060 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25070 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25080 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
25090 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
250a0 65 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74  eset_fk_conflict
250b0 73 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  s(IntPtr iterato
250c0 72 2c 20 72 65 66 20 69 6e 74 20 63 6f 6e 66 6c  r, ref int confl
250d0 69 63 74 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  icts);....#if !P
250e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
250f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25100 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25110 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25120 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25130 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25140 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25150 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25160 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25170 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25180 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25190 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
251a0 65 33 63 68 61 6e 67 65 73 65 74 5f 66 69 6e 61  e3changeset_fina
251b0 6c 69 7a 65 28 49 6e 74 50 74 72 20 69 74 65 72  lize(IntPtr iter
251c0 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ator);....#if !P
251d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
251e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
251f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25200 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25210 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25220 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25230 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25240 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25250 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25260 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25270 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25280 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25290 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65  e3changeset_inve
252a0 72 74 28 69 6e 74 20 6e 49 6e 2c 20 49 6e 74 50  rt(int nIn, IntP
252b0 74 72 20 70 49 6e 2c 20 72 65 66 20 69 6e 74 20  tr pIn, ref int 
252c0 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72  nOut, ref IntPtr
252d0 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   pOut);....#if !
252e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
252f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25300 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25310 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25320 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25330 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25340 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25350 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25360 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25370 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25380 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
25390 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
253a0 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e  te3changeset_con
253b0 63 61 74 28 69 6e 74 20 6e 41 2c 20 49 6e 74 50  cat(int nA, IntP
253c0 74 72 20 70 41 2c 20 69 6e 74 20 6e 42 2c 20 49  tr pA, int nB, I
253d0 6e 74 50 74 72 20 70 42 2c 20 72 65 66 20 69 6e  ntPtr pB, ref in
253e0 74 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50  t nOut, ref IntP
253f0 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66  tr pOut);....#if
25400 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25410 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25420 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25430 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
25440 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25450 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25460 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25470 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25480 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
25490 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
254a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
254b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
254c0 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70  lite3changegroup
254d0 5f 6e 65 77 28 72 65 66 20 49 6e 74 50 74 72 20  _new(ref IntPtr 
254e0 63 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d  changeGroup);...
254f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25500 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
25510 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25520 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
25530 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
25540 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25550 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25560 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25570 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25580 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25590 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
255a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
255b0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
255c0 72 6f 75 70 5f 61 64 64 28 49 6e 74 50 74 72 20  roup_add(IntPtr 
255d0 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 69 6e 74  changeGroup, int
255e0 20 6e 44 61 74 61 2c 20 49 6e 74 50 74 72 20 70   nData, IntPtr p
255f0 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Data);....#if !P
25600 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25610 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25620 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25630 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25640 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25650 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25660 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25680 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25690 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
256a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
256b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
256c0 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75  e3changegroup_ou
256d0 74 70 75 74 28 49 6e 74 50 74 72 20 63 68 61 6e  tput(IntPtr chan
256e0 67 65 47 72 6f 75 70 2c 20 72 65 66 20 69 6e 74  geGroup, ref int
256f0 20 6e 44 61 74 61 2c 20 72 65 66 20 49 6e 74 50   nData, ref IntP
25700 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69  tr pData);....#i
25710 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25720 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25730 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25740 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25750 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25760 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25770 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25780 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25790 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
257a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
257b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
257c0 6f 69 64 20 73 71 6c 69 74 65 33 63 68 61 6e 67  oid sqlite3chang
257d0 65 67 72 6f 75 70 5f 64 65 6c 65 74 65 28 49 6e  egroup_delete(In
257e0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
257f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25800 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25810 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25820 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25830 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25840 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25850 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25860 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25870 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25880 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25890 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
258a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
258b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
258c0 61 6e 67 65 73 65 74 5f 61 70 70 6c 79 28 49 6e  angeset_apply(In
258d0 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6e 43 68  tPtr db, int nCh
258e0 61 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20  angeSet, IntPtr 
258f0 70 43 68 61 6e 67 65 53 65 74 2c 20 78 53 65 73  pChangeSet, xSes
25900 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
25910 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66  er, xSessionConf
25920 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20  lict xConflict, 
25930 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
25940 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25950 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25960 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25970 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25980 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25990 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
259a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
259b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
259c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
259d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
259e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
259f0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
25a00 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
25a10 67 65 73 65 74 5f 61 70 70 6c 79 5f 73 74 72 6d  geset_apply_strm
25a20 28 49 6e 74 50 74 72 20 64 62 2c 20 78 53 65 73  (IntPtr db, xSes
25a30 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
25a40 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53  , IntPtr pIn, xS
25a50 65 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69  essionFilter xFi
25a60 6c 74 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f  lter, xSessionCo
25a70 6e 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74  nflict xConflict
25a80 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  , IntPtr context
25a90 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25aa0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25ab0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25ac0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25ad0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25ae0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25af0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25b00 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25b10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25b20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25b30 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25b40 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25b50 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
25b60 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 5f 73  angeset_concat_s
25b70 74 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75  trm(xSessionInpu
25b80 74 20 78 49 6e 70 75 74 41 2c 20 49 6e 74 50 74  t xInputA, IntPt
25b90 72 20 70 49 6e 41 2c 20 78 53 65 73 73 69 6f 6e  r pInA, xSession
25ba0 49 6e 70 75 74 20 78 49 6e 70 75 74 42 2c 20 49  Input xInputB, I
25bb0 6e 74 50 74 72 20 70 49 6e 42 2c 20 78 53 65 73  ntPtr pInB, xSes
25bc0 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
25bd0 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
25be0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25bf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25c00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25c10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25c20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25c40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25c50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25c60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25c70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25c80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25c90 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25ca0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
25cb0 6e 67 65 73 65 74 5f 69 6e 76 65 72 74 5f 73 74  ngeset_invert_st
25cc0 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  rm(xSessionInput
25cd0 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20   xInput, IntPtr 
25ce0 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74  pIn, xSessionOut
25cf0 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74  put xOutput, Int
25d00 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
25d10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25d20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25d30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25d40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25d50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25d60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25d70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25d80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25d90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25da0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25db0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25dc0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25dd0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
25de0 73 74 61 72 74 5f 73 74 72 6d 28 72 65 66 20 49  start_strm(ref I
25df0 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
25e00 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
25e10 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e  nput, IntPtr pIn
25e20 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25e30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25e40 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25e50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25e60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25e70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25e80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25e90 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25ea0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25eb0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25ec0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25ed0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25ee0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65  orCode sqlite3se
25ef0 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 5f  ssion_changeset_
25f00 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65 73 73  strm(IntPtr sess
25f10 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74  ion, xSessionOut
25f20 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74  put xOutput, Int
25f30 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
25f40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25f50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25f60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25f70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25f80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25f90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25fa0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25fb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25fc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25fd0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25fe0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25ff0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
26000 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61  qlite3session_pa
26010 74 63 68 73 65 74 5f 73 74 72 6d 28 49 6e 74 50  tchset_strm(IntP
26020 74 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73  tr session, xSes
26030 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
26040 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
26050 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26060 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26070 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26080 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26090 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
260a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
260b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
260c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
260d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
260e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
260f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26100 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
26110 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
26120 6e 67 65 67 72 6f 75 70 5f 61 64 64 5f 73 74 72  ngegroup_add_str
26130 6d 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  m(IntPtr changeG
26140 72 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e 49 6e  roup, xSessionIn
26150 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50  put xInput, IntP
26160 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20  tr pIn);....#if 
26170 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26180 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26190 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
261a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
261b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
261c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
261d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
261e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
261f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
26200 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
26210 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
26220 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
26230 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
26240 6f 75 74 70 75 74 5f 73 74 72 6d 28 49 6e 74 50  output_strm(IntP
26250 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
26260 78 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78  xSessionOutput x
26270 4f 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70  Output, IntPtr p
26280 4f 75 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  Out);..#endif.. 
26290 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
262a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
262b0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
262c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26300 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26310 73 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61  sqlite interop a
26320 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43  pi calls (.NET C
26330 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
26340 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54   only)..#if PLAT
26350 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26360 45 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45  EWORK && !SQLITE
26370 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b  _STANDARD..    [
26380 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26390 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
263a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
263b0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
263c0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
263d0 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  d_interop(IntPtr
263e0 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f   db, ref long ro
263f0 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  wId);....    [Dl
26400 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26410 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
26420 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26430 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
26440 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f  mory_used_intero
26450 70 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  p(ref long bytes
26460 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
26470 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26480 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
26490 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
264a0 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  id sqlite3_memor
264b0 79 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65  y_highwater_inte
264c0 72 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61  rop(int resetFla
264d0 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65  g, ref long byte
264e0 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  s);....    [DllI
264f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26500 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
26510 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
26520 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
26530 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
26540 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  le_interop(IntPt
26550 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
26560 78 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  x, ref double va
26570 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
26580 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26590 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
265a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
265b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
265c0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
265d0 74 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t64_interop(IntP
265e0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
265f0 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c  ex, ref long val
26600 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
26610 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26620 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
26630 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
26640 74 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a  t64_interop")]..
26650 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26660 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
26670 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
26680 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69  e3_bind_uint64_i
26690 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
266a0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
266b0 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b  ef ulong value);
266c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
266d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
266e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
266f0 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
26700 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
26710 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
26720 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
26730 69 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c  index, ref doubl
26740 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
26750 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26760 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    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 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
26790 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69  3_column_int64_i
267a0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
267b0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
267c0 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  ef long value);.
267d0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
267e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
267f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26800 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
26810 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f  sqlite3_value_do
26820 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74  uble_interop(Int
26830 50 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c  Ptr p, ref doubl
26840 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  e value);....   
26850 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
26860 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
26870 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
26880 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
26890 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e  3_value_int64_in
268a0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
268b0 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
268c0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
268d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
268e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
268f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
26900 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
26910 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
26920 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
26930 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
26940 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
26950 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26960 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
26970 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
26980 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
26990 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
269a0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
269b0 72 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29  ref Int64 value)
269c0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
269d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
269e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
269f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
26a00 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
26a10 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
26a20 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20  dule_interop(.. 
26a30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
26a40 2c 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49  , IntPtr name, I
26a50 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69  ntPtr pModule, i
26a60 6e 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72  nt iVersion, xCr
26a70 65 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20  eate xCreate,.. 
26a80 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20         xConnect 
26a90 78 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49  xConnect, xBestI
26aa0 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c  ndex xBestIndex,
26ab0 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69   xDisconnect xDi
26ac0 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20  sconnect,..     
26ad0 20 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73     xDestroy xDes
26ae0 74 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65  troy, xOpen xOpe
26af0 6e 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  n, xClose xClose
26b00 2c 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65  , xFilter xFilte
26b10 72 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78  r,..        xNex
26b20 74 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45  t xNext, xEof xE
26b30 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c  of, xColumn xCol
26b40 75 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77  umn, xRowId xRow
26b50 49 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64  Id, xUpdate xUpd
26b60 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42  ate,..        xB
26b70 65 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79  egin xBegin, xSy
26b80 6e 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69  nc xSync, xCommi
26b90 74 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c  t xCommit, xRoll
26ba0 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d  back xRollback,.
26bb0 0a 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75  .        xFindFu
26bc0 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63  nction xFindFunc
26bd0 74 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52  tion, xRename xR
26be0 65 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e  ename, xSavepoin
26bf0 74 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20  t xSavepoint,.. 
26c00 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20         xRelease 
26c10 78 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62  xRelease, xRollb
26c20 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ackTo xRollbackT
26c30 6f 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  o, IntPtr pClien
26c40 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  tData,..        
26c50 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78  xDestroyModule x
26c60 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  DestroyModule);.
26c70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20  .#endif..    // 
26c80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26c90 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51  FRAMEWORK && !SQ
26ca0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
26cb0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
26cc0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
26cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d10 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26d20 4e 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73  Native Delegates
26d30 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
26d40 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66  RTUAL_TABLE..#if
26d50 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
26d60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
26d70 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
26d80 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
26d90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
26da0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
26db0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
26dc0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
26dd0 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
26de0 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
26df0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26e00 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
26e10 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
26e20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
26e30 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
26e40 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
26e50 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
26e60 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
26e70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26ec0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26ed0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26ee0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26ef0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26f00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26f10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26f20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26f30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26f40 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
26f50 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26f60 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
26f70 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
26f80 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
26f90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26fa0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
26fb0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
26fc0 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
26fd0 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
26fe0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27030 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
27040 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27050 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
27060 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
27070 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
27080 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27090 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
270a0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
270b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
270c0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
270d0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
270e0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
270f0 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b  r pIndex..    );
27100 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
27110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27150 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
27160 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27170 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
27180 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
27190 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
271a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
271b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
271c0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
271d0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73  teErrorCode xDis
271e0 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
271f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
27200 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27250 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27260 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27270 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27280 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
27290 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
272a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
272b0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
272c0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
272d0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
272e0 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
272f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
27300 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  b..    );....   
27310 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27360 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27370 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27380 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
27390 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
273a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
273b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
273c0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
273d0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
273e0 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20  Code xOpen(..   
273f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
27400 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
27410 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
27420 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
27430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27470 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27480 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
274a0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
274b0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
274c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
274d0 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
274e0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
274f0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
27500 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
27510 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
27520 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
27530 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
27580 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27590 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
275a0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
275b0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
275c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
275d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
275e0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
275f0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
27600 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
27610 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
27620 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
27630 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
27640 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
27650 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  tr,..        int
27660 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
27670 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
27680 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
27690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
276d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
276e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
276f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
27700 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
27710 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
27720 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27730 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
27740 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
27750 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
27760 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49  Next(..        I
27770 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
27780 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
27790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
277e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
277f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27800 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
27810 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
27820 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27830 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
27840 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
27850 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
27860 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
27870 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
27880 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
278d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
278e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
278f0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
27900 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
27910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27920 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
27930 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
27940 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
27950 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
27960 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27970 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
27980 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
27990 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
279a0 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  ndex..    );....
279b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
279c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27a00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27a10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27a20 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27a30 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27a40 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27a50 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27a60 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27a70 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27a80 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
27a90 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
27aa0 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
27ab0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
27ac0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
27b20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27b30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27b40 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27b50 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27b60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27b70 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27b80 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
27b90 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
27ba0 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
27bb0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
27bc0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
27bd0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
27be0 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
27bf0 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
27c00 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
27c10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27c60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27c70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27c80 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27c90 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27ca0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27cb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27cc0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27cd0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27ce0 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
27cf0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
27d00 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
27d10 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27d70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27d80 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
27d90 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
27da0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
27db0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
27dc0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
27dd0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
27de0 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
27df0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
27e00 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
27e10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
27e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27e80 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
27e90 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
27ea0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
27eb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
27ec0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
27ed0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
27ee0 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
27ef0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
27f00 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
27f10 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f60 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
27f70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27f80 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
27f90 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
27fa0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
27fb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
27fc0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
27fd0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
27fe0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
27ff0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49  back(..        I
28000 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
28010 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28060 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
28070 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28080 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
28090 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
280a0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
280b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
280c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
280d0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69  ublic delegate i
280e0 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
280f0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
28100 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
28110 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
28120 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d       IntPtr zNam
28130 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
28140 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
28150 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
28160 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73    ref IntPtr pUs
28170 65 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a  erData..    );..
28180 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
28190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
281e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
281f0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
28200 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
28210 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
28220 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28230 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
28240 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
28250 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d  ErrorCode xRenam
28260 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
28270 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
28280 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
28290 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
282a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
282f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28300 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28310 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
28320 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
28330 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28340 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
28350 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
28360 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
28370 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
28380 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
28390 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
283a0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
283b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
283c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
283d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
283e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
283f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28400 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
28410 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28420 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
28430 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
28440 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
28450 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
28460 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
28470 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
28480 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28490 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
284a0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
284b0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53  ..        int iS
284c0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b  avepoint..    );
284d0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
284e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28520 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
28530 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28540 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
28550 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
28560 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
28570 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
28580 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
28590 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
285a0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c  teErrorCode xRol
285b0 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
285c0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
285d0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
285e0 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
285f0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
28600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28640 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
28650 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
28660 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
28670 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
28680 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
28690 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
286a0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
286b0 63 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20  c delegate void 
286c0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49  xDestroyModule(I
286d0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
286e0 61 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  a);..#endif..   
286f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
28700 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28750 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61  ..    #region Na
28760 74 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d  tive Structures.
28770 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
28780 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
28790 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
287a0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
287b0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
287c0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
287d0 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b  e3_module..    {
287e0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 20 30  ..        /*   0
287f0 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
28800 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
28810 20 20 2f 2a 20 20 20 38 20 2a 2f 20 70 75 62 6c    /*   8 */ publ
28820 69 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61  ic xCreate xCrea
28830 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  te;..        /* 
28840 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   16 */ public xC
28850 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b  onnect xConnect;
28860 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 32 34  ..        /*  24
28870 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65 73 74   */ public xBest
28880 49 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78  Index xBestIndex
28890 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 33  ;..        /*  3
288a0 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 44 69 73  2 */ public xDis
288b0 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
288c0 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ect;..        /*
288d0 20 20 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 78    40 */ public x
288e0 44 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79  Destroy xDestroy
288f0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34  ;..        /*  4
28900 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 4f 70 65  8 */ public xOpe
28910 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20  n xOpen;..      
28920 20 20 2f 2a 20 20 35 36 20 2a 2f 20 70 75 62 6c    /*  56 */ publ
28930 69 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65  ic xClose xClose
28940 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 36  ;..        /*  6
28950 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6c  4 */ public xFil
28960 74 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20  ter xFilter;..  
28970 20 20 20 20 20 20 2f 2a 20 20 37 32 20 2a 2f 20        /*  72 */ 
28980 70 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65  public xNext xNe
28990 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  xt;..        /* 
289a0 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 45   80 */ public xE
289b0 6f 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20  of xEof;..      
289c0 20 20 2f 2a 20 20 38 38 20 2a 2f 20 70 75 62 6c    /*  88 */ publ
289d0 69 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75  ic xColumn xColu
289e0 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  mn;..        /* 
289f0 20 39 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52   96 */ public xR
28a00 6f 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20  owId xRowId;..  
28a10 20 20 20 20 20 20 2f 2a 20 31 30 34 20 2a 2f 20        /* 104 */ 
28a20 70 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78  public xUpdate x
28a30 55 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Update;..       
28a40 20 2f 2a 20 31 31 32 20 2a 2f 20 70 75 62 6c 69   /* 112 */ publi
28a50 63 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b  c xBegin xBegin;
28a60 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 32 30  ..        /* 120
28a70 20 2a 2f 20 70 75 62 6c 69 63 20 78 53 79 6e 63   */ public xSync
28a80 20 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20   xSync;..       
28a90 20 2f 2a 20 31 32 38 20 2a 2f 20 70 75 62 6c 69   /* 128 */ publi
28aa0 63 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69  c xCommit xCommi
28ab0 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  t;..        /* 1
28ac0 33 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f  36 */ public xRo
28ad0 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b  llback xRollback
28ae0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 34  ;..        /* 14
28af0 34 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6e  4 */ public xFin
28b00 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46  dFunction xFindF
28b10 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  unction;..      
28b20 20 20 2f 2a 20 31 35 32 20 2a 2f 20 70 75 62 6c    /* 152 */ publ
28b30 69 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61  ic xRename xRena
28b40 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  me;..        /* 
28b50 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76  The methods abov
28b60 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e  e are in version
28b70 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65   1 of the sqlite
28b80 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  3_module..      
28b90 20 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68     * object.  Th
28ba0 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f  ose below are fo
28bb0 72 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20  r version 2 and 
28bc0 67 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20  greater. */..   
28bd0 20 20 20 20 20 2f 2a 20 31 36 30 20 2a 2f 20 70       /* 160 */ p
28be0 75 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74  ublic xSavepoint
28bf0 20 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20   xSavepoint;..  
28c00 20 20 20 20 20 20 2f 2a 20 31 36 38 20 2a 2f 20        /* 168 */ 
28c10 70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20  public xRelease 
28c20 78 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20  xRelease;..     
28c30 20 20 20 2f 2a 20 31 37 36 20 2a 2f 20 70 75 62     /* 176 */ pub
28c40 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  lic xRollbackTo 
28c50 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20  xRollbackTo;..  
28c60 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
28c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28cb0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
28cc0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
28cd0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
28ce0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
28cf0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
28d00 5f 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20  _vtab..    {..  
28d10 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70        /*  0 */ p
28d20 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f  ublic IntPtr pMo
28d30 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  dule;..        /
28d40 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69  *  8 */ public i
28d50 6e 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c  nt nRef; /* NO L
28d60 4f 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20  ONGER USED */.. 
28d70 20 20 20 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20         /* 16 */ 
28d80 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45  public IntPtr zE
28d90 72 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rrMsg;..    }...
28da0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
28db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28df0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
28e00 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
28e10 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
28e20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
28e30 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ct sqlite3_vtab_
28e40 63 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20  cursor..    {.. 
28e50 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70         /* 0 */ p
28e60 75 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54  ublic IntPtr pVT
28e70 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ab;..    }....  
28e80 20 20 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 2f 2f 2f 2f  ////////////////
28eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28ed0 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f  .    [StructLayo
28ee0 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65  ut(LayoutKind.Se
28ef0 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20  quential)]..    
28f00 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20  internal struct 
28f10 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
28f20 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d  nstraint..    {.
28f30 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
28f40 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
28f50 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
28f60 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
28f70 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  exConstraint con
28f80 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
28f90 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28fa0 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
28fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28fc0 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
28fd0 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  int != null)..  
28fe0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
29000 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e  lumn = constrain
29010 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  t.iColumn;..    
29020 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d              op =
29030 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d   constraint.op;.
29040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29050 20 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72   usable = constr
29060 61 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20  aint.usable;..  
29070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54                iT
29080 65 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73  ermOffset = cons
29090 74 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73  traint.iTermOffs
290a0 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et;..           
290b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
290c0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
29110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30  ....        /* 0
29120 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
29130 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
29140 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20   /* 4 */ public 
29150 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
29160 72 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20  raintOp op;..   
29170 20 20 20 20 20 2f 2a 20 35 20 2a 2f 20 70 75 62       /* 5 */ pub
29180 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
29190 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 20 2a  ..        /* 8 *
291a0 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65  / public int iTe
291b0 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d  rmOffset;..    }
291c0 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
29210 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75  ///....    [Stru
29220 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
29230 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
29240 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
29250 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
29260 64 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20  dex_orderby..   
29270 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c   {..        publ
29280 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ic sqlite3_index
29290 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20  _orderby(..     
292a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
292b0 65 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42  exOrderBy orderB
292c0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
292d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
292e0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
292f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
29300 66 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75  f (orderBy != nu
29310 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
29320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29330 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72      iColumn = or
29340 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  derBy.iColumn;..
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29360 64 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64  desc = orderBy.d
29370 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  esc;..          
29380 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
29390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
293a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  /....        /* 
293f0 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  0 */ public int 
29400 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75  iColumn; /* Colu
29410 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20  mn number */..  
29420 20 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75        /* 4 */ pu
29430 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20  blic byte desc; 
29440 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45    /* True for DE
29450 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
29460 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  SC. */..    }...
29470 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
29480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
294a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
294b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
294c0 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c  ....    [StructL
294d0 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64  ayout(LayoutKind
294e0 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20  .Sequential)].. 
294f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
29500 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ct sqlite3_index
29510 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
29520 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
29530 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
29540 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
29550 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20  t_usage(..      
29560 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
29570 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
29580 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
29590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
295a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
295b0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
295c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
295d0 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
295e0 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
295f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29600 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49             argvI
29610 6e 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e  ndex = constrain
29620 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
29630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29640 20 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72     omit = constr
29650 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d  aintUsage.omit;.
29660 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29670 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29680 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
296d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
296e0 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a  nt argvIndex; /*
296f0 20 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69   if >0, constrai
29700 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
29710 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
29720 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
29730 20 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20   byte omit;     
29740 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  /* Do not code a
29750 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
29760 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
29770 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
297d0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
297e0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
297f0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
29800 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
29810 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
29820 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49   {..        /* I
29830 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20  nputs */..      
29840 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69    /*  0 */ publi
29850 63 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  c int nConstrain
29860 74 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20  t; /* Number of 
29870 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73  entries in aCons
29880 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20  traint */..     
29890 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c     /*  8 */ publ
298a0 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
298b0 72 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  raint;..        
298c0 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20  /* 16 */ public 
298d0 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20  int nOrderBy;   
298e0 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
298f0 74 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42  tries in aOrderB
29900 79 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  y */..        /*
29910 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e   24 */ public In
29920 74 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a  tPtr aOrderBy;..
29930 20 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75          /* Outpu
29940 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ts */..        /
29950 2a 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 49  * 32 */ public I
29960 6e 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e  ntPtr aConstrain
29970 74 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20  tUsage;..       
29980 20 2f 2a 20 34 30 20 2a 2f 20 70 75 62 6c 69 63   /* 40 */ public
29990 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20   int idxNum;    
299a0 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72         /* Number
299b0 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66   used to identif
299c0 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a  y the index */..
299d0 20 20 20 20 20 20 20 20 2f 2a 20 34 38 20 2a 2f          /* 48 */
299e0 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69   public string i
299f0 64 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a  dxStr;        /*
29a00 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c   String, possibl
29a10 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
29a20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a  sqlite3_malloc *
29a30 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 36  /..        /* 56
29a40 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
29a50 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
29a60 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
29a70 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
29a80 65 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d  ee() if true */.
29a90 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 30 20 2a  .        /* 60 *
29aa0 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64  / public int ord
29ab0 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f  erByConsumed;  /
29ac0 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
29ad0 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
29ae0 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
29af0 2f 2a 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20  /* 64 */ public 
29b00 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64  double estimated
29b10 43 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74  Cost; /* Estimat
29b20 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67  ed cost of using
29b30 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a   this index */..
29b40 20 20 20 20 20 20 20 20 2f 2a 20 37 32 20 2a 2f          /* 72 */
29b50 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74   public long est
29b60 69 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a  imatedRows;   /*
29b70 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   Estimated numbe
29b80 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e  r of rows return
29b90 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ed */..        /
29ba0 2a 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 53  * 80 */ public S
29bb0 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
29bc0 69 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73  idxFlags; /* Mas
29bd0 6b 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45  k of SQLITE_INDE
29be0 58 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a  X_SCAN_* flags *
29bf0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 38  /..        /* 88
29c00 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20   */ public long 
29c10 63 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20  colUsed;        
29c20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20   /* Input: Mask 
29c30 6f 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20  of columns used 
29c40 62 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d  by statement */.
29c50 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
29c60 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
29c70 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
29c80 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
29c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
29ce0 6e 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  n .NET Compact F
29cf0 72 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20  ramework (only) 
29d00 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43  CriticalHandle C
29d10 6c 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f  lass..#if PLATFO
29d20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29d30 4f 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ORK..  internal 
29d40 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43  abstract class C
29d50 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20  riticalHandle : 
29d60 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b  IDisposable..  {
29d70 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f  ..    private bo
29d80 6f 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20  ol _isClosed;.. 
29d90 20 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74     protected Int
29da0 50 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  Ptr handle;.... 
29db0 20 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69     protected Cri
29dc0 74 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50  ticalHandle(IntP
29dd0 74 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65  tr invalidHandle
29de0 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  Value)..    {.. 
29df0 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e       handle = in
29e00 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
29e10 3b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  ;..      _isClos
29e20 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ed = false;..   
29e30 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69   }....    ~Criti
29e40 63 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  calHandle()..   
29e50 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
29e60 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
29e70 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
29e80 76 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a  void Cleanup()..
29e90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
29ea0 28 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  (!IsClosed)..   
29eb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
29ec0 69 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74  is._isClosed = t
29ed0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  rue;..        if
29ee0 20 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20   (!IsInvalid).. 
29ef0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
29f00 20 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c      ReleaseHandl
29f10 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
29f20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
29f30 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
29f40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
29f50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
29f60 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29  lic void Close()
29f70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
29f80 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
29f90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
29fa0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
29fb0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
29fc0 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
29fd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f      }....    pro
29fe0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
29ff0 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
2a000 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
2a010 20 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75   {..      Cleanu
2a020 70 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  p();..    }.... 
2a030 20 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73     protected abs
2a040 74 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61  tract bool Relea
2a050 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  seHandle();.... 
2a060 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69     protected voi
2a070 64 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50  d SetHandle(IntP
2a080 74 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b  tr value)..    {
2a090 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d  ..      handle =
2a0a0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
2a0b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
2a0c0 64 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76  d SetHandleAsInv
2a0d0 61 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  alid()..    {.. 
2a0e0 20 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d       _isClosed =
2a0f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43   true;..      GC
2a100 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
2a110 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
2a120 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ...    public bo
2a130 6f 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20  ol IsClosed..   
2a140 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
2a150 72 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64  return _isClosed
2a160 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2a170 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
2a180 74 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64  t bool IsInvalid
2a190 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
2a1a0 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  et;..    }....  
2a1b0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e  }..#endif..  #en
2a1c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a220 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2a230 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2a240 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48   Class..    // H
2a250 61 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e  andles the unman
2a260 61 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f  aged database po
2a270 69 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69  inter, and provi
2a280 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
2a290 0d 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74  ..    // support
2a2a0 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e   for it...    in
2a2b0 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2a2c0 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ass SQLiteConnec
2a2d0 74 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69  tionHandle : Cri
2a2e0 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20  ticalHandle..   
2a2f0 20 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53   {..#if SQLITE_S
2a300 54 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54  TANDARD && !PLAT
2a310 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a320 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2a330 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
2a340 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65   void CloseConne
2a350 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a  ctionCallback(..
2a360 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2a370 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2a380 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
2a390 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  b);....        i
2a3a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43  nternal static C
2a3b0 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
2a3c0 6c 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e  llback closeConn
2a3d0 65 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20  ection =..      
2a3e0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2a3f0 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2a400 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2a410 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a460 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2a470 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a480 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2a490 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
2a4a0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
2a4b0 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
2a4c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a510 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2a520 72 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48  rivate bool ownH
2a530 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  andle;....      
2a540 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2a590 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
2a5a0 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
2a5b0 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69  ator IntPtr(SQLi
2a5c0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2a5d0 6c 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20  le db)..        
2a5e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2a5f0 66 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a  f (db != null)..
2a600 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2a610 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2a620 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2a640 63 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29  ck (db.syncRoot)
2a650 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2a660 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a680 20 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c   return db.handl
2a690 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2a6a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2a6b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a6c0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
2a6d0 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
2a6e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a730 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ///....        i
2a740 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f  nternal SQLiteCo
2a750 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49  nnectionHandle(I
2a760 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f  ntPtr db, bool o
2a770 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
2a780 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77         : this(ow
2a790 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2a7a0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2a7b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a7c0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a7d0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2a7e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2a7f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a800 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e          this.own
2a810 48 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64  Handle = ownHand
2a820 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
2a830 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64       SetHandle(d
2a840 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
2a850 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2a860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2a8c0 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
2a8d0 74 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20  tionHandle(bool 
2a8e0 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20  ownHandle)..    
2a8f0 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49          : base(I
2a900 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2a910 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e       {..#if COUN
2a920 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2a930 20 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e        if (ownHan
2a940 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
2a950 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2a960 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
2a970 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
2a980 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
2a990 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2a9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2aa00 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
2aa10 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
2aa20 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
2aa30 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2aa40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2aa60 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2aa70 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2aa80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2aa90 20 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64      if (!ownHand
2aaa0 6c 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b  le) return true;
2aab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2aac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
2aad0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2aae0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
2aaf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2ab00 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2ab10 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
2ab20 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
2ab30 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
2ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab50 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
2ab60 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
2ab70 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
2ab80 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
2ab90 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2aba0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2abb0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2abc0 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43            closeC
2abd0 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2abe0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
2abf0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2ac00 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48        if (localH
2ac10 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2ac20 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2ac30 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2ac40 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65  eBase.CloseConne
2ac50 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61  ction(this, loca
2ac60 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69  lHandle);..#endi
2ac70 66 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  f....#if !NET_CO
2ac80 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2ac90 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2aca0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2acb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2acc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2acd0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2ace0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2acf0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2ad00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ad10 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2ad20 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2ad30 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad50 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  "CloseConnection
2ad60 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
2ad70 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
2ad80 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2ad90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2ada0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2adc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2add0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
2ade0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2adf0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2ae00 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
2ae10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ae20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
2ae30 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2ae40 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2ae50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae70 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2ae80 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2ae90 28 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d  (this, handle);.
2aea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aeb0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2aec0 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  le(IntPtr.Zero);
2aed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2aee0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2aef0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2af00 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41  if..#if COUNT_HA
2af10 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2af20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65        Interlocke
2af30 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Decrement(ref 
2af40 44 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63  DebugData.connec
2af50 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  tionCount);..#en
2af60 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  dif..#if DEBUG..
2af70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af80 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2af90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2afa0 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    }..#if !NET_CO
2afb0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2afc0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2afd0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2afe0 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  iteException e).
2aff0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
2b000 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
2b010 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  eException)..#en
2b020 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2b030 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
2b040 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2b050 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2b060 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2b070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2b080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b090 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2b0a0 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2b0b0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2b0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b0d0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2b0e0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2b0f0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2b100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2b110 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
2b120 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
2b130 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
2b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b150 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
2b160 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2b170 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b180 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2b190 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2b1a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b1b0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2b1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2b1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
2b1e0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
2b1f0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2b200 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b210 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2b220 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2b230 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2b240 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b260 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
2b270 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
2b280 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b290 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2b2a0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2b2b0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2b2c0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2b2d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2b2e0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
2b2f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b300 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2b350 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2b360 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2b370 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
2b380 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2b390 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b3a0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
2b3b0 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
2b3c0 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f  ata.connectionCo
2b3d0 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  unt);..        }
2b3e0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2b3f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
2b450 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20  ol OwnHandle..  
2b460 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b470 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2b480 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2b490 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b4a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2b4b0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2b4c0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2b4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b4e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b4f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f          return o
2b500 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  wnHandle;..     
2b510 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2b520 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2b530 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2b540 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b580 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b590 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2b5a0 72 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61  ride bool IsInva
2b5b0 6c 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  lid..        {..
2b5c0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
2b5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2b5e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2b5f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2b600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2b610 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2b620 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2b630 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b650 65 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d  eturn (handle ==
2b660 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2b670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b680 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2b690 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2b6a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a  //////////////..
2b6f0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2b700 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
2b710 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74  ride string ToSt
2b720 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
2b730 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2b740 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2b750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2b760 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2b770 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2b780 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b790 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
2b7a0 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  dle.ToString();.
2b7b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b7c0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2b7d0 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  f..    }..    #e
2b7e0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b840 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
2b850 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2b860 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
2b870 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
2b880 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
2b890 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
2b8a0 65 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20  e statements... 
2b8b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
2b8c0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53  ed class SQLiteS
2b8d0 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a  tatementHandle :
2b8e0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2b8f0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54  .    {..#if PLAT
2b900 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b910 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
2b920 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79  nternal readonly
2b930 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2b940 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2b950 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2b960 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b9b0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2b9c0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2b9d0 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20  andle cnn;....  
2b9e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ba30 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2ba40 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2ba50 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2ba60 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
2ba70 61 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20  andle stmt)..   
2ba80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ba90 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
2baa0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2bab0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2bac0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bad0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2bae0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e       lock (stmt.
2baf0 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2bb00 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2bb10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2bb20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2bb30 20 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20   stmt.handle;.. 
2bb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2bb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2bb60 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2bb70 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2bb80 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2bb90 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2bbe0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2bbf0 61 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  al SQLiteStateme
2bc00 6e 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43  ntHandle(SQLiteC
2bc10 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
2bc20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74  cnn, IntPtr stmt
2bc30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2bc40 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2bc50 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2bc60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2bc70 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2bc80 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2bc90 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2bca0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2bcb0 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20         this.cnn 
2bcc0 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20  = cnn;..        
2bcd0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2bce0 65 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20  e(stmt);..      
2bcf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2bd00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2bd60 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53   private SQLiteS
2bd70 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29  tatementHandle()
2bd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2bd90 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
2bda0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2bdb0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
2bdc0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
2bdd0 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
2bde0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2bdf0 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b  statementCount);
2be00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2be10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be40 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2be70 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
2be80 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ride bool Releas
2be90 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  eHandle()..     
2bea0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2beb0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2bec0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2bed0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2bee0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2bef0 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63        IntPtr loc
2bf00 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72  alHandle = Inter
2bf10 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28  locked.Exchange(
2bf20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf30 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65        ref handle
2bf40 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
2bf50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf60 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64     if (localHand
2bf70 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2bf80 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2bf90 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
2bfa0 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65  se.FinalizeState
2bfb0 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48  ment(cnn, localH
2bfc0 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  andle);....#if !
2bfd0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2bfe0 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c000 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2c010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c020 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2c030 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
2c040 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
2c050 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c070 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
2c080 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
2c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0a0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
2c0b0 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20  tatement: {0}", 
2c0c0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f  localHandle)); /
2c0d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2c100 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2c110 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c120 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
2c130 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  if..#else..     
2c140 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2c150 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
2c160 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c180 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d     if (handle !=
2c190 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2c1d0 4c 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a  LiteBase.Finaliz
2c1e0 65 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20  eStatement(cnn, 
2c1f0 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
2c200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c210 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
2c220 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2c230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2c240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c250 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
2c260 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2c280 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2c290 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2c2a0 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e  ta.statementCoun
2c2b0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
2c2c0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2c2d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2c2e0 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
2c2f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2c300 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2c310 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2c320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
2c330 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
2c340 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
2c350 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2c360 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
2c370 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
2c380 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2c390 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
2c3a0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
2c3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c3c0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2c3d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2c3f0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
2c400 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
2c410 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
2c420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c430 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
2c440 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
2c450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c460 20 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65         "Finalize
2c470 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20  Statement: {0}, 
2c480 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c  exception: {1}",
2c490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c4a0 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65            handle
2c4b0 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
2c4c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2c4d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2c4e0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c510 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2c520 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c530 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2c540 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2c550 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2c560 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2c580 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2c590 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2c5a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2c5c0 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64  tHandleAsInvalid
2c5d0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2c5e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2c5f0 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47      }..#if DEBUG
2c600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2c610 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c  turn false;..#el
2c620 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2c630 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65  return true;..#e
2c640 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2c650 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6a0 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  //....#if COUNT_
2c6b0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2c6c0 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65  public int WasRe
2c6d0 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20  leasedOk()..    
2c6e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c6f0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c     return Interl
2c700 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2c710 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
2c720 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
2c730 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2c740 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c790 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2c7a0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2c7b0 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
2c7c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c7d0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2c7e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2c7f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c800 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2c810 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2c820 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2c830 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2c840 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c850 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c860 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
2c870 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2c880 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2c890 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2c8a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2c8b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2c900 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2c910 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2c920 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
2c930 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2c940 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2c950 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2c960 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2c970 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2c980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c9a0 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
2c9b0 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
2c9c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c9d0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2c9e0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2c9f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
2ca00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
2ca50 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b  egion SQLiteBack
2ca60 75 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a  upHandle Class..
2ca70 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20      // Provides 
2ca80 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70  finalization sup
2ca90 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67  port for unmanag
2caa0 65 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ed SQLite backup
2cab0 20 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69   objects...    i
2cac0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
2cad0 6c 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75  lass SQLiteBacku
2cae0 70 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  pHandle : Critic
2caf0 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
2cb00 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2cb10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2cb20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2cb30 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
2cb40 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
2cb50 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
2cb60 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2cbc0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2cbd0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2cbe0 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
2cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2cc40 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2cc50 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
2cc60 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42  r IntPtr(SQLiteB
2cc70 61 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b  ackupHandle back
2cc80 75 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  up)..        {..
2cc90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2cca0 62 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d  backup != null).
2ccb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ccc0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2ccd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2cce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2ccf0 6f 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63  ock (backup.sync
2cd00 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd30 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63        return bac
2cd40 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20  kup.handle;..   
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2cd60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2cd70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2cd80 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
2cd90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2cda0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2cdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2cdf0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2ce00 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
2ce10 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
2ce20 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
2ce30 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a  IntPtr backup)..
2ce40 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
2ce50 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
2ce60 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2ce70 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2ce80 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2ce90 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2cea0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2ceb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2cec0 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63      this.cnn = c
2ced0 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nn;..           
2cee0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62       SetHandle(b
2cef0 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20  ackup);..       
2cf00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2cf10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2cf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2cf70 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61  private SQLiteBa
2cf80 63 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20  ckupHandle()..  
2cf90 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
2cfa0 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
2cfb0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
2cfc0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2cfd0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2cfe0 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
2cff0 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
2d000 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
2d010 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
2d020 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d070 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
2d080 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
2d090 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
2d0a0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2d0b0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2d0c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2d0d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2d0e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2d100 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
2d110 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
2d120 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
2d130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d140 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
2d150 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
2d160 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2d170 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
2d180 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2d190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1a0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
2d1b0 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f  shBackup(cnn, lo
2d1c0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
2d1d0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2d1e0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2d1f0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2d200 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2d210 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d230 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2d240 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2d250 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d270 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2d280 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2d290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d2a0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73            "Finis
2d2b0 68 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c  hBackup: {0}", l
2d2c0 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
2d2d0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2d2e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2d300 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
2d310 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d320 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2d330 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
2d340 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2d350 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
2d360 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d380 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
2d390 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2d3d0 69 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61  iteBase.FinishBa
2d3e0 63 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  ckup(cnn, handle
2d3f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d400 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
2d410 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
2d420 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2d430 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2d440 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2d450 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
2d460 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2d470 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
2d480 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2d490 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63  ef DebugData.bac
2d4a0 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  kupCount);..#end
2d4b0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d4d0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2d4e0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2d4f0 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
2d500 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2d510 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2d520 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
2d530 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
2d540 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2d550 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2d560 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
2d570 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2d580 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
2d590 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2d5a0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2d5b0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5e0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
2d5f0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
2d600 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
2d610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d620 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
2d630 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2d640 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
2d660 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
2d670 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
2d680 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2d690 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
2d6a0 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
2d6b0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2d6c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d6d0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d700 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2d710 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2d720 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2d730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d740 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2d750 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d770 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2d780 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2d790 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d7b0 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
2d7c0 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
2d7d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2d7e0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
2d7f0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2d800 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
2d810 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2d820 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2d830 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2d840 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2d850 2f 2f 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 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
2d8a0 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2d8b0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
2d8c0 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
2d8d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d8e0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
2d8f0 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2d900 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2d910 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20  backupCount);.. 
2d920 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2d930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d980 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2d990 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
2d9a0 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
2d9b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d9c0 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
2d9d0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2d9e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2d9f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2da00 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2da10 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2da20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2da30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2da40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2da50 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
2da60 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
2da70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2da80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2da90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2daa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2dab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dae0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2daf0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
2db00 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
2db10 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
2db20 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2db30 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2db40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2db50 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2db60 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2db70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db90 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
2dba0 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
2dbb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2dbc0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
2dbd0 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
2dbe0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
2dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
2dc40 67 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48  gion SQLiteBlobH
2dc50 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20  andle Class..   
2dc60 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e   // Provides fin
2dc70 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72  alization suppor
2dc80 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20  t for unmanaged 
2dc90 53 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65  SQLite blob obje
2dca0 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
2dcb0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
2dcc0 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
2dcd0 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
2dce0 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
2dcf0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2dd00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2dd10 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
2dd20 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
2dd30 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
2dd40 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
2dd50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2dd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2dda0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2ddb0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2ddc0 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
2ddd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2de20 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2de30 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
2de40 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
2de50 72 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64  r(SQLiteBlobHand
2de60 6c 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  le blob)..      
2de70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2de80 20 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c   if (blob != nul
2de90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2dea0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2deb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2dec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ded0 20 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e    lock (blob.syn
2dee0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2def0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2df10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c         return bl
2df20 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  ob.handle;..    
2df30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2df40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2df50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2df60 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2df70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2df80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2df90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2dfd0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2dfe0 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
2dff0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
2e000 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74  nHandle cnn, Int
2e010 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20  Ptr blob)..     
2e020 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
2e030 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2e040 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2e050 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2e060 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2e070 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2e080 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e0a0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
2e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0c0 53 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b  SetHandle(blob);
2e0d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2e0e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2e0f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e140 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2e150 20 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c   SQLiteBlobHandl
2e160 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
2e170 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
2e180 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
2e190 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2e1a0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  E..            I
2e1b0 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
2e1c0 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2e1d0 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a  ta.blobCount);..
2e1e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e1f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2e200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e240 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2e250 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69  protected overri
2e260 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48  de bool ReleaseH
2e270 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
2e280 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e290 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2e2a0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
2e2b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2e2c0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2e2d0 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c      IntPtr local
2e2e0 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f  Handle = Interlo
2e2f0 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a  cked.Exchange(..
2e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e310 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20      ref handle, 
2e320 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d  IntPtr.Zero);...
2e330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e340 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
2e350 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2e360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e370 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2e380 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20  .CloseBlob(cnn, 
2e390 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d  localHandle);...
2e3a0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
2e3b0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
2e3c0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
2e3d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2e3e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e400 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
2e410 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2e420 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e440 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
2e450 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
2e460 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2e470 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
2e480 73 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f  seBlob: {0}", lo
2e490 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
2e4a0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2e4b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2e4d0 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2e4e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e4f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2e500 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2e510 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2e520 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
2e530 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e550 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
2e560 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e580 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e590 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2e5a0 74 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62  teBase.CloseBlob
2e5b0 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  (cnn, handle);..
2e5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5d0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2e5e0 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
2e5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e600 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e610 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2e620 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
2e630 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2e640 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2e650 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2e660 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75  ebugData.blobCou
2e670 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
2e680 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
2e690 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e6a0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2e6b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
2e6c0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2e6d0 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2e6e0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
2e6f0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2e700 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
2e710 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
2e720 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
2e730 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
2e740 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2e750 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2e760 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2e770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e780 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2e790 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2e7b0 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
2e7c0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
2e7d0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
2e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7f0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2e800 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e820 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c          "CloseBl
2e830 6f 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  ob: {0}, excepti
2e840 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
2e850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e860 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
2e870 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2e880 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2e890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8a0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2e8b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e8c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2e8d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2e8e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2e8f0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
2e900 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2e910 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2e920 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2e930 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2e940 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2e950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e960 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e970 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2e980 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
2e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2e9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e9b0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2e9c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2e9d0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
2e9e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e9f0 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2ea00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ea10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ea20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2ea60 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2ea70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2ea80 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
2ea90 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
2eaa0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2eab0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
2eac0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2ead0 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
2eae0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
2eaf0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2eb00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2eb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2eb50 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2eb60 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
2eb70 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
2eb80 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2eba0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2ebb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2ebd0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2ebe0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2ebf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ec00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ec10 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
2ec20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ec40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ec50 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ec60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ec70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ecb0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2ecc0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2ecd0 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
2ece0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
2ecf0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2ed00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2ed10 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2ed20 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2ed30 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2ed40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2ed50 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
2ed60 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
2ed70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2ed80 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2ed90 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
2eda0 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a              dregion..}..