System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact dfc001321256b802293cff079c6de9f3af9ff030:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 54 52 41  tion;....#if TRA
0180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 20 7c 7c 20  CE_DETECTION || 
0190: 54 52 41 43 45 5f 53 48 41 52 45 44 20 7c 7c 20  TRACE_SHARED || 
01a0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c 7c  TRACE_PRELOAD ||
01b0: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
01c0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69   using System.Di
01d0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e 64  agnostics;..#end
01e0: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
01f0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
0200: 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69  .Generic;..  usi
0210: 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20  ng System.IO;.. 
0220: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65   using System.Re
0230: 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  flection;....#if
0240: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0250: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0260: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0270: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02a0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02b0: 28 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34  (NET_40 || NET_4
02c0: 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
02d0: 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
02e0: 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
02f0: 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
0300: 37 20 7c 7c 20 4e 45 54 5f 34 37 31 29 20 26 26  7 || NET_471) &&
0310: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0320: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0330: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0340: 69 6d 65 2e 56 65 72 73 69 6f 6e 69 6e 67 3b 0d  ime.Versioning;.
0350: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69  .#endif....  usi
0360: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
0370: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
0380: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
0390: 4b 20 7c 7c 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  K || COUNT_HANDL
03a0: 45 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  E..  using Syste
03b0: 6d 2e 54 68 72 65 61 64 69 6e 67 3b 0d 0a 23 65  m.Threading;..#e
03c0: 6e 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20  ndif....  using 
03d0: 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20  System.Xml;.... 
03e0: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 44   #region Debug D
03f0: 61 74 61 20 53 74 61 74 69 63 20 43 6c 61 73 73  ata Static Class
0400: 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
0410: 4c 45 20 7c 7c 20 44 45 42 55 47 0d 0a 20 20 2f  LE || DEBUG..  /
0420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0430: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 65  /// This class e
0440: 6e 63 61 70 73 75 6c 61 74 65 73 20 73 6f 6d 65  ncapsulates some
0450: 20 74 72 61 63 6b 69 6e 67 20 64 61 74 61 20 74   tracking data t
0460: 68 61 74 20 69 73 20 75 73 65 64 20 66 6f 72 20  hat is used for 
0470: 64 65 62 75 67 67 69 6e 67 0d 0a 20 20 2f 2f 2f  debugging..  ///
0480: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0490: 70 6f 73 65 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  poses...  /// </
04a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
04b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
04c0: 73 20 44 65 62 75 67 44 61 74 61 0d 0a 20 20 7b  s DebugData..  {
04d0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
04e0: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69  Private Data..#i
04f0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0500: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0510: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63      /// This loc
0520: 6b 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f  k is used to pro
0530: 74 65 63 74 20 73 65 76 65 72 61 6c 20 73 74 61  tect several sta
0540: 74 69 63 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20  tic fields...   
0550: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0560: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0570: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0580: 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53 79   object staticSy
0590: 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
05a0: 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
05b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
0610: 6f 6e 20 43 72 69 74 69 63 61 6c 20 48 61 6e 64  on Critical Hand
0620: 6c 65 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  le Counts (Debug
0630: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0640: 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
0650: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
0660: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 63  // NOTE: These c
0670: 6f 75 6e 74 73 20 72 65 70 72 65 73 65 6e 74 20  ounts represent 
0680: 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
0690: 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 0d   of outstanding.
06a0: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
06b0: 28 6e 6f 6e 2d 64 69 73 70 6f 73 65 64 29 20 43  (non-disposed) C
06c0: 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 64 65  riticalHandle de
06d0: 72 69 76 65 64 20 6f 62 6a 65 63 74 20 69 6e 73  rived object ins
06e0: 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 2f 2f  tances..      //
06f0: 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20 62         created b
0700: 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 61  y this library a
0710: 6e 64 20 61 72 65 20 70 72 69 6d 61 72 69 6c 79  nd are primarily
0720: 20 66 6f 72 20 75 73 65 20 62 79 0d 0a 20 20 20   for use by..   
0730: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
0740: 74 65 73 74 20 73 75 69 74 65 2e 20 20 54 68 65  test suite.  The
0750: 73 65 20 63 6f 75 6e 74 73 20 61 72 65 20 69 6e  se counts are in
0760: 63 72 65 6d 65 6e 74 65 64 20 62 79 20 74 68 65  cremented by the
0770: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
0780: 20 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6e 73   associated cons
0790: 74 72 75 63 74 6f 72 73 20 61 6e 64 20 61 72 65  tructors and are
07a0: 20 64 65 63 72 65 6d 65 6e 74 65 64 20 75 70 6f   decremented upo
07b0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  n the..      // 
07c0: 20 20 20 20 20 20 73 75 63 63 65 73 73 66 75 6c        successful
07d0: 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74   completion of t
07e0: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 52 65  he associated Re
07f0: 6c 65 61 73 65 48 61 6e 64 6c 65 0d 0a 20 20 20  leaseHandle..   
0800: 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 74 68     //       meth
0810: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  ods...      //..
0820: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
0830: 74 61 74 69 63 20 69 6e 74 20 63 6f 6e 6e 65 63  tatic int connec
0840: 74 69 6f 6e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20  tionCount;..    
0850: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0860: 63 20 69 6e 74 20 73 74 61 74 65 6d 65 6e 74 43  c int statementC
0870: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0880: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0890: 20 62 61 63 6b 75 70 43 6f 75 6e 74 3b 0d 0a 20   backupCount;.. 
08a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
08b0: 61 74 69 63 20 69 6e 74 20 62 6c 6f 62 43 6f 75  atic int blobCou
08c0: 6e 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  nt;..#endif..   
08d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
08e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
0940: 6e 20 53 65 74 74 69 6e 67 73 20 52 65 61 64 20  n Settings Read 
0950: 43 6f 75 6e 74 73 20 28 44 65 62 75 67 20 42 75  Counts (Debug Bu
0960: 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44  ild Only)..#if D
0970: 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  EBUG..      /// 
0980: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0990: 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f   /// This dictio
09a0: 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65 20  nary stores the 
09b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
09c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
09d0: 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
09e0: 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 2e 20 20   /// settings.  
09f0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0a00: 20 69 73 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65   is only recorde
0a10: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0a20: 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  in the..      //
0a30: 2f 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  / "Debug" build 
0a40: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0a50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0a70: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0a80: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0a90: 74 3e 20 73 65 74 74 69 6e 67 52 65 61 64 43 6f  t> settingReadCo
0aa0: 75 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  unts;....      /
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
0b20: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
0b30: 73 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74  s the read count
0b40: 73 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d  s for the runtim
0b50: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  e configuration.
0b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69  .      /// setti
0b70: 6e 67 73 20 76 69 61 20 74 68 65 20 58 4d 4c 20  ngs via the XML 
0b80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
0b90: 6c 65 2e 20 20 54 68 69 73 20 69 6e 66 6f 72 6d  le.  This inform
0ba0: 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 0d 0a 20  ation is only.. 
0bb0: 20 20 20 20 20 2f 2f 2f 20 72 65 63 6f 72 64 65       /// recorde
0bc0: 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20  d when compiled 
0bd0: 69 6e 20 74 68 65 20 22 44 65 62 75 67 22 20 62  in the "Debug" b
0be0: 75 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69  uild configurati
0bf0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
0c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0c10: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0c20: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0c30: 67 2c 20 69 6e 74 3e 20 73 65 74 74 69 6e 67 46  g, int> settingF
0c40: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 3b 0d 0a  ileReadCounts;..
0c50: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
0c60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0cc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 74 68       #region Oth
0cd0: 65 72 20 43 6f 75 6e 74 73 20 28 44 65 62 75 67  er Counts (Debug
0ce0: 20 42 75 69 6c 64 20 4f 6e 6c 79 29 0d 0a 23 69   Build Only)..#i
0cf0: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f  f DEBUG..      /
0d00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0d10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
0d20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 6d  tionary stores m
0d30: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 63 6f 75  iscellaneous cou
0d40: 6e 74 73 20 75 73 65 64 20 66 6f 72 20 64 65 62  nts used for deb
0d50: 75 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  ugging..      //
0d60: 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 54 68 69  / purposes.  Thi
0d70: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  s information is
0d80: 20 6f 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77   only recorded w
0d90: 68 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20  hen compiled in 
0da0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22  the..      /// "
0db0: 44 65 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e  Debug" build con
0dc0: 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20  figuration...   
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0de0: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
0df0: 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61   static Dictiona
0e00: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20  ry<string, int> 
0e10: 6f 74 68 65 72 43 6f 75 6e 74 73 3b 0d 0a 23 65  otherCounts;..#e
0e20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64  ndif..      #end
0e30: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 23 65  region..      #e
0e40: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0e50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0ea0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
0eb0: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  lic Methods..#if
0ec0: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 2f 2f   DEBUG..      //
0ed0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0ee0: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 64     /// Creates d
0ef0: 69 63 74 69 6f 6e 61 72 69 65 73 20 75 73 65 64  ictionaries used
0f00: 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 72 65   to store the re
0f10: 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 65 61  ad counts for ea
0f20: 63 68 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f  ch of..      ///
0f30: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0f40: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
0f50: 6e 67 73 2e 20 20 54 68 65 73 65 20 6e 75 6d 62  ngs.  These numb
0f60: 65 72 73 20 61 72 65 20 75 73 65 64 20 66 6f 72  ers are used for
0f70: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 65 62 75  ..      /// debu
0f80: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
0f90: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
0fa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
0fb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75  mmary>..      pu
0fc0: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
0fd0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
0fe0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0ff0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
1000: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1010: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1020: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1030: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
1040: 72 65 61 74 65 20 74 68 65 20 64 69 63 74 69 6f  reate the dictio
1050: 6e 61 72 69 65 73 20 6f 66 20 73 74 61 74 69 73  naries of statis
1060: 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c 0d 0a  tics that will..
1070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1080: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 20 74         contain t
1090: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d  he number of tim
10a0: 65 73 20 65 61 63 68 20 73 65 74 74 69 6e 67 20  es each setting 
10b0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
10c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
10d0: 73 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20  s been read...  
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1100: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
1110: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  settingReadCount
1140: 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
1150: 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28  ry<string, int>(
1160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1170: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 46      if (settingF
1180: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20 3d 3d  ileReadCounts ==
1190: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
11a0: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
11b0: 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 20  gFileReadCounts 
11c0: 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
11d0: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b  <string, int>();
11e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11f0: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
1200: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
1220: 68 65 72 43 6f 75 6e 74 73 20 3d 20 6e 65 77 20  herCounts = new 
1230: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
1240: 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 20 20 20 20  g, int>();..    
1250: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1260: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
1270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
12c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12d0: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68    /// Queries th
12e0: 65 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f  e read counts fo
12f0: 72 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f  r the runtime co
1300: 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74  nfiguration sett
1310: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
1320: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
1330: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
1340: 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e  gging and testin
1350: 67 20 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e  g purposes only.
1360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1380: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1390: 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20  iaFile">..      
13a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
13b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
13c0: 74 74 69 6e 67 73 20 77 65 72 65 20 72 65 61 64  ttings were read
13d0: 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20   from the XML.. 
13e0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
13f0: 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20  ration file...  
1400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
1420: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
1430: 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20 73   A copy of the s
1440: 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 74 68  tatistics for th
1450: 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e 74  e specified runt
1460: 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ime configuratio
1470: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74  n..      /// set
1480: 74 69 6e 67 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  tings -OR- null 
1490: 69 66 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  if they are not 
14a0: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
14b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
14c0: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73  ..      public s
14d0: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74  tatic object Get
14e0: 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74  SettingReadCount
14f0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f  s(..          bo
1500: 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20  ol viaFile..    
1510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
1520: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
1530: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
1540: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1560: 20 28 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20   (viaFile)..    
1570: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1590: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
15a0: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
15b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15d0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
15e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15f0: 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  n new Dictionary
1600: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 73 65  <string, int>(se
1610: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1620: 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nts);..         
1630: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1640: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1650: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1670: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1680: 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  unts == null).. 
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
16b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
16d0: 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
16e0: 69 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e  ing, int>(settin
16f0: 67 52 65 61 64 43 6f 75 6e 74 73 29 3b 0d 0a 20  gReadCounts);.. 
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1710: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1720: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1780: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1790: 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73        /// Clears
17a0: 20 74 68 65 20 72 65 61 64 20 63 6f 75 6e 74 73   the read counts
17b0: 20 66 6f 72 20 74 68 65 20 72 75 6e 74 69 6d 65   for the runtime
17c0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
17d0: 65 74 74 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  ettings...      
17e0: 2f 2f 2f 20 54 68 65 73 65 20 6e 75 6d 62 65 72  /// These number
17f0: 73 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64  s are used for d
1800: 65 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73  ebugging and tes
1810: 74 69 6e 67 20 70 75 72 70 6f 73 65 73 20 6f 6e  ting purposes on
1820: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
1830: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1840: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1850: 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20 20  ="viaFile">..   
1860: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1870: 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1880: 20 73 65 74 74 69 6e 67 73 20 77 65 72 65 20 72   settings were r
1890: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
18a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
18b0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d  iguration file..
18c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
18d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
18e0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
18f0: 65 61 72 53 65 74 74 69 6e 67 52 65 61 64 43 6f  earSettingReadCo
1900: 75 6e 74 73 28 0d 0a 20 20 20 20 20 20 20 20 20  unts(..         
1910: 20 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20   bool viaFile.. 
1920: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1930: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c    {..          l
1940: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
1950: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
1960: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1970: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a0: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
19b0: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
19c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74              sett
19e0: 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74  ingFileReadCount
19f0: 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20  s.Clear();..    
1a00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1a10: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
1a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a40: 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67 52      if (settingR
1a50: 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c  eadCounts != nul
1a60: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a70: 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e            settin
1a80: 67 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65 61  gReadCounts.Clea
1a90: 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
1aa0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ab0: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1ac0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
1b20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
1b30: 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68 65 20   Increments the 
1b40: 72 65 61 64 20 63 6f 75 6e 74 20 66 6f 72 20 74  read count for t
1b50: 68 65 20 73 70 65 63 69 66 69 65 64 20 72 75 6e  he specified run
1b60: 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
1b70: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65  on..      /// se
1b80: 74 74 69 6e 67 2e 20 20 54 68 65 73 65 20 6e 75  tting.  These nu
1b90: 6d 62 65 72 73 20 61 72 65 20 75 73 65 64 20 66  mbers are used f
1ba0: 6f 72 20 64 65 62 75 67 67 69 6e 67 20 61 6e 64  or debugging and
1bb0: 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65   testing purpose
1bc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 6c  s..      /// onl
1bd0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
1be0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bf0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c00: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
1c10: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
1c20: 68 65 20 73 65 74 74 69 6e 67 20 62 65 69 6e 67  he setting being
1c30: 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   read...      //
1c40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c60: 65 3d 22 76 69 61 46 69 6c 65 22 3e 0d 0a 20 20  e="viaFile">..  
1c70: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1c80: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
1c90: 64 20 73 65 74 74 69 6e 67 20 69 73 20 62 65 69  d setting is bei
1ca0: 6e 67 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  ng read from the
1cb0: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   XML..      /// 
1cc0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
1cd0: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
1ce0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 70  /param>..      p
1cf0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1d00: 64 20 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  d IncrementSetti
1d10: 6e 67 52 65 61 64 43 6f 75 6e 74 28 0d 0a 20 20  ngReadCount(..  
1d20: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1d30: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1d40: 62 6f 6f 6c 20 76 69 61 46 69 6c 65 0d 0a 20 20  bool viaFile..  
1d50: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1d60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f   {..          lo
1d70: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
1d80: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ot)..          {
1d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1da0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1db0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70 64 61 74    // NOTE: Updat
1dc0: 65 20 73 74 61 74 69 73 74 69 63 73 20 66 6f 72  e statistics for
1dd0: 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 76 61   this setting va
1de0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  lue...          
1df0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1e00: 20 20 20 20 20 20 69 66 20 28 76 69 61 46 69 6c        if (viaFil
1e10: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
1e20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e30: 20 20 20 20 20 20 20 69 66 20 28 73 65 74 74 69         if (setti
1e40: 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73  ngFileReadCounts
1e50: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b        int count;
1e90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ea0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1eb0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
1ec0: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
1ed0: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
1ee0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f00: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f10: 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f 75 6e 74  ts[name] = count
1f20: 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20   + 1;..         
1f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1f40: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
1f60: 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75 6e  tingFileReadCoun
1f70: 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29 3b  ts.Add(name, 1);
1f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fa0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fb0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1fc0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1fe0: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1ff0: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
2000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2020: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2030: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2050: 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f 75   (settingReadCou
2060: 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  nts.TryGetValue(
2070: 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74 29  name, out count)
2080: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
20a0: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 5b 6e  tingReadCounts[n
20b0: 61 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31  ame] = count + 1
20c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20d0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67           setting
2100: 52 65 61 64 43 6f 75 6e 74 73 2e 41 64 64 28 6e  ReadCounts.Add(n
2110: 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  ame, 1);..      
2120: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2140: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21c0: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
21d0: 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73 2e 20  s the counters. 
21e0: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
21f0: 72 65 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  re used for debu
2200: 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20  gging and..     
2210: 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70 75 72   /// testing pur
2220: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
2230: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2240: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
2250: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
2260: 2f 20 41 20 63 6f 70 79 20 6f 66 20 74 68 65 20  / A copy of the 
2270: 63 6f 75 6e 74 65 72 73 20 2d 4f 52 2d 20 6e 75  counters -OR- nu
2280: 6c 6c 20 69 66 20 74 68 65 79 20 61 72 65 20 6e  ll if they are n
2290: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
22a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
22b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ns>..      publi
22c0: 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  c static object 
22d0: 47 65 74 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  GetOtherCounts()
22e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
22f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
2300: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2310: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2320: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2330: 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  Counts == null).
2340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2350: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
2360: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2370: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63 74   return new Dict
2380: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69  ionary<string, i
2390: 6e 74 3e 28 6f 74 68 65 72 43 6f 75 6e 74 73 29  nt>(otherCounts)
23a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
23b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2410: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6c 65  >..      /// Cle
2430: 61 72 73 20 74 68 65 20 63 6f 75 6e 74 65 72 73  ars the counters
2440: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
2450: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
2460: 62 75 67 67 69 6e 67 20 61 6e 64 0d 0a 20 20 20  bugging and..   
2470: 20 20 20 2f 2f 2f 20 74 65 73 74 69 6e 67 20 70     /// testing p
2480: 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20  urposes only... 
2490: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24a0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ry>..      publi
24b0: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c  c static void Cl
24c0: 65 61 72 4f 74 68 65 72 43 6f 75 6e 74 73 28 29  earOtherCounts()
24d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
24e0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
24f0: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
2500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2510: 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65 72         if (other
2520: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
2530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2540: 20 20 20 6f 74 68 65 72 43 6f 75 6e 74 73 2e 43     otherCounts.C
2550: 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20  lear();..       
2560: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
2570: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
2580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
25d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
25e0: 2f 2f 20 49 6e 63 72 65 6d 65 6e 74 73 20 74 68  // Increments th
25f0: 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 75 6e  e specified coun
2600: 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ter...      /// 
2610: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2620: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2630: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
2640: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
2650: 20 74 68 65 20 63 6f 75 6e 74 65 72 20 62 65 69   the counter bei
2660: 6e 67 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0d  ng incremented..
2670: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
2680: 61 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  am>..      publi
2690: 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  c static void In
26a0: 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e  crementOtherCoun
26b0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  t(..          st
26c0: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
26d0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
26e0: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
26f0: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
2700: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2720: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 21 3d 20  (otherCounts != 
2730: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2740: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2750: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
2760: 75 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  unt;....        
2770: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 74            if (ot
2780: 68 65 72 43 6f 75 6e 74 73 2e 54 72 79 47 65 74  herCounts.TryGet
2790: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20  Value(name, out 
27a0: 63 6f 75 6e 74 29 29 0d 0a 20 20 20 20 20 20 20  count))..       
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
27c0: 74 68 65 72 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d  therCounts[name]
27d0: 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20   = count + 1;.. 
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2800: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68               oth
2810: 65 72 43 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d  erCounts.Add(nam
2820: 65 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  e, 1);..        
2830: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2840: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 23     }..      }..#
2850: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e  endif..      #en
2860: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 23 65  dregion..  }..#e
2870: 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
2880: 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f  on....  ////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69  /////....  #regi
28e0: 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
28f0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  s Static Class..
2900: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2910: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74  .  /// This stat
2920: 69 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65  ic class provide
2930: 73 20 73 6f 6d 65 20 6d 65 74 68 6f 64 73 20 74  s some methods t
2940: 68 61 74 20 61 72 65 20 73 68 61 72 65 64 20 62  hat are shared b
2950: 65 74 77 65 65 6e 20 74 68 65 0d 0a 20 20 2f 2f  etween the..  //
2960: 2f 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  / native library
2970: 20 70 72 65 2d 6c 6f 61 64 65 72 20 61 6e 64 20   pre-loader and 
2980: 6f 74 68 65 72 20 63 6c 61 73 73 65 73 2e 0d 0a  other classes...
2990: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29a0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61  ..  internal sta
29b0: 74 69 63 20 63 6c 61 73 73 20 48 65 6c 70 65 72  tic class Helper
29c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20  Methods..  {..  
29d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
29e0: 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
29f0: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a00: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a10: 79 4e 75 6c 6c 4f 62 6a 65 63 74 20 3d 20 22 3c  yNullObject = "<
2a20: 6e 75 6c 6c 4f 62 6a 65 63 74 3e 22 3b 0d 0a 20  nullObject>";.. 
2a30: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
2a40: 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61  st string Displa
2a50: 79 45 6d 70 74 79 53 74 72 69 6e 67 20 3d 20 22  yEmptyString = "
2a60: 3c 65 6d 70 74 79 53 74 72 69 6e 67 3e 22 3b 0d  <emptyString>";.
2a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2a80: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2a90: 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 20  layStringFormat 
2aa0: 3d 20 22 5c 22 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a  = "\"{0}\"";....
2ab0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b00: 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
2b10: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69   const string Di
2b20: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 20 3d  splayNullArray =
2b30: 20 22 3c 6e 75 6c 6c 41 72 72 61 79 3e 22 3b 0d   "<nullArray>";.
2b40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2b50: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
2b60: 6c 61 79 45 6d 70 74 79 41 72 72 61 79 20 3d 20  layEmptyArray = 
2b70: 22 3c 65 6d 70 74 79 41 72 72 61 79 3e 22 3b 0d  "<emptyArray>";.
2b80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69 76  //....      priv
2be0: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2bf0: 72 72 61 79 4f 70 65 6e 20 3d 20 27 5b 27 3b 0d  rrayOpen = '[';.
2c00: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c10: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 6c 65 6d  onst string Elem
2c20: 65 6e 74 53 65 70 61 72 61 74 6f 72 20 3d 20 22  entSeparator = "
2c30: 2c 20 22 3b 0d 0a 20 20 20 20 20 20 70 72 69 76  , ";..      priv
2c40: 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41  ate const char A
2c50: 72 72 61 79 43 6c 6f 73 65 20 3d 20 27 5d 27 3b  rrayClose = ']';
2c60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
2c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 69  ///....      pri
2cc0: 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
2cd0: 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 70 61 63  only char[] Spac
2ce0: 65 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20 20  eChars = {..    
2cf0: 20 20 20 20 20 20 27 5c 74 27 2c 20 27 5c 6e 27        '\t', '\n'
2d00: 2c 20 27 5c 72 27 2c 20 27 5c 76 27 2c 20 27 5c  , '\r', '\v', '\
2d10: 66 27 2c 20 27 20 27 0d 0a 20 20 20 20 20 20 7d  f', ' '..      }
2d20: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
2d30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d90: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2da0: 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
2db0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2dc0: 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69   /// This lock i
2dd0: 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63  s used to protec
2de0: 74 20 74 68 65 20 73 74 61 74 69 63 20 3c 73 65  t the static <se
2df0: 65 20 63 72 65 66 3d 22 69 73 4d 6f 6e 6f 22 20  e cref="isMono" 
2e00: 2f 3e 20 66 69 65 6c 64 2e 0d 0a 20 20 20 20 20  /> field...     
2e10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e20: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
2e30: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
2e40: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
2e50: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2e60: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
2e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
2ec0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2ed0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 74 79 70      /// This typ
2ee0: 65 20 69 73 20 6f 6e 6c 79 20 70 72 65 73 65 6e  e is only presen
2ef0: 74 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  t when running o
2f00: 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f  n Mono...      /
2f10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2f20: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2f30: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
2f40: 69 6e 67 20 4d 6f 6e 6f 52 75 6e 74 69 6d 65 54  ing MonoRuntimeT
2f50: 79 70 65 20 3d 20 22 4d 6f 6e 6f 2e 52 75 6e 74  ype = "Mono.Runt
2f60: 69 6d 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ime";....      /
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2fc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fd0: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
2fe0: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
2ff0: 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f  we are running o
3000: 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61 6c  n Mono.  Initial
3010: 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d 0a  ly null, it is..
3020: 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62 79        /// set by
3030: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
3040: 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68 6f  IsMono" /> metho
3050: 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20 63  d on its first c
3060: 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74 0d  all.  Later, it.
3070: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65  .      /// is re
3080: 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d 20  turned verbatim 
3090: 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
30a0: 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74  ="IsMono" /> met
30b0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
30c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30d0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
30e0: 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d 20   bool? isMono = 
30f0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  null;....      /
3100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3140: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3150: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3160: 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20 74       /// Keeps t
3170: 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20  rack of whether 
3180: 77 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20  we successfully 
3190: 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a 20 20 20  invoked the..   
31a0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
31b0: 3d 22 44 65 62 75 67 67 65 72 2e 42 72 65 61 6b  ="Debugger.Break
31c0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 49 6e  " /> method.  In
31d0: 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74  itially null, it
31e0: 20 69 73 20 73 65 74 20 62 79 0d 0a 20 20 20 20   is set by..    
31f0: 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
3200: 72 65 66 3d 22 4d 61 79 62 65 42 72 65 61 6b 49  ref="MaybeBreakI
3210: 6e 74 6f 44 65 62 75 67 67 65 72 22 20 2f 3e 20  ntoDebugger" /> 
3220: 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73 20 66 69  method on its fi
3230: 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20  rst call...     
3240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3250: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
3260: 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64 65 62 75  tatic bool? debu
3270: 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75 6c 6c  ggerBreak = null
3280: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
3290: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
32a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32f0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
3300: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f  Methods..      /
3310: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3320: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
3330: 65 73 20 74 68 65 20 49 44 20 6f 66 20 74 68 65  es the ID of the
3340: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
3350: 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66 6f 72  .  Only used for
3360: 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20 20 20   debugging...   
3370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
3390: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
33a0: 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68 65 20  / The ID of the 
33b0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
33c0: 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74 20  -OR- zero if it 
33d0: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
33e0: 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ined...      ///
33f0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3400: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3410: 63 20 69 6e 74 20 47 65 74 50 72 6f 63 65 73 73  c int GetProcess
3420: 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  Id()..      {.. 
3430: 20 20 20 20 20 20 20 20 20 50 72 6f 63 65 73 73           Process
3440: 20 70 72 6f 63 65 73 73 20 3d 20 50 72 6f 63 65   process = Proce
3450: 73 73 2e 47 65 74 43 75 72 72 65 6e 74 50 72 6f  ss.GetCurrentPro
3460: 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  cess();....     
3470: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
3480: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
3490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34a0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
34b0: 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 2e 49  return process.I
34c0: 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  d;..      }.... 
34d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3520: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3530: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3540: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3550: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3560: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3570: 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20 20 20 20  g on Mono...    
3580: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
35a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
35b0: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
35c0: 73 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75  s assembly is ru
35d0: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
35e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
35f0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
3600: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
3610: 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20 20 20 20  IsMono()..      
3620: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  {..          try
3630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
3650: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
3660: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
3670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3680: 20 20 20 20 20 20 20 69 66 20 28 69 73 4d 6f 6e         if (isMon
3690: 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  o == null)..    
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b0: 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54 79 70 65    isMono = (Type
36c0: 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f 52 75 6e  .GetType(MonoRun
36d0: 74 69 6d 65 54 79 70 65 29 20 21 3d 20 6e 75 6c  timeType) != nul
36e0: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
36f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3700: 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b 0d 0a 20  (bool)isMono;.. 
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3720: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3730: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3740: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3750: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
3760: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
3770: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3780: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
3790: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
37a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3800: 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49  .      #region I
3810: 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
3820: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3840: 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68 65  Resets the cache
3850: 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  d value for the 
3860: 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42  "PreLoadSQLite_B
3870: 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72  reakIntoDebugger
3880: 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  "..      /// con
3890: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
38a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
38b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
38c0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
38d0: 20 76 6f 69 64 20 52 65 73 65 74 42 72 65 61 6b   void ResetBreak
38e0: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a  IntoDebugger()..
38f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3900: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
3910: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
3920: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3930: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
3940: 61 6b 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ak = null;..    
3950: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
3960: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
39c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
39d0: 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 22 50 72    /// If the "Pr
39e0: 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65 61  eLoadSQLite_Brea
39f0: 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20 63  kIntoDebugger" c
3a00: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
3a10: 74 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 2f  ting is..      /
3a20: 2f 2f 20 70 72 65 73 65 6e 74 20 28 65 2e 67 2e  // present (e.g.
3a30: 20 76 69 61 20 74 68 65 20 65 6e 76 69 72 6f 6e   via the environ
3a40: 6d 65 6e 74 29 2c 20 67 69 76 65 20 74 68 65 20  ment), give the 
3a50: 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72  interactive user
3a60: 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f   an..      /// o
3a70: 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 61 74  pportunity to at
3a80: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
3a90: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  to the current p
3aa0: 72 6f 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73  rocess; otherwis
3ab0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  e,..      /// do
3ac0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
3ad0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3ae0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
3af0: 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
3b00: 65 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67  eBreakIntoDebugg
3b10: 65 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  er()..      {.. 
3b20: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
3b30: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
3b40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3b50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
3b60: 65 62 75 67 67 65 72 42 72 65 61 6b 20 21 3d 20  ebuggerBreak != 
3b70: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3b80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
3b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55  .          if (U
3bb0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
3bc0: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
3bd0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
3be0: 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
3bf0: 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65 62  ite_BreakIntoDeb
3c00: 75 67 67 65 72 22 2c 20 6e 75 6c 6c 29 20 21 3d  ugger", null) !=
3c10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
3c20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3c30: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
3c40: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
3c50: 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65  tempt to use the
3c60: 20 43 6f 6e 73 6f 6c 65 20 69 6e 20 6f 72 64 65   Console in orde
3c70: 72 20 74 6f 20 70 72 6f 6d 70 74 20 74 68 65 0d  r to prompt the.
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
3c90: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 61 63 74  /       interact
3ca0: 69 76 65 20 75 73 65 72 20 28 69 66 20 61 6e 79  ive user (if any
3cb0: 29 2e 20 20 54 68 69 73 20 6d 61 79 20 66 61 69  ).  This may fai
3cc0: 6c 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 20  l for any..     
3cd0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
3ce0: 20 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 61 73    number of reas
3cf0: 6f 6e 73 2e 20 20 45 76 65 6e 20 69 6e 20 74 68  ons.  Even in th
3d00: 6f 73 65 20 63 61 73 65 73 2c 20 77 65 20 73 74  ose cases, we st
3d10: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
3d20: 20 20 20 2f 2f 20 20 20 20 20 20 20 77 61 6e 74     //       want
3d30: 20 74 6f 20 69 73 73 75 65 20 74 68 65 20 61 63   to issue the ac
3d40: 74 75 61 6c 20 72 65 71 75 65 73 74 20 74 6f 20  tual request to 
3d50: 62 72 65 61 6b 20 69 6e 74 6f 20 74 68 65 0d 0a  break into the..
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3d70: 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72 2e         debugger.
3d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3d90: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
3da0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
3db0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3dc0: 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c            Consol
3dd0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69  e.WriteLine(Stri
3de0: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e00: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
3e10: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e30: 20 20 20 20 22 41 74 74 61 63 68 20 61 20 64 65      "Attach a de
3e40: 62 75 67 67 65 72 20 74 6f 20 70 72 6f 63 65 73  bugger to proces
3e50: 73 20 7b 30 7d 20 22 20 2b 0d 0a 20 20 20 20 20  s {0} " +..     
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 20 22 61 6e 64 20 70 72 65 73 73 20 61 6e 79 20   "and press any 
3e80: 6b 65 79 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2e  key to continue.
3e90: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
3ea0: 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f            GetPro
3eb0: 63 65 73 73 49 64 28 29 29 29 3b 0d 0a 0d 0a 23  cessId()));....#
3ec0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
3ed0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4c 69 6e 65  Console.ReadLine
3f00: 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ();..#else..    
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f                Co
3f20: 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 29 3b  nsole.ReadKey();
3f30: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
3f40: 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
3f50: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
3f60: 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
3f80: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
3f90: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
3fa0: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
3fb0: 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
3fc0: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
3fd0: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
3fe0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
3ff0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
4000: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4020: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4030: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
4040: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
4050: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
4060: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4080: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
4090: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 22 46 61 69 6c 65 64           "Failed
40c0: 20 74 6f 20 69 73 73 75 65 20 64 65 62 75 67 67   to issue debugg
40d0: 65 72 20 70 72 6f 6d 70 74 2c 20 22 20 2b 0d 0a  er prompt, " +..
40e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40f0: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 20 6d            "{0} m
4100: 61 79 20 62 65 20 75 6e 75 73 61 62 6c 65 3a 20  ay be unusable: 
4110: 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4130: 20 74 79 70 65 6f 66 28 43 6f 6e 73 6f 6c 65 29   typeof(Console)
4140: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
4150: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
4160: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4170: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
4180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
41b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
41d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
41e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
41f0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4220: 20 20 20 44 65 62 75 67 67 65 72 2e 42 72 65 61     Debugger.Brea
4230: 6b 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  k();....        
4240: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4250: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4270: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4280: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4290: 67 67 65 72 42 72 65 61 6b 20 3d 20 74 72 75 65  ggerBreak = true
42a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
42b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
42c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
42d0: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
4310: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
4320: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4340: 20 20 20 64 65 62 75 67 67 65 72 42 72 65 61 6b     debuggerBreak
4350: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4380: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 20 20 20 20      throw;..    
4390: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
43a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
43b0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
43c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
43d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
43e0: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58         // BUGFIX
43f0: 3a 20 54 68 65 72 65 20 69 73 20 28 61 6c 6d 6f  : There is (almo
4400: 73 74 29 20 6e 6f 20 70 6f 69 6e 74 20 69 6e 20  st) no point in 
4410: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
4420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4430: 2f 2f 20 20 20 20 20 20 20 20 20 61 73 73 6f 63  //         assoc
4440: 69 61 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74  iated configurat
4450: 69 6f 6e 20 73 65 74 74 69 6e 67 20 72 65 70 65  ion setting repe
4460: 61 74 65 64 6c 79 2e 0d 0a 20 20 20 20 20 20 20  atedly...       
4470: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
4480: 20 20 50 72 65 76 65 6e 74 20 74 68 61 74 20 68    Prevent that h
4490: 65 72 65 20 62 79 20 73 65 74 74 69 6e 67 20 74  ere by setting t
44a0: 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65 0d  he cached value.
44b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
44c0: 2f 20 20 20 20 20 20 20 20 20 74 6f 20 66 61 6c  /         to fal
44d0: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se...           
44e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
44f0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
4500: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
4510: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
4530: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 66  ebuggerBreak = f
4540: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
4550: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4560: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
4570: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45c0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
45d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
45e0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
45f0: 20 49 44 20 6f 66 20 74 68 65 20 63 75 72 72 65   ID of the curre
4600: 6e 74 20 74 68 72 65 61 64 2e 20 20 4f 6e 6c 79  nt thread.  Only
4610: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
4620: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ing...      /// 
4630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4640: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4650: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 49  .      /// The I
4660: 44 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  D of the current
4670: 20 74 68 72 65 61 64 20 2d 4f 52 2d 20 7a 65 72   thread -OR- zer
4680: 6f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  o if it cannot b
4690: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
46a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
46b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
46c0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 47  nal static int G
46d0: 65 74 54 68 72 65 61 64 49 64 28 29 0d 0a 20 20  etThreadId()..  
46e0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
46f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4700: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4710: 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69   return AppDomai
4720: 6e 2e 47 65 74 43 75 72 72 65 6e 74 54 68 72 65  n.GetCurrentThre
4730: 61 64 49 64 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a  adId();..#else..
4740: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4750: 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20   0;..#endif..   
4760: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
47c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
47d0: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
47e0: 69 6e 65 73 20 69 66 20 70 72 65 70 61 72 69 6e  ines if preparin
47f0: 67 20 61 20 71 75 65 72 79 20 73 68 6f 75 6c 64  g a query should
4800: 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20   be logged...   
4810: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4820: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
4830: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
4840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
4850: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
4860: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
4870: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
4880: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
4890: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
48a0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
48b0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
48c0: 6f 20 69 66 20 74 68 65 20 71 75 65 72 79 20 70  o if the query p
48d0: 72 65 70 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  reparation shoul
48e0: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
48f0: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
4900: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
4910: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
4920: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
4930: 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a 20 20 20  LogPrepare(..   
4940: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4950: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4960: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4970: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4980: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4990: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
49a0: 67 73 2e 4c 6f 67 50 72 65 70 61 72 65 3b 0d 0a  gs.LogPrepare;..
49b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
49c0: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
49d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
49e0: 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b 0d 0a 20  .LogPrepare);.. 
49f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
4a50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4a60: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
4a70: 69 6e 65 73 20 69 66 20 70 72 65 2d 70 61 72 61  ines if pre-para
4a80: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4a90: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
4aa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
4ab0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
4ac0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
4ad0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
4ae0: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
4af0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
4b00: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
4b10: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
4b20: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4b30: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4b40: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
4b50: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70 72 65  -zero if the pre
4b60: 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  -parameter bindi
4b70: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ng should be log
4b80: 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  ged; otherwise,.
4b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
4ba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4bb0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4bc0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4bd0: 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64 28 0d 0a  ol LogPreBind(..
4be0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
4bf0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
4c00: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
4c10: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
4c20: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
4c30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4c40: 46 6c 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64  Flags.LogPreBind
4c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
4c60: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
4c70: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
4c80: 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64 29 3b  ags.LogPreBind);
4c90: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
4ca0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
4cf0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4d00: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
4d10: 65 72 6d 69 6e 65 73 20 69 66 20 70 61 72 61 6d  ermines if param
4d20: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f  eter binding sho
4d30: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
4d40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4d50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
4d60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
4d70: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
4d80: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
4da0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
4db0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
4dc0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4dd0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
4df0: 7a 65 72 6f 20 69 66 20 74 68 65 20 70 61 72 61  zero if the para
4e00: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
4e10: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
4e20: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
4e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
4e40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
4e50: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
4e60: 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a 20 20 20  ol LogBind(..   
4e70: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
4e80: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
4e90: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
4ea0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
4eb0: 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c      flags &= SQL
4ec0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
4ed0: 67 73 2e 4c 6f 67 42 69 6e 64 3b 0d 0a 20 20 20  gs.LogBind;..   
4ee0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66         return (f
4ef0: 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f  lags == SQLiteCo
4f00: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
4f10: 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d  gBind);..      }
4f20: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
4f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f70: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
4f80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4f90: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
4fa0: 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69  f an exception i
4fb0: 6e 20 61 20 6e 61 74 69 76 65 20 63 61 6c 6c 62  n a native callb
4fc0: 61 63 6b 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ack should be lo
4fd0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
4fe0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ff0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5000: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
5010: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
5020: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5030: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5040: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5050: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5060: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5070: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5080: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5090: 68 65 20 65 78 63 65 70 74 69 6f 6e 20 73 68 6f  he exception sho
50a0: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f  uld be logged; o
50b0: 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d  therwise, zero..
50c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
50d0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74  urns>..      int
50e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
50f0: 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63  l LogCallbackExc
5100: 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20 20 20 20  eptions(..      
5110: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
5120: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
5130: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
5140: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5150: 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65   flags &= SQLite
5160: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
5170: 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70  LogCallbackExcep
5180: 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  tion;..         
5190: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
51a0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
51b0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62  onFlags.LogCallb
51c0: 61 63 6b 45 78 63 65 70 74 69 6f 6e 29 3b 0d 0a  ackException);..
51d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
51e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
51f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5230: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5240: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
5250: 6d 69 6e 65 73 20 69 66 20 62 61 63 6b 75 70 20  mines if backup 
5260: 41 50 49 20 65 72 72 6f 72 73 20 73 68 6f 75 6c  API errors shoul
5270: 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20  d be logged...  
5280: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5290: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
52a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
52b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
52c0: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
52d0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
52e0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
52f0: 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ject...      ///
5300: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5310: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
5320: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
5330: 72 6f 20 69 66 20 74 68 65 20 62 61 63 6b 75 70  ro if the backup
5340: 20 41 50 49 20 65 72 72 6f 72 20 73 68 6f 75 6c   API error shoul
5350: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
5360: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5370: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5380: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5390: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
53a0: 4c 6f 67 42 61 63 6b 75 70 28 0d 0a 20 20 20 20  LogBackup(..    
53b0: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
53c0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
53d0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51 4c 69     flags &= SQLi
5400: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
5410: 73 2e 4c 6f 67 42 61 63 6b 75 70 3b 0d 0a 20 20  s.LogBackup;..  
5420: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
5430: 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43  flags == SQLiteC
5440: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5450: 6f 67 42 61 63 6b 75 70 29 3b 0d 0a 20 20 20 20  ogBackup);..    
5460: 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52    }....#if INTER
5470: 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
5480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
54e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
54f0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
5500: 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74 68 65 20  logging for the 
5510: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
5520: 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
5530: 73 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s is..      /// 
5540: 64 69 73 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20  disabled...     
5550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5560: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
5570: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
5580: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
5590: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
55a0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
55b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
55c0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
55d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
55e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
55f0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
5600: 69 66 20 6c 6f 67 67 69 6e 67 20 66 6f 72 20 74  if logging for t
5610: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
5620: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63  LiteModule" /> c
5630: 6c 61 73 73 20 69 73 0d 0a 20 20 20 20 20 20 2f  lass is..      /
5640: 2f 2f 20 64 69 73 61 62 6c 65 64 3b 20 6f 74 68  // disabled; oth
5650: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5660: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5670: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5680: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
5690: 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 28 0d 0a 20 20  NoLogModule(..  
56a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
56b0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
56c0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ags..          )
56d0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
56e0: 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53 51       flags &= SQ
56f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5700: 61 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 3b  ags.NoLogModule;
5710: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5720: 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c  rn (flags == SQL
5730: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5740: 67 73 2e 4e 6f 4c 6f 67 4d 6f 64 75 6c 65 29 3b  gs.NoLogModule);
5750: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5760: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
57b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
57c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
57d0: 65 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65 20  ermines if <see 
57e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
57f0: 6c 65 22 20 2f 3e 20 65 72 72 6f 72 73 20 73 68  le" /> errors sh
5800: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
5810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5820: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5830: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
5840: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
5850: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
5860: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
5870: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
5880: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
5890: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
58a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
58b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
58c0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
58d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
58e0: 64 75 6c 65 22 20 2f 3e 20 65 72 72 6f 72 20 73  dule" /> error s
58f0: 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b  hould be logged;
5900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65  ..      /// othe
5910: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
5920: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5930: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
5940: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
5950: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 28 0d 0a  ogModuleError(..
5960: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5970: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5980: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
5990: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
59a0: 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
59b0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
59c0: 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45  Flags.LogModuleE
59d0: 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
59e0: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
59f0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
5a00: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
5a10: 65 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  eError);..      
5a20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
5a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a70: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
5a80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5a90: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
5aa0: 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  if <see cref="SQ
5ab0: 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 65  LiteModule" /> e
5ac0: 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64  xceptions should
5ad0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5ae0: 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ogged...      //
5af0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5b00: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5b10: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
5b20: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
5b30: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
5b40: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
5b50: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
5b60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
5b70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
5b80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5b90: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
5ba0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
5bb0: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
5bc0: 65 78 63 65 70 74 69 6f 6e 20 73 68 6f 75 6c 64  exception should
5bd0: 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c   be..      /// l
5be0: 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65  ogged; otherwise
5bf0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
5c00: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5c10: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
5c20: 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64  atic bool LogMod
5c30: 75 6c 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  uleException(.. 
5c40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
5c50: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
5c60: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
5c70: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
5c80: 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20 53        flags &= S
5c90: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
5ca0: 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78  lags.LogModuleEx
5cb0: 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  ception;..      
5cc0: 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67      return (flag
5cd0: 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s == SQLiteConne
5ce0: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f  ctionFlags.LogMo
5cf0: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 29 3b 0d  duleException);.
5d00: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
5d10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5d70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5d80: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5d90: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
5da0: 6f 63 65 73 73 20 69 73 20 72 75 6e 6e 69 6e 67  ocess is running
5db0: 20 6f 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 57   on one of the W
5dc0: 69 6e 64 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f  indows..      //
5dd0: 2f 20 5b 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d  / [sub-]platform
5de0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
5df0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5e00: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5e10: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
5e20: 6f 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  o when running o
5e30: 6e 20 57 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72  n Windows; other
5e40: 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20  wise, zero...   
5e50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5e60: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
5e70: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
5e80: 57 69 6e 64 6f 77 73 28 29 0d 0a 20 20 20 20 20  Windows()..     
5e90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 50 6c   {..          Pl
5ea0: 61 74 66 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72  atformID platfor
5eb0: 6d 49 64 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  mId = Environmen
5ec0: 74 2e 4f 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74  t.OSVersion.Plat
5ed0: 66 6f 72 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  form;....       
5ee0: 20 20 20 69 66 20 28 28 70 6c 61 74 66 6f 72 6d     if ((platform
5ef0: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
5f00: 2e 57 69 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20  .Win32S) ||..   
5f10: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74             (plat
5f20: 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f  formId == Platfo
5f30: 72 6d 49 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77  rmID.Win32Window
5f40: 73 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  s) ||..         
5f50: 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64       (platformId
5f60: 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57   == PlatformID.W
5f70: 69 6e 33 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20  in32NT) ||..    
5f80: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 74 66            (platf
5f90: 6f 72 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72  ormId == Platfor
5fa0: 6d 49 44 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20  mID.WinCE))..   
5fb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
5fd0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
5fe0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
5ff0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
6000: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6060: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6070: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
6080: 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e   a wrapper aroun
6090: 64 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  d the..      ///
60a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69   <see cref="Stri
60b0: 6e 67 2e 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61  ng.Format(IForma
60c0: 74 50 72 6f 76 69 64 65 72 2c 53 74 72 69 6e 67  tProvider,String
60d0: 2c 4f 62 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d  ,Object[])" /> m
60e0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
60f0: 2f 20 4f 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61  / On Mono, it ha
6100: 73 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65  s to call the me
6110: 74 68 6f 64 20 6f 76 65 72 6c 6f 61 64 20 77 69  thod overload wi
6120: 74 68 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20  thout the..     
6130: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
6140: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 22  IFormatProvider"
6150: 20 2f 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 64   /> parameter, d
6160: 75 65 20 74 6f 20 61 20 62 75 67 20 69 6e 20 4d  ue to a bug in M
6170: 6f 6e 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ono...      /// 
6180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6190: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
61a0: 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20  e="provider">.. 
61b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
61c0: 20 75 73 65 64 20 66 6f 72 20 63 75 6c 74 75 72   used for cultur
61d0: 65 2d 73 70 65 63 69 66 69 63 20 66 6f 72 6d 61  e-specific forma
61e0: 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tting...      //
61f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6200: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6210: 65 3d 22 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20  e="format">..   
6220: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61     /// The forma
6230: 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  t string...     
6240: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6250: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6260: 6e 61 6d 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20  name="args">..  
6270: 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
6280: 20 74 68 65 20 6f 62 6a 65 63 74 73 20 74 6f 20   the objects to 
6290: 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f  format...      /
62a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
62b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
62c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
62d0: 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67  resulting string
62e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
62f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
6300: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
6310: 74 72 69 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d  tring StringForm
6320: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49  at(..          I
6330: 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70  FormatProvider p
6340: 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20  rovider,..      
6350: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
6360: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 70 61  t,..          pa
6370: 72 61 6d 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72  rams object[] ar
6380: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
6390: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
63a0: 20 20 20 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29      if (IsMono()
63b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
63c0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
63d0: 6f 72 6d 61 74 28 66 6f 72 6d 61 74 2c 20 61 72  ormat(format, ar
63e0: 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
63f0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
6400: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
6410: 67 2e 46 6f 72 6d 61 74 28 70 72 6f 76 69 64 65  g.Format(provide
6420: 72 2c 20 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  r, format, args)
6430: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
6440: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6450: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
64a0: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
64b0: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
64c0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
64d0: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
64e0: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
64f0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
6500: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
6510: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
6520: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
6530: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6540: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
6550: 69 73 70 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74  isplayNullObject
6560: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
6570: 74 72 69 6e 67 20 73 74 72 69 6e 67 56 61 6c 75  tring stringValu
6580: 65 20 3d 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  e = value.ToStri
6590: 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng();....       
65a0: 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61 6c     if (stringVal
65b0: 75 65 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  ue.Length == 0).
65c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
65d0: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
65e0: 74 79 53 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20  tyString;....   
65f0: 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e         if (strin
6600: 67 56 61 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e  gValue.IndexOfAn
6610: 79 28 53 70 61 63 65 43 68 61 72 73 29 20 3c 20  y(SpaceChars) < 
6620: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
6630: 20 20 72 65 74 75 72 6e 20 73 74 72 69 6e 67 56    return stringV
6640: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
6650: 20 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72     return Helper
6660: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
6670: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
6680: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
6690: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
66a0: 65 2c 20 44 69 73 70 6c 61 79 53 74 72 69 6e 67  e, DisplayString
66b0: 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
66c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 56 61 6c         stringVal
66d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ue);..      }...
66e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
66f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
6740: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
6750: 6f 44 69 73 70 6c 61 79 53 74 72 69 6e 67 28 0d  oDisplayString(.
6760: 0a 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79  .          Array
6770: 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20   array..        
6780: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
6790: 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72 61          if (arra
67a0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
67b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
67c0: 20 44 69 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61   DisplayNullArra
67d0: 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
67e0: 69 66 20 28 61 72 72 61 79 2e 4c 65 6e 67 74 68  if (array.Length
67f0: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
6800: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73        return Dis
6810: 70 6c 61 79 45 6d 70 74 79 41 72 72 61 79 3b 0d  playEmptyArray;.
6820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 53 74 72  ...          Str
6830: 69 6e 67 42 75 69 6c 64 65 72 20 72 65 73 75 6c  ingBuilder resul
6840: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
6850: 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
6860: 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 6f        foreach (o
6870: 62 6a 65 63 74 20 76 61 6c 75 65 20 69 6e 20 61  bject value in a
6880: 72 72 61 79 29 0d 0a 20 20 20 20 20 20 20 20 20  rray)..         
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
68b0: 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
68d0: 6c 74 2e 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e  lt.Append(Elemen
68e0: 74 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a  tSeparator);....
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6900: 73 75 6c 74 2e 41 70 70 65 6e 64 28 54 6f 44 69  sult.Append(ToDi
6910: 73 70 6c 61 79 53 74 72 69 6e 67 28 76 61 6c 75  splayString(valu
6920: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
6930: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  }....          i
6940: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
6950: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
6960: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
6970: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
6980: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
6990: 20 72 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30   result.Insert(0
69a0: 2c 20 41 72 72 61 79 4f 70 65 6e 2e 54 6f 53 74  , ArrayOpen.ToSt
69b0: 72 69 6e 67 28 29 29 3b 0d 0a 23 65 6c 73 65 0d  ring());..#else.
69c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
69d0: 65 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20  esult.Insert(0, 
69e0: 41 72 72 61 79 4f 70 65 6e 29 3b 0d 0a 23 65 6e  ArrayOpen);..#en
69f0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
6a00: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
6a10: 6e 64 28 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d  nd(ArrayClose);.
6a20: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
6a30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6a40: 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
6a50: 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ();..      }..  
6a60: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6a70: 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f    }..  #endregio
6a80: 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  n....  /////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f  ////....  #regio
6ae0: 6e 20 4e 61 74 69 76 65 20 4c 69 62 72 61 72 79  n Native Library
6af0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
6b00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6b10: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 61 74 69    /// This stati
6b20: 63 20 63 6c 61 73 73 20 70 72 6f 76 69 64 65 73  c class provides
6b30: 20 61 20 74 68 69 6e 20 77 72 61 70 70 65 72 20   a thin wrapper 
6b40: 61 72 6f 75 6e 64 20 74 68 65 20 6e 61 74 69 76  around the nativ
6b50: 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f  e library..  ///
6b60: 20 6c 6f 61 64 69 6e 67 20 66 65 61 74 75 72 65   loading feature
6b70: 73 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  s of the underly
6b80: 69 6e 67 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  ing platform... 
6b90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ba0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
6bb0: 69 63 20 63 6c 61 73 73 20 4e 61 74 69 76 65 4c  ic class NativeL
6bc0: 69 62 72 61 72 79 48 65 6c 70 65 72 0d 0a 20 20  ibraryHelper..  
6bd0: 7b 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  {..      #region
6be0: 20 50 72 69 76 61 74 65 20 44 65 6c 65 67 61 74   Private Delegat
6bf0: 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  es..      /// <s
6c00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6c10: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
6c20: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
6c30: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
6c40: 6c 6f 61 64 69 6e 67 20 61 20 6e 61 74 69 76 65  loading a native
6c50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72  ..      /// libr
6c60: 61 72 79 2c 20 62 61 73 65 64 20 6f 6e 20 61 20  ary, based on a 
6c70: 66 69 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72  file name, and r
6c80: 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61  eturning the loa
6c90: 64 65 64 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ded module..    
6ca0: 20 20 2f 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20    /// handle... 
6cb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6cc0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6cd0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6ce0: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6cf0: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6d00: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6d10: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6d30: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6d40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6d50: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6d60: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6d70: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6d80: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6d90: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6da0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6db0: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
6dc0: 61 74 65 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c  ate IntPtr LoadL
6dd0: 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d  ibraryCallback(.
6de0: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
6df0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
6e00: 20 20 29 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64    );..      #end
6e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6e70: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
6e80: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
6e90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6ea0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
6eb0: 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  pts to load the 
6ec0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
6ed0: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75 73   library file us
6ee0: 69 6e 67 20 74 68 65 20 57 69 6e 33 32 0d 0a 20  ing the Win32.. 
6ef0: 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20       /// API... 
6f00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6f10: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
6f20: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
6f30: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
6f40: 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65 20  / The file name 
6f50: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69  of the native li
6f60: 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a  brary to load...
6f70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6f80: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
6f90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
6fa0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d 6f  // The native mo
6fb0: 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e  dule handle upon
6fc0: 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e   success -OR- In
6fd0: 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69  tPtr.Zero on fai
6fe0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
6ff0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7000: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7010: 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62  c IntPtr LoadLib
7020: 72 61 72 79 57 69 6e 33 32 28 0d 0a 20 20 20 20  raryWin32(..    
7030: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
7040: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
7050: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
7060: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
7070: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7080: 73 57 69 6e 33 32 2e 4c 6f 61 64 4c 69 62 72 61  sWin32.LoadLibra
7090: 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  ry(fileName);.. 
70a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7100: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7110: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7130: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
7140: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
7150: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
7160: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
7170: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
7180: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
7190: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
71a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
71b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
71c0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
71d0: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
71e0: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
71f0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
7200: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7210: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7220: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7230: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
7240: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
7250: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
7260: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
7270: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
7280: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7290: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
72a0: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
72b0: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
72c0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
72d0: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
72e0: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
72f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
7300: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7310: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
7320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
7330: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
7340: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
7350: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
7360: 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
7370: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
7380: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
73e0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
73f0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
7400: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7410: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
7420: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
7430: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
7440: 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20  rary file...    
7450: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7470: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
7480: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
7490: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
74a0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
74b0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
74c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
74d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
74e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
74f0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
7500: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
7510: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
7520: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
7530: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
7540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7550: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
7560: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7570: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
7580: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
7590: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
75a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f   {..          Lo
75b0: 61 64 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63  adLibraryCallbac
75c0: 6b 20 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61  k callback = Loa
75d0: 64 4c 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a  dLibraryWin32;..
75e0: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
75f0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
7600: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7610: 21 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  !HelperMethods.I
7620: 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
7630: 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62             callb
7640: 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72  ack = LoadLibrar
7650: 79 50 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d  yPosix;..#endif.
7660: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
7670: 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c  urn callback(fil
7680: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d  eName);..      }
7690: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
76a0: 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
76b0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
7710: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
7720: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
7730: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f  Static Class (PO
7740: 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46  SIX)..#if !PLATF
7750: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
7760: 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  WORK..  /// <sum
7770: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
7780: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
7790: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
77a0: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
77b0: 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20   POSIX APIs...  
77c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
77d0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
77e0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
77f0: 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ]..  internal st
7800: 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66  atic class Unsaf
7810: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f  eNativeMethodsPo
7820: 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  six..  {..      
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
7880: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7890: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
78a0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
78b0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
78c0: 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69 78   the native Unix
78d0: 20 64 6c 6f 70 65 6e 0d 0a 20 20 20 20 20 20 2f   dlopen..      /
78e0: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
78f0: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
7900: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
7910: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
7920: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
7930: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
7940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7950: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7960: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
7970: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7980: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
7990: 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a  table library...
79a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
79b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
79c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 65 22  aram name="mode"
79d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
79e0: 73 20 6d 75 73 74 20 62 65 20 61 20 63 6f 6d 62  s must be a comb
79f0: 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69  ination of the i
7a00: 6e 64 69 76 69 64 75 61 6c 20 62 69 74 20 66 6c  ndividual bit fl
7a10: 61 67 73 20 52 54 4c 44 5f 4c 41 5a 59 2c 0d 0a  ags RTLD_LAZY,..
7a20: 20 20 20 20 20 20 2f 2f 2f 20 52 54 4c 44 5f 4e        /// RTLD_N
7a30: 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 2c  OW, RTLD_GLOBAL,
7a40: 20 61 6e 64 2f 6f 72 20 52 54 4c 44 5f 4c 4f 43   and/or RTLD_LOC
7a50: 41 4c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  AL...      /// <
7a60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
7a70: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7a80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
7a90: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
7aa0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
7ab0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
7ac0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
7ad0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7ae0: 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ..      [DllImpo
7af0: 72 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c  rt("__Internal",
7b00: 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64   EntryPoint = "d
7b10: 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20  lopen",..       
7b20: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
7b30: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
7b40: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
7b50: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
7b60: 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20  t.Ansi,..       
7b70: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
7b80: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
7b90: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
7ba0: 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20   = true,..      
7bb0: 20 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72      SetLastError
7bc0: 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20   = true)]..     
7bd0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7be0: 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64   extern IntPtr d
7bf0: 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c  lopen(string fil
7c00: 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29  eName, int mode)
7c10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
7c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c60: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
7c70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7c80: 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74   /// For use wit
7c90: 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64  h dlopen(), bind
7ca0: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20   function calls 
7cb0: 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  lazily...      /
7cc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7cd0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
7ce0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a  nst int RTLD_LAZ
7cf0: 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20  Y = 0x1;....    
7d00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
7d50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7d60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
7d70: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
7d80: 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e  ), bind function
7d90: 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65   calls immediate
7da0: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
7db0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7dc0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
7dd0: 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30  int RTLD_NOW = 0
7de0: 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  x2;....      ///
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
7e40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7e50: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
7e60: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61  ith dlopen(), ma
7e70: 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61  ke symbols globa
7e80: 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  lly available...
7e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7ea0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
7eb0: 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52  rnal const int R
7ec0: 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31  TLD_GLOBAL = 0x1
7ed0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00;....      ///
7ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f20: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
7f30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7f40: 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77     /// For use w
7f50: 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70  ith dlopen(), op
7f60: 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f 47  posite of RTLD_G
7f70: 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20 64  LOBAL, and the d
7f80: 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  efault...      /
7f90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7fa0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
7fb0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43  nst int RTLD_LOC
7fc0: 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20  AL = 0x000;.... 
7fd0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8020: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8030: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46  ry>..      /// F
8040: 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70  or use with dlop
8050: 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75 6c  en(), the defaul
8060: 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20  ts used by this 
8070: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  class...      //
8080: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8090: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 20 63 6f      internal  co
80a0: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
80b0: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
80c0: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
80d0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
80e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
80f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8140: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
8150: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
8160: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
8170: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
8180: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
8190: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
81a0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
81b0: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
81c0: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
81d0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
81e0: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
81f0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8200: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
8210: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
8220: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
8230: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8240: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
8250: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
8260: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  .  {..      ////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82b0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
82c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
82d0: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
82e0: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
82f0: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
8300: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
8310: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
8320: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
8330: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
8340: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
8350: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
8360: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
8370: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
8380: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8390: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
83a0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
83b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
83c0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
83d0: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
83e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
83f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
8400: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8410: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
8420: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
8430: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
8440: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
8450: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
8460: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
8470: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
8480: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
8490: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
84a0: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
84b0: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
84c0: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
84d0: 23 65 6e 64 69 66 0d 0a 20 43 61 6c 6c 69 6e 67  #endif.. Calling
84e0: 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
84f0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 57  lingConvention.W
8500: 69 6e 61 70 69 2c 20 43 68 61 72 53 65 74 20 3d  inapi, CharSet =
8510: 20 43 68 61 72 53 65 74 2e 41 75 74 6f 2c 0d 0a   CharSet.Auto,..
8520: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8530: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8540: 20 20 20 20 20 20 20 20 20 20 42 65 73 74 46 69            BestFi
8550: 74 4d 61 70 70 69 6e 67 20 3d 20 66 61 6c 73 65  tMapping = false
8560: 2c 20 54 68 72 6f 77 4f 6e 55 6e 6d 61 70 70 61  , ThrowOnUnmappa
8570: 62 6c 65 43 68 61 72 20 3d 20 74 72 75 65 2c 0d  bleChar = true,.
8580: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8590: 20 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20     SetLastError 
85a0: 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  = true)]..      
85b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
85c0: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 4c 6f  extern IntPtr Lo
85d0: 61 64 4c 69 62 72 61 72 79 28 73 74 72 69 6e 67  adLibrary(string
85e0: 20 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20   fileName);.... 
85f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8640: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
8650: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8670: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8680: 54 68 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e  This is the P/In
8690: 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74  voke method that
86a0: 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76   wraps the nativ
86b0: 65 20 57 69 6e 33 32 20 47 65 74 53 79 73 74 65  e Win32 GetSyste
86c0: 6d 49 6e 66 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  mInfo..      ///
86d0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
86e0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
86f0: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
8700: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
8710: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
8720: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
8730: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8740: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8750: 3d 22 73 79 73 74 65 6d 49 6e 66 6f 22 3e 0d 0a  ="systemInfo">..
8760: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 79        /// The sy
8770: 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  stem information
8780: 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
8790: 20 66 69 6c 6c 65 64 20 69 6e 20 62 79 20 74 68   filled in by th
87a0: 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  e function...   
87b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
87c0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
87d0: 74 28 22 63 6f 72 65 64 6c 6c 22 2c 20 43 61 6c  t("coredll", Cal
87e0: 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
87f0: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
8800: 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20  on.Winapi)]..   
8810: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
8820: 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47  ic extern void G
8830: 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74  etSystemInfo(out
8840: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73   SYSTEM_INFO sys
8850: 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20  temInfo);....   
8860: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
88b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
88c0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
88d0: 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f  s enumeration co
88e0: 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69  ntains the possi
88f0: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ble values for t
8900: 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20  he processor..  
8910: 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63      /// architec
8920: 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68  ture field of th
8930: 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61  e system informa
8940: 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d  tion structure..
8950: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
8960: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
8970: 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65  ernal enum Proce
8980: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
8990: 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d   : ushort /* COM
89a0: 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a  PAT: Win32. */..
89b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
89c0: 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20     Intel = 0,.. 
89d0: 20 20 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20           MIPS = 
89e0: 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c  1,..          Al
89f0: 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20  pha = 2,..      
8a00: 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c      PowerPC = 3,
8a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48 78 20  ..          SHx 
8a20: 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 4,..          
8a30: 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20  ARM = 5,..      
8a40: 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20      IA64 = 6,.. 
8a50: 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 36 34           Alpha64
8a60: 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20   = 7,..         
8a70: 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20   MSIL = 8,..    
8a80: 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c        AMD64 = 9,
8a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41 33 32  ..          IA32
8aa0: 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d  _on_Win64 = 10,.
8ab0: 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f  .          Unkno
8ac0: 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20  wn = 0xFFFF..   
8ad0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
8b30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8b40: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72      /// This str
8b50: 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20  ucture contains 
8b60: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
8b70: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f  t the current co
8b80: 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20  mputer. This..  
8b90: 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73      /// includes
8ba0: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74   the processor t
8bb0: 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20  ype, page size, 
8bc0: 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73  memory addresses
8bd0: 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f  , etc...      //
8be0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8bf0: 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
8c00: 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
8c10: 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20  uential)]..     
8c20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
8c30: 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20   SYSTEM_INFO..  
8c40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8c50: 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f   public Processo
8c60: 72 41 72 63 68 69 74 65 63 74 75 72 65 20 77 50  rArchitecture wP
8c70: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
8c80: 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ture;..         
8c90: 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77   public ushort w
8ca0: 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54  Reserved; /* NOT
8cb0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
8cc0: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
8cd0: 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e  dwPageSize; /* N
8ce0: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
8cf0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74        public Int
8d00: 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70  Ptr lpMinimumApp
8d10: 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b  licationAddress;
8d20: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
8d30: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
8d40: 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d  c IntPtr lpMaxim
8d50: 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64  umApplicationAdd
8d60: 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  ress; /* NOT USE
8d70: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
8d80: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 63  public uint dwAc
8d90: 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61 73  tiveProcessorMas
8da0: 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  k; /* NOT USED *
8db0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
8dc0: 6c 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65  lic uint dwNumbe
8dd0: 72 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f  rOfProcessors; /
8de0: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
8df0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8e00: 75 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72  uint dwProcessor
8e10: 54 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Type; /* NOT USE
8e20: 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
8e30: 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c  public uint dwAl
8e40: 6c 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72  locationGranular
8e50: 69 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ity; /* NOT USED
8e60: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
8e70: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72  ublic ushort wPr
8e80: 6f 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a  ocessorLevel; /*
8e90: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
8ea0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
8eb0: 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72  short wProcessor
8ec0: 52 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54  Revision; /* NOT
8ed0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
8ee0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 7d 0d 0a  }..#endif..  }..
8ef0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8f00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8f50: 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d  ...  #region Unm
8f60: 61 6e 61 67 65 64 20 49 6e 74 65 72 6f 70 20 4d  anaged Interop M
8f70: 65 74 68 6f 64 73 20 53 74 61 74 69 63 20 43 6c  ethods Static Cl
8f80: 61 73 73 20 28 53 51 4c 69 74 65 29 0d 0a 20 20  ass (SQLite)..  
8f90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8fa0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
8fb0: 64 65 63 6c 61 72 65 73 20 50 2f 49 6e 76 6f 6b  declares P/Invok
8fc0: 65 20 6d 65 74 68 6f 64 73 20 74 6f 20 63 61 6c  e methods to cal
8fd0: 6c 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l native SQLite 
8fe0: 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  APIs...  /// </s
8ff0: 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
9000: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
9010: 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53 75 70 70  AMEWORK..  [Supp
9020: 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f 64  ressUnmanagedCod
9030: 65 53 65 63 75 72 69 74 79 5d 0d 0a 23 65 6e 64  eSecurity]..#end
9040: 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  if..  internal s
9050: 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73 61  tatic class Unsa
9060: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
9070: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70 75 62 6c  .  {..      publ
9080: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
9090: 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67 65  ExceptionMessage
90a0: 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20 20 20 20  Format =..      
90b0: 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
90c0: 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22  ption in \"{0}\"
90d0: 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 3b 0d 0a   method: {1}";..
90e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9130: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
9140: 6f 6e 20 53 68 61 72 65 64 20 4e 61 74 69 76 65  on Shared Native
9150: 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
9160: 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
9170: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
9180: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
9190: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
91a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
91b0: 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e  / The file exten
91c0: 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 64 79  sion used for dy
91d0: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
91e0: 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ries...      ///
91f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9200: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
9210: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
9220: 67 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  g DllFileExtensi
9230: 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d 0a 0d 0a  on = ".dll";....
9240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9290: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
92a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
92b0: 54 68 65 20 66 69 6c 65 20 65 78 74 65 6e 73 69  The file extensi
92c0: 6f 6e 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  on used for the 
92d0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
92e0: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
92f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9300: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
9310: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
9320: 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c 65 45 78  ing ConfigFileEx
9330: 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63 6f 6e 66  tension = ".conf
9340: 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ig";....      //
9350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9390: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
93a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
93b0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
93c0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
93d0: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
93e0: 6e 20 66 69 6c 65 20 73 70 65 63 69 66 69 63 20  n file specific 
93f0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
9400: 2f 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  / System.Data.SQ
9410: 4c 69 74 65 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  Lite assembly...
9420: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9430: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
9440: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
9450: 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f  nly string XmlCo
9460: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 0d 0a  nfigFileName =..
9470: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
9480: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
9490: 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61 63 65 20  hods).Namespace 
94a0: 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69  + DllFileExtensi
94b0: 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20  on +..          
94c0: 43 6f 6e 66 69 67 46 69 6c 65 45 78 74 65 6e 73  ConfigFileExtens
94d0: 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ion;....      //
94e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
9530: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9540: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
9550: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
9560: 61 74 72 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65  atrion file toke
9570: 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72  n that will be r
9580: 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20  eplaced with..  
9590: 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c      /// the qual
95a0: 69 66 69 65 64 20 70 61 74 68 20 74 6f 20 74 68  ified path to th
95b0: 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
95c0: 61 69 6e 69 6e 67 20 74 68 65 20 58 4d 4c 20 63  aining the XML c
95d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
95e0: 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e 0d 0a 20      /// file... 
95f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9600: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
9610: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
9620: 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c 43 6f 6e  ly string XmlCon
9630: 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
9640: 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22  n =..          "
9650: 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 58  %PreLoadSQLite_X
9660: 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72  mlConfigDirector
9670: 79 25 22 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  y%";..      #end
9680: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
96e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
96f0: 74 65 20 43 6f 6e 73 74 61 6e 74 73 20 28 44 65  te Constants (De
9700: 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f 72 6b 20  sktop Framework 
9710: 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50 4c 41 54  Only)..#if !PLAT
9720: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9730: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
9740: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9750: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
9760: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  e environment va
9770: 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20 74 68 61  riable token tha
9780: 74 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  t will be replac
9790: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
97a0: 2f 2f 20 74 68 65 20 71 75 61 6c 69 66 69 65 64  // the qualified
97b0: 20 70 61 74 68 20 74 6f 20 74 68 65 20 64 69 72   path to the dir
97c0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
97d0: 67 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e  g this assembly.
97e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
97f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
9800: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
9810: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 41 73 73  donly string Ass
9820: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
9830: 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ken =..         
9840: 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74 65   "%PreLoadSQLite
9850: 5f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  _AssemblyDirecto
9860: 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  ry%";....      /
9870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
98c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
98d0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
98e0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
98f0: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
9900: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
9910: 6c 61 63 65 64 20 77 69 74 68 20 61 6e 0d 0a 20  laced with an.. 
9920: 20 20 20 20 20 2f 2f 2f 20 61 62 62 72 65 76 69       /// abbrevi
9930: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72  ation of the tar
9940: 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
9950: 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 73  tribute value as
9960: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
9970: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 61 73       /// this as
9980: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
9990: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
99a0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
99b0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
99c0: 69 6e 67 20 54 61 72 67 65 74 46 72 61 6d 65 77  ing TargetFramew
99d0: 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  orkToken =..    
99e0: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
99f0: 51 4c 69 74 65 5f 54 61 72 67 65 74 46 72 61 6d  QLite_TargetFram
9a00: 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e 64 69 66  ework%";..#endif
9a10: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
9a20: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
9a80: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
9a90: 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ata..      /// <
9aa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ab0: 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73  /// This lock is
9ac0: 20 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74   used to protect
9ad0: 20 74 68 65 20 73 74 61 74 69 63 20 5f 53 51 4c   the static _SQL
9ae0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 46  iteNativeModuleF
9af0: 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
9b00: 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  /// _SQLiteNativ
9b10: 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 2c 20 61  eModuleHandle, a
9b20: 6e 64 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  nd processorArch
9b30: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
9b40: 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20  s fields...     
9b50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9b60: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9b70: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f  tatic readonly o
9b80: 62 6a 65 63 74 20 73 74 61 74 69 63 53 79 6e 63  bject staticSync
9b90: 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
9ba0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  t();....      //
9bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
9c00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9c10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
9c20: 74 69 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74  tionary stores t
9c30: 68 65 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  he mappings betw
9c40: 65 65 6e 20 70 72 6f 63 65 73 73 6f 72 20 61 72  een processor ar
9c50: 63 68 69 74 65 63 74 75 72 65 0d 0a 20 20 20 20  chitecture..    
9c60: 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61 6e 64 20    /// names and 
9c70: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 2e 20  platform names. 
9c80: 20 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20   These mappings 
9c90: 61 72 65 20 6e 6f 77 20 75 73 65 64 20 66 6f 72  are now used for
9ca0: 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   two..      /// 
9cb0: 70 75 72 70 6f 73 65 73 2e 20 20 46 69 72 73 74  purposes.  First
9cc0: 2c 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20  , they are used 
9cd0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
9ce0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64  the assembly cod
9cf0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73  e..      /// bas
9d00: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
9d10: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
9d20: 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73 65 64 20  location, based 
9d30: 75 70 6f 6e 20 77 68 65 74 68 65 72 20 6f 6e 65  upon whether one
9d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d  ..      /// or m
9d50: 6f 72 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 64  ore of the named
9d60: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
9d70: 20 65 78 69 73 74 20 77 69 74 68 69 6e 20 74 68   exist within th
9d80: 65 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 0d  e assembly code.
9d90: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61 73 65 2e  .      /// base.
9da0: 20 20 53 65 63 6f 6e 64 2c 20 74 68 65 79 20 61    Second, they a
9db0: 72 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 73  re used to assis
9dc0: 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65  t in loading the
9dd0: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
9de0: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69      /// SQLite i
9df0: 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20  nterop assembly 
9e00: 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74  into the current
9e10: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20   process...     
9e20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9e30: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
9e40: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
9e50: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
9e60: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
9e70: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 3b  ecturePlatforms;
9e80: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ed0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9ee0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ef0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
9f00: 63 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61  cached return va
9f10: 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  lue from the..  
9f20: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9f30: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
9f40: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
9f50: 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  od -OR- null if 
9f60: 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20  that method..   
9f70: 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72     /// has never
9f80: 20 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69   returned a vali
9f90: 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  d value...      
9fa0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9fb0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
9fc0: 61 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68  atic string cach
9fd0: 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
9fe0: 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ory;....      //
9ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a030: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a040: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a050: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
a060: 73 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a  s field is non-z
a070: 65 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65  ero, it indicate
a080: 73 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s the..      ///
a090: 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 41   <see cref="GetA
a0a0: 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
a0b0: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20  " /> method was 
a0c0: 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61  not able to loca
a0d0: 74 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  te a..      /// 
a0e0: 73 75 69 74 61 62 6c 65 20 61 73 73 65 6d 62 6c  suitable assembl
a0f0: 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  y directory.  Th
a100: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a110: 65 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65  e cref="GetCache
a120: 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
a130: 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  ry" /> method wi
a140: 6c 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20  ll check this.. 
a150: 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61       /// field a
a160: 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69  nd skips calls i
a170: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
a180: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
a190: 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a 20 20 20  rectory" />..   
a1a0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68     /// method wh
a1b0: 65 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e  enever it is non
a1c0: 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f  -zero...      //
a1d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a1e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
a1f0: 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73 65 6d 62  ic bool noAssemb
a200: 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a  lyDirectory;....
a210: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a260: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a270: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a280: 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68  This is the cach
a290: 65 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  ed return value 
a2a0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
a2b0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
a2c0: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
a2d0: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ame" /> method -
a2e0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74  OR- null if that
a2f0: 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f   method..      /
a300: 2f 2f 20 68 61 73 20 6e 65 76 65 72 20 72 65 74  // has never ret
a310: 75 72 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61  urned a valid va
a320: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
a330: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a340: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
a350: 20 73 74 72 69 6e 67 20 63 61 63 68 65 64 58 6d   string cachedXm
a360: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 3b  lConfigFileName;
a370: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a3d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a3e0: 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69  /// When this fi
a3f0: 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eld is non-zero,
a400: 20 69 74 20 69 6e 64 69 63 61 74 65 73 20 74 68   it indicates th
a410: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a420: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
a430: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
a440: 20 6d 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20   method was not 
a450: 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61  able to locate a
a460: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74  ..      /// suit
a470: 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75  able XML configu
a480: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
a490: 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
a4a0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
a4b0: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
a4c0: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
a4d0: 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68  od will check th
a4e0: 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69  is..      /// fi
a4f0: 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61  eld and skips ca
a500: 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65  lls into the <se
a510: 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f  e cref="GetXmlCo
a520: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e  nfigFileName" />
a530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
a540: 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74 20 69  od whenever it i
a550: 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  s non-zero...   
a560: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a570: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
a580: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 58   static bool noX
a590: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
a5a0: 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
a5b0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a600: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
a610: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a620: 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f 77 2c 20     /// For now, 
a630: 74 68 69 73 20 6d 65 74 68 6f 64 20 73 69 6d 70  this method simp
a640: 6c 79 20 63 61 6c 6c 73 20 74 68 65 20 49 6e 69  ly calls the Ini
a650: 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f 64 2e 0d  tialize method..
a660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a670: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 73 74 61  mary>..      sta
a680: 74 69 63 20 55 6e 73 61 66 65 4e 61 74 69 76 65  tic UnsafeNative
a690: 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20 20 20 20  Methods()..     
a6a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e   {..          In
a6b0: 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 20 20 20  itialize();..   
a6c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a720: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a730: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
a740: 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74   to initialize t
a750: 68 69 73 20 63 6c 61 73 73 20 62 79 20 70 72 65  his class by pre
a760: 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74  -loading the nat
a770: 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
a780: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 66 6f    /// library fo
a790: 72 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  r the processor 
a7a0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
a7b0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
a7c0: 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ess...      /// 
a7d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a7e0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a7f0: 63 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a  c void Initializ
a800: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
a810: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
a820: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
a830: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
a840: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
a850: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
a860: 65 61 74 65 20 74 68 65 20 6c 69 73 74 73 20 6f  eate the lists o
a870: 66 20 73 74 61 74 69 73 74 69 63 73 20 74 68 61  f statistics tha
a880: 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 0d 0a  t will contain..
a890: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a8a0: 20 20 20 76 61 72 69 6f 75 73 20 63 6f 75 6e 74     various count
a8b0: 73 20 75 73 65 64 20 69 6e 20 64 65 62 75 67 67  s used in debugg
a8c0: 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ing, including t
a8d0: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
a8e0: 20 20 20 20 20 20 20 6e 75 6d 62 65 72 20 6f 66         number of
a8f0: 20 74 69 6d 65 73 20 65 61 63 68 20 73 65 74 74   times each sett
a900: 69 6e 67 20 76 61 6c 75 65 20 68 61 73 20 62 65  ing value has be
a910: 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  en read...      
a920: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
a930: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 69 74    DebugData.Init
a940: 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e 64 69  ialize();..#endi
a950: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
a960: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
a970: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
a980: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63     // NOTE: Chec
a990: 6b 20 69 66 20 61 20 64 65 62 75 67 67 65 72 20  k if a debugger 
a9a0: 6e 65 65 64 73 20 74 6f 20 62 65 20 61 74 74 61  needs to be atta
a9b0: 63 68 65 64 20 62 65 66 6f 72 65 20 64 6f 69 6e  ched before doin
a9c0: 67 20 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 20  g any..         
a9d0: 20 2f 2f 20 20 20 20 20 20 20 72 65 61 6c 20 77   //       real w
a9e0: 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ork...          
a9f0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 48 65  //..          He
aa00: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4d 61 79 62  lperMethods.Mayb
aa10: 65 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67  eBreakIntoDebugg
aa20: 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  er();....#if SQL
aa30: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
aa40: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
aa50: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
aa60: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69  ACTFRAMEWORK..#i
aa70: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
aa80: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
aa90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
aaa0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
aab0: 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c  e "No_PreLoadSQL
aac0: 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  ite" environment
aad0: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
aae0: 20 28 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20   (to..          
aaf0: 2f 2f 20 20 20 20 20 20 20 61 6e 79 74 68 69 6e  //       anythin
ab00: 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20 6f 66 20  g), skip all of 
ab10: 6f 75 72 20 73 70 65 63 69 61 6c 20 63 6f 64 65  our special code
ab20: 20 61 6e 64 20 73 69 6d 70 6c 79 20 72 65 74 75   and simply retu
ab30: 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  rn...          /
ab40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
ab50: 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
ab60: 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53 51 4c 69  ("No_PreLoadSQLi
ab70: 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75  te", null) != nu
ab80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
ab90: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e 64     return;..#end
aba0: 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  if..#endif....  
abb0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
abc0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
abd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
abe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
abf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
ac00: 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72 65 20 74  ODO: Make sure t
ac10: 68 69 73 20 6c 69 73 74 20 69 73 20 75 70 64 61  his list is upda
ac20: 74 65 64 20 69 66 20 74 68 65 20 73 75 70 70 6f  ted if the suppo
ac30: 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  rted..          
ac40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f      //       pro
ac50: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
ac60: 75 72 65 20 6e 61 6d 65 73 20 61 6e 64 2f 6f 72  ure names and/or
ac70: 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 0d   platform names.
ac80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
ac90: 2f 20 20 20 20 20 20 20 63 68 61 6e 67 65 73 2e  /       changes.
aca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
acb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
acc0: 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
acd0: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
ace0: 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  orms == null).. 
acf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
ad20: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
ad30: 20 43 72 65 61 74 65 20 74 68 65 20 6d 61 70 20   Create the map 
ad40: 6f 66 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  of processor arc
ad50: 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73 0d  hitecture names.
ad60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad70: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 70     //       to p
ad80: 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73  latform names us
ad90: 69 6e 67 20 61 20 63 61 73 65 2d 69 6e 73 65 6e  ing a case-insen
ada0: 73 69 74 69 76 65 20 73 74 72 69 6e 67 0d 0a 20  sitive string.. 
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adc0: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d 70 61 72   //       compar
add0: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
ade0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
adf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
ae00: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
ae10: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20  rePlatforms =.. 
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae30: 20 20 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e       new Diction
ae40: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
ae50: 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ng>(..          
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae70: 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f  StringComparer.O
ae80: 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65  rdinalIgnoreCase
ae90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
aea0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
aec0: 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65   NOTE: Setup the
aed0: 20 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f 72   list of platfor
aee0: 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63 69 61 74  m names associat
aef0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
af00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
af10: 20 20 20 20 74 68 65 20 73 75 70 70 6f 72 74 65      the supporte
af20: 64 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  d processor arch
af30: 69 74 65 63 74 75 72 65 73 2e 0d 0a 20 20 20 20  itectures...    
af40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
af50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af60: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
af70: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
af80: 6d 73 2e 41 64 64 28 22 78 38 36 22 2c 20 22 57  ms.Add("x86", "W
af90: 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20 20 20 20  in32");..       
afa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
afb0: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
afc0: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
afd0: 4d 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a  MD64", "x64");..
afe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aff0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
b000: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
b010: 2e 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74  .Add("IA64", "It
b020: 61 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20  anium");..      
b030: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
b040: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
b050: 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22  ePlatforms.Add("
b060: 41 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d  ARM", "WinCE");.
b070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
b080: 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
b090: 54 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49  TANDARD || USE_I
b0a0: 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c  NTEROP_DLL || PL
b0b0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b0c0: 41 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45  AMEWORK..#if PRE
b0d0: 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52  LOAD_NATIVE_LIBR
b0e0: 41 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARY..           
b0f0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b100: 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20       // BUGBUG: 
b110: 57 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72  What about other
b120: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
b130: 61 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20  ains?..         
b140: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b150: 20 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69         if (_SQLi
b160: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
b170: 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndle == IntPtr.Z
b180: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
b190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b1a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b1b0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
b1c0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
b1d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
b1e0: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
b1f0: 63 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  cture = null;...
b200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b210: 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f     /* IGNORED */
b220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b230: 20 20 20 20 53 65 61 72 63 68 46 6f 72 44 69 72      SearchForDir
b240: 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b260: 65 66 20 62 61 73 65 44 69 72 65 63 74 6f 72 79  ef baseDirectory
b270: 2c 20 72 65 66 20 70 72 6f 63 65 73 73 6f 72 41  , ref processorA
b280: 72 63 68 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d  rchitecture);...
b290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b2a0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b2b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
b2c0: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65  : Attempt to pre
b2d0: 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65  -load the SQLite
b2e0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f   core library (o
b2f0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
b300: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
b310: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
b320: 61 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74  and store both t
b330: 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20  he file name..  
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b350: 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74  //       and nat
b360: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
b370: 65 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67  e for later usag
b380: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
b390: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b3a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49              /* I
b3b0: 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20  GNORED */..     
b3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
b3d0: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a  LoadSQLiteDll(..
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3f0: 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63 74        baseDirect
b400: 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72 41 72  ory, processorAr
b410: 63 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20  chitecture,..   
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61     ref _SQLiteNa
b440: 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61  tiveModuleFileNa
b450: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
b460: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f             ref _
b470: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
b480: 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  leHandle);..    
b490: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
b4a0: 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dif..#endif..   
b4b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b4c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
b4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b510: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
b520: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b530: 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77   /// Combines tw
b540: 6f 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e 0d  o path strings..
b550: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b560: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b570: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61   <param name="pa
b580: 74 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  th1">..      ///
b590: 20 54 68 65 20 66 69 72 73 74 20 70 61 74 68 20   The first path 
b5a0: 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  -OR- null...    
b5b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b5c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
b5d0: 20 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a   name="path2">..
b5e0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65        /// The se
b5f0: 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e  cond path -OR- n
b600: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
b610: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b620: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
b630: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
b640: 62 69 6e 65 64 20 70 61 74 68 20 73 74 72 69 6e  bined path strin
b650: 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62  g -OR- null if b
b660: 6f 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67 69  oth of the origi
b670: 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20  nal path..      
b680: 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65 20  /// strings are 
b690: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
b6a0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
b6b0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
b6c0: 63 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43 6f  c string MaybeCo
b6d0: 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20  mbinePath(..    
b6e0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74        string pat
b6f0: 68 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73  h1,..          s
b700: 74 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20 20  tring path2..   
b710: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
b720: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
b730: 28 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d  (path1 != null).
b740: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
b750: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b760: 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a  path2 != null)..
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43 6f    return Path.Co
b790: 6d 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61 74  mbine(path1, pat
b7a0: 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h2);..          
b7b0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b7d0: 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20 20  rn path1;..     
b7e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b7f0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
b800: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b810: 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20     if (path2 != 
b820: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
b830: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b840: 70 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20 20  path2;..        
b850: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
b860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b870: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
b880: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
b890: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8e0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
b8f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b900: 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63  /// Resets the c
b910: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
b920: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
b930: 65 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  e value, thus fo
b940: 72 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  rcing the..     
b950: 20 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74   /// next call t
b960: 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
b970: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
b980: 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  ileName" /> meth
b990: 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
b9a0: 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
b9b0: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
b9c0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
b9d0: 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
b9e0: 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
b9f0: 2f 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  / XML configurat
ba00: 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ion file name...
ba10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ba20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
ba30: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
ba40: 52 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  ResetCachedXmlCo
ba50: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a  nfigFileName()..
ba60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ba70: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
ba80: 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
ba90: 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
baa0: 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
bab0: 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
bac0: 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63  "Method_ResetCac
bad0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
bae0: 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  Name");..#endif.
baf0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
bb00: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
bb10: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
bb20: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
bb30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
bb40: 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f       cachedXmlCo
bb50: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  nfigFileName = n
bb60: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
bb70: 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46      noXmlConfigF
bb80: 69 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b  ileName = false;
bb90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
bba0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
bc00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bc10: 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
bc20: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
bc30: 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e  e cached XML con
bc40: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
bc50: 6e 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20 20  name for the..  
bc60: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
bc70: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
bc80: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
bc90: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
bca0: 6e 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20 20  nents, if..     
bcb0: 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20   /// available. 
bcc0: 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20 58   If the cached X
bcd0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
bce0: 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65   file name value
bcf0: 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
bd00: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74 68  // available, th
bd10: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
bd20: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
bd30: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  e" /> method wil
bd40: 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  l..      /// be 
bd50: 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74  used to obtain t
bd60: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
bd70: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d  tion file name..
bd80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
bd90: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bda0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
bdb0: 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f    /// The XML co
bdc0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
bdd0: 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20   name -OR- null 
bde0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
bdf0: 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
be00: 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f    /// or does no
be10: 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20 20  t exist...      
be20: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
be30: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
be40: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 43  atic string GetC
be50: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
be60: 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  leName()..      
be70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
be80: 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64  gion Debug Build
be90: 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47   Only..#if DEBUG
bea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
beb0: 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f  gData.IncrementO
bec0: 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f  therCount("Metho
bed0: 64 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f  d_GetCachedXmlCo
bee0: 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d  nfigFileName");.
bef0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
bf00: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
bf10: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
bf20: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
bf30: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
bf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bf50: 28 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  (cachedXmlConfig
bf60: 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  FileName != null
bf70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
bf80: 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63 68       return cach
bf90: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
bfa0: 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
bfb0: 20 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43        if (noXmlC
bfc0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a  onfigFileName)..
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfe0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
bff0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c000: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c010: 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  GetXmlConfigFile
c020: 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d  Name();..      }
c030: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c080: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
c090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c0a0: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
c0b0: 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c 20  returns the XML 
c0c0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
c0d0: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
c0e0: 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
c0f0: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
c100: 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65  he managed Syste
c110: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
c120: 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20  mponents...     
c130: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c140: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
c150: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
c160: 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  The XML configur
c170: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20  ation file name 
c180: 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20  -OR- null if it 
c190: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
c1a0: 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ined..      /// 
c1b0: 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73  or does not exis
c1c0: 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
c1d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
c1e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
c1f0: 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66  tring GetXmlConf
c200: 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20  igFileName()..  
c210: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c220: 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
c230: 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
c240: 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
c250: 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
c260: 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
c270: 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66  ethod_GetXmlConf
c280: 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23  igFileName");..#
c290: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
c2a0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c2b0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c2c0: 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
c2d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
c2e0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  eName;....#if !P
c2f0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c300: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
c310: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
c320: 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
c330: 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
c340: 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
c350: 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79    fileName = May
c360: 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69  beCombinePath(di
c370: 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66  rectory, XmlConf
c380: 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  igFileName);....
c390: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69            if (Fi
c3a0: 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
c3b0: 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
c3c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c3d0: 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
c3e0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
c3f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c400: 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65             cache
c410: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
c420: 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  me = fileName;..
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c440: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c450: 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
c460: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
c470: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
c480: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
c490: 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  GetCachedAssembl
c4a0: 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20  yDirectory();.. 
c4b0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
c4c0: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
c4d0: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
c4e0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
c4f0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c500: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
c510: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
c520: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c530: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
c540: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c570: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
c580: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  gFileName = file
c590: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
c5a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c5b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c5c0: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
c5d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c5e0: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
c5f0: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
c600: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c610: 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67       noXmlConfig
c620: 46 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b  FileName = true;
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
c640: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
c650: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d  n null;..      }
c660: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
c670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
c6c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c6d0: 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73 61    /// If necessa
c6e0: 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c 6c  ry, replaces all
c6f0: 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20 63   supported XML c
c700: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c710: 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20  e tokens..      
c720: 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20 61  /// with their a
c730: 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65 73  ssociated values
c740: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c750: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c760: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
c770: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
c780: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
c790: 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  f the XML config
c7a0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65 69  uration file bei
c7b0: 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20  ng read...      
c7c0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
c7d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
c7e0: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
c7f0: 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e      /// A settin
c800: 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72 6f  g value read fro
c810: 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67  m the XML config
c820: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
c830: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
c840: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
c850: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
c860: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
c870: 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  he <paramref nam
c880: 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c  e="value" /> wil
c890: 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20  l all supported 
c8a0: 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
c8b0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
c8c0: 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
c8d0: 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
c8e0: 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
c8f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
c900: 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
c910: 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
c920: 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
c930: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
c940: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
c950: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
c960: 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69  placeXmlConfigFi
c970: 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20  leTokens(..     
c980: 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65       string file
c990: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
c9a0: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
c9b0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
c9c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
c9d0: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
c9e0: 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29  lOrEmpty(value))
c9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
ca00: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
ca10: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
ca20: 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
ca30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ca40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ca50: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
ca90: 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
caa0: 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66  tDirectoryName(f
cab0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cad0: 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
cae0: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72  sNullOrEmpty(dir
caf0: 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20  ectory))..      
cb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
cb30: 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61  ue = value.Repla
cb40: 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb60: 20 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65     XmlConfigDire
cb70: 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65  ctoryToken, dire
cb80: 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  ctory);..       
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
cba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cbb0: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
cbc0: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
cbd0: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
cbf0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
cc00: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
cc10: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
cc20: 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
cc30: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
cc40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
cc50: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
cc60: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
cc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cc80: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ccb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
ccc0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ccd0: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
cce0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd00: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
cd10: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
cd20: 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
cd30: 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd50: 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
cd60: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
cd70: 65 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a  eplace XML " +..
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63                "c
cda0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
cdb0: 65 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73  e \"{0}\" tokens
cdc0: 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
cdf0: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
ce00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
ce10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce30: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
ce50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
ce70: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
ce80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce90: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
cea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ceb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cec0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
ced0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
cee0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
cef0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
cf50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
cf60: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
cf70: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
cf80: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65  value of the spe
cf90: 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20  cified setting, 
cfa0: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
cfb0: 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 58   /// specified X
cfc0: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
cfd0: 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   file...      //
cfe0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cff0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d000: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
d010: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
d020: 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20 63  ame of the XML c
d030: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
d040: 65 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20  e to read...    
d050: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d060: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d070: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
d080: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
d090: 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
d0a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
d0b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
d0c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
d0d0: 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
d0e0: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
d0f0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
d100: 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
d110: 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
d120: 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
d130: 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
d140: 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
d150: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d160: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
d170: 20 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d   name="expand">.
d180: 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
d190: 65 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61 6e  ero to expand an
d1a0: 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  y environment va
d1b0: 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63 65  riable reference
d1c0: 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a  s contained in..
d1d0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 65        /// the se
d1e0: 74 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 62  tting value to b
d1f0: 65 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 69  e returned.  Thi
d200: 73 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  s has no effect 
d210: 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
d220: 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46     /// Compact F
d230: 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20  ramework...     
d240: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
d250: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
d260: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
d270: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73  e value of the s
d280: 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20  etting -OR- the 
d290: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73 70  default value sp
d2a0: 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20 20  ecified by..    
d2b0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
d2c0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
d2d0: 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20  > if it has not 
d2e0: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
d2f0: 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f  tly or..      //
d300: 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
d310: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
d320: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
d330: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
d340: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 65  tic string GetSe
d350: 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c  ttingValueViaXml
d360: 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20 20  ConfigFile(..   
d370: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
d380: 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f  leName, /* in */
d390: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
d3a0: 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20  ng name,     /* 
d3b0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
d3c0: 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
d3d0: 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
d3e0: 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e        bool expan
d3f0: 64 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  d      /* in */.
d400: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
d410: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d420: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
d430: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d440: 20 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d   if ((fileName =
d450: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65  = null) || (name
d460: 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d480: 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
d490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d4a0: 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75  XmlDocument docu
d4b0: 6d 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f  ment = new XmlDo
d4c0: 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20  cument();....   
d4d0: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
d4e0: 65 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d  ent.Load(fileNam
d4f0: 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
d500: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
d510: 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d   XmlElement elem
d520: 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53  ent = document.S
d530: 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
d540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d550: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
d560: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
d570: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
d580: 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  iantCulture,..  
d590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5a0: 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f  "/configuration/
d5b0: 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64 5b  appSettings/add[
d5c0: 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61  @key='{0}']", na
d5d0: 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20 20  me)) as..       
d5e0: 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45 6c             XmlEl
d5f0: 65 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20  ement; /* throw 
d600: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
d610: 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20      if (element 
d620: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
d630: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d640: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
d650: 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ing value = null
d660: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d670: 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65         if (eleme
d680: 6e 74 2e 48 61 73 41 74 74 72 69 62 75 74 65 28  nt.HasAttribute(
d690: 22 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20 20  "value"))..     
d6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6b0: 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74   value = element
d6c0: 2e 47 65 74 41 74 74 72 69 62 75 74 65 28 22 76  .GetAttribute("v
d6d0: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d6f0: 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
d700: 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
d710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d720: 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
d730: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d740: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
d750: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
d760: 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d780: 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
d790: 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
d7a0: 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
d7b0: 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7d0: 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
d7e0: 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
d7f0: 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
d800: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
d810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d820: 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c      value = Repl
d830: 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  aceXmlConfigFile
d840: 54 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c  Tokens(fileName,
d850: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
d860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
d870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d880: 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
d890: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d8b0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
d8c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d8d0: 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
d8e0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
d8f0: 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
d900: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
d910: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
d920: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
d930: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
d940: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
d950: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
d960: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
d970: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
d980: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9b0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
d9c0: 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
d9d0: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
da00: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
da10: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
da20: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
da30: 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72 65              "pre
da40: 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
da50: 6f 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c 22  o get setting \"
da60: 7b 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d  {0}\" value " +.
da70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da80: 20 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c         "from XML
da90: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
daa0: 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d  ile \"{1}\": {2}
dab0: 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ", name,..      
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f  fileName, e)); /
dae0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
daf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
db00: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
db30: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
db40: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
db50: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
db60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
db70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 64         return @d
db80: 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  efault;..      }
db90: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
dba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbe0: 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
dbf0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
dc00: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f  EWORK..      ///
dc10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
dc20: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
dc30: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
dc40: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
dc50: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
dc60: 20 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20 20   that is..      
dc70: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
dc80: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
dc90: 64 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  d managed assemb
dca0: 6c 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c  ly, if applicabl
dcb0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
dcc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
dcd0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
dce0: 22 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20  "assembly">..   
dcf0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
dd00: 65 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20 72  ed assembly to r
dd10: 65 61 64 20 74 68 65 20 74 61 72 67 65 74 20 66  ead the target f
dd20: 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75  ramework attribu
dd30: 74 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  te value..      
dd40: 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20  /// from...     
dd50: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
dd60: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
dd70: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
dd80: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74  e value of the t
dd90: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
dda0: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
ddb0: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
ddc0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e  d..      /// man
ddd0: 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f  aged assembly -O
dde0: 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
ddf0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
de00: 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20  ed.  If this..  
de10: 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79      /// assembly
de20: 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69   was compiled wi
de30: 74 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20  th a version of 
de40: 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
de50: 72 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  rk prior to..   
de60: 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34     /// version 4
de70: 2e 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65  .0, the value re
de80: 74 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c 65  turned MAY refle
de90: 63 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e 20  ct that version 
dea0: 6f 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  of the .NET..   
deb0: 20 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b     /// Framework
dec0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
ded0: 6f 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  one associated w
dee0: 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
def0: 64 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20  d managed..     
df00: 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a   /// assembly...
df10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
df20: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
df30: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
df40: 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61 72  g GetAssemblyTar
df50: 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20  getFramework(.. 
df60: 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
df70: 79 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  y assembly..    
df80: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
df90: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
dfa0: 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
dfb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
dfc0: 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45  #if NET_40 || NE
dfd0: 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20  T_45 || NET_451 
dfe0: 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45  || NET_452 || NE
dff0: 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20  T_46 || NET_461 
e000: 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45  || NET_462 || NE
e010: 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37 31 0d  T_47 || NET_471.
e020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
e030: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
e040: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e050: 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
e060: 62 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 0d 0a  bly.IsDefined(..
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e080: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
e090: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
e0a0: 41 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73  Attribute), fals
e0b0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
e0c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0e0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
e0f0: 74 74 72 69 62 75 74 65 20 74 61 72 67 65 74 46  ttribute targetF
e100: 72 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20 20  ramework =..    
e110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e120: 20 20 20 20 20 20 28 54 61 72 67 65 74 46 72 61        (TargetFra
e130: 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29  meworkAttribute)
e140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e150: 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
e160: 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74  mbly.GetCustomAt
e170: 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20  tributes(..     
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e190: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
e1a0: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
e1b0: 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
e1c0: 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  )[0];....       
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e1e0: 65 74 75 72 6e 20 74 61 72 67 65 74 46 72 61 6d  eturn targetFram
e1f0: 65 77 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b 4e  ework.FrameworkN
e200: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
e210: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e220: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e230: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
e240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
e250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e260: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
e270: 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
e280: 20 20 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 33    }..#elif NET_3
e290: 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  5..             
e2a0: 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72 61   return ".NETFra
e2b0: 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
e2c0: 33 2e 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45 54  3.5";..#elif NET
e2d0: 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20  _20..           
e2e0: 20 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46     return ".NETF
e2f0: 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e  ramework,Version
e300: 3d 76 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66 0d  =v2.0";..#endif.
e310: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
e320: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e330: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d   null;..      }.
e340: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
e350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e390: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
e3a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e3b0: 20 2f 2f 2f 20 41 63 63 65 70 74 73 20 61 20 6c   /// Accepts a l
e3c0: 6f 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65  ong target frame
e3d0: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
e3e0: 61 6c 75 65 20 61 6e 64 20 6d 61 6b 65 73 20 69  alue and makes i
e3f0: 74 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20 20  t into a..      
e400: 2f 2f 2f 20 6d 75 63 68 20 73 68 6f 72 74 65 72  /// much shorter
e410: 20 76 65 72 73 69 6f 6e 2c 20 73 75 69 74 61 62   version, suitab
e420: 6c 65 20 66 6f 72 20 75 73 65 20 77 69 74 68 20  le for use with 
e430: 4e 75 47 65 74 20 70 61 63 6b 61 67 65 73 2e 0d  NuGet packages..
e440: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
e450: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e460: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
e470: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lue">..      ///
e480: 20 54 68 65 20 6c 6f 6e 67 20 74 61 72 67 65 74   The long target
e490: 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69   framework attri
e4a0: 62 75 74 65 20 76 61 6c 75 65 20 74 6f 20 63 6f  bute value to co
e4b0: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  nvert...      //
e4c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
e4d0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
e4e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
e4f0: 68 6f 72 74 20 74 61 72 67 65 74 20 66 72 61 6d  hort target fram
e500: 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
e510: 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20  value -OR- null 
e520: 69 66 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20 20  if it cannot..  
e530: 20 20 20 20 2f 2f 2f 20 62 65 20 64 65 74 65 72      /// be deter
e540: 6d 69 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72 74  mined or convert
e550: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
e560: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
e570: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e580: 73 74 72 69 6e 67 20 41 62 62 72 65 76 69 61 74  string Abbreviat
e590: 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  eTargetFramework
e5a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
e5b0: 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
e5c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
e5d0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53  .          if (S
e5e0: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
e5f0: 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
e600: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e610: 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  n value;....    
e620: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
e630: 6c 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 4e 45  lue.Replace(".NE
e640: 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69  TFramework,Versi
e650: 6f 6e 3d 76 22 2c 20 22 6e 65 74 22 29 3b 0d 0a  on=v", "net");..
e660: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
e670: 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
e680: 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74  ".", String.Empt
e690: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
e6a0: 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 76 61 6c   int index = val
e6b0: 75 65 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29 3b  ue.IndexOf(',');
e6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
e6d0: 20 28 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a   (index != -1)..
e6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
e6f0: 6c 75 65 20 3d 20 76 61 6c 75 65 2e 53 75 62 73  lue = value.Subs
e700: 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 3b  tring(0, index);
e710: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
e720: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
e730: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
e740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e780: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e790: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e7a0: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63        /// If nec
e7b0: 65 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73  essary, replaces
e7c0: 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 65   all supported e
e7d0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
e7e0: 62 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20  ble tokens..    
e7f0: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72    /// with their
e800: 20 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75   associated valu
e810: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
e820: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e830: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
e840: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
e850: 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76   /// A setting v
e860: 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 61  alue read from a
e870: 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  n environment va
e880: 72 69 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  riable...      /
e890: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e8a0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
e8b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e8c0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61  value of the <pa
e8d0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c  ramref name="val
e8e0: 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20  ue" /> will all 
e8f0: 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20  supported..     
e900: 20 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   /// environment
e910: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73   variable tokens
e920: 20 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72   replaced.  No r
e930: 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72  eturn value is r
e940: 65 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f  eserved..      /
e950: 2f 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61  // to indicate a
e960: 6e 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d  n error.  This m
e970: 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69  ethod cannot fai
e980: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
e990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e9a0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
e9b0: 74 72 69 6e 67 20 52 65 70 6c 61 63 65 45 6e 76  tring ReplaceEnv
e9c0: 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
e9d0: 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20  Tokens(..       
e9e0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d     string value.
e9f0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
ea00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ea10: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
ea20: 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65  ullOrEmpty(value
ea30: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
ea40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
ea50: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20  tring directory 
ea60: 3d 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d  = GetCachedAssem
ea70: 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d  blyDirectory();.
ea80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ea90: 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
eaa0: 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
eab0: 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
eac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ead0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
eb00: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
eb10: 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65   = value.Replace
eb20: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
eb40: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f  emblyDirectoryTo
eb50: 6b 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b  ken, directory);
eb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eb70: 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
eb80: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
eb90: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
eba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
ebb0: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
ebc0: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
ebd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
ebe0: 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
ebf0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ec00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
ec10: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
ec20: 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
ec30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ec40: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
ec80: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
ec90: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
eca0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
ecd0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
ece0: 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
ecf0: 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed10: 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
ed20: 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
ed30: 65 70 6c 61 63 65 20 61 73 73 65 6d 62 6c 79 20  eplace assembly 
ed40: 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed60: 20 20 20 22 64 69 72 65 63 74 6f 72 79 20 74 6f     "directory to
ed70: 6b 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20  ken: {0}", e)); 
ed80: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
edb0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
edc0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
edd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edf0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
ee00: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
ee20: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
ee30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ee40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
ee50: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73               Ass
ee60: 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d  embly assembly =
ee70: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
ee80: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
ee90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
eea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eeb0: 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d  assembly = Assem
eec0: 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67  bly.GetExecuting
eed0: 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 20 20 20  Assembly();..   
eee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
eef0: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
ef00: 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
ef10: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
ef20: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
ef30: 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  n e)..#else..   
ef40: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
ef50: 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
ef60: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ef70: 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
ef80: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
ef90: 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
efb0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
efc0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
efd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
efe0: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
eff0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
f000: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
f010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f020: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
f030: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
f040: 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
f050: 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f070: 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
f080: 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 65 78 65  ed to obtain exe
f090: 63 75 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20  cuting " +..    
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0b0: 20 20 20 20 20 20 22 61 73 73 65 6d 62 6c 79 3a        "assembly:
f0c0: 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74   {0}", e)); /* t
f0d0: 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
f0e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f100: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
f110: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f130: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
f140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f150: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f180: 73 74 72 69 6e 67 20 74 61 72 67 65 74 46 72 61  string targetFra
f190: 6d 65 77 6f 72 6b 20 3d 20 41 62 62 72 65 76 69  mework = Abbrevi
f1a0: 61 74 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f  ateTargetFramewo
f1b0: 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rk(..           
f1c0: 20 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62         GetAssemb
f1d0: 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  lyTargetFramewor
f1e0: 6b 28 61 73 73 65 6d 62 6c 79 29 29 3b 0d 0a 0d  k(assembly));...
f1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
f200: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
f210: 6c 4f 72 45 6d 70 74 79 28 74 61 72 67 65 74 46  lOrEmpty(targetF
f220: 72 61 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20 20  ramework))..    
f230: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f250: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
f260: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
f280: 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70  alue = value.Rep
f290: 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lace(..         
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2b0: 20 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   TargetFramework
f2c0: 54 6f 6b 65 6e 2c 20 74 61 72 67 65 74 46 72 61  Token, targetFra
f2d0: 6d 65 77 6f 72 6b 29 3b 0d 0a 20 20 20 20 20 20  mework);..      
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
f2f0: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
f300: 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
f310: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
f320: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
f330: 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
f340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f350: 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
f360: 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f380: 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
f390: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f3a0: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
f3c0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
f3d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
f400: 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
f410: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
f420: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
f430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f440: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
f450: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
f460: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
f470: 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
f480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f490: 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
f4a0: 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74  led to replace t
f4b0: 61 72 67 65 74 20 22 20 2b 0d 0a 20 20 20 20 20  arget " +..     
f4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4d0: 20 20 20 20 20 20 20 20 20 22 66 72 61 6d 65 77           "framew
f4e0: 6f 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c  ork token: {0}",
f4f0: 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
f500: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
f510: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f530: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
f540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
f570: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
f580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f590: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f5c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
f5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
f5e0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
f5f0: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
f600: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
f650: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
f660: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
f670: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
f680: 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
f690: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
f6a0: 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20  ting, using the 
f6b0: 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  XML..      /// c
f6c0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
f6d0: 65 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76  e and/or the env
f6e0: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
f6f0: 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  es for the curre
f700: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  nt..      /// pr
f710: 6f 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65  ocess and/or the
f720: 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c   current system,
f730: 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e   when available.
f740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
f750: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
f760: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
f770: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
f780: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
f790: 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20   setting...     
f7a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
f7b0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f7c0: 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d  name="default">.
f7d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
f7e0: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
f7f0: 6e 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69  ned if the setti
f800: 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ng has not been 
f810: 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a  set explicitly..
f820: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e        /// or can
f830: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
f840: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
f850: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
f860: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
f870: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
f880: 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20   of the setting 
f890: 2d 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74  -OR- the default
f8a0: 20 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64   value specified
f8b0: 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   by..      /// <
f8c0: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64  paramref name="d
f8d0: 65 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74  efault" /> if it
f8e0: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65   has not been se
f8f0: 74 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d  t explicitly or.
f900: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
f910: 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
f920: 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c    By default, al
f930: 6c 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20  l references to 
f940: 65 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20  existing..      
f950: 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  /// environment 
f960: 76 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62  variables will b
f970: 65 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68  e expanded to th
f980: 65 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  eir correspondin
f990: 67 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  g values..      
f9a0: 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76  /// within the v
f9b0: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
f9c0: 6e 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65  ned unless eithe
f9d0: 72 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64  r the "No_Expand
f9e0: 22 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " or..      /// 
f9f0: 22 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61  "No_Expand_<para
fa00: 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  mref name="name"
fa10: 20 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   />" environment
fa20: 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
fa30: 20 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   [to..      /// 
fa40: 61 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20  anything]...    
fa50: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
fa60: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
fa70: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
fa80: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
fa90: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
faa0: 67 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e  g name,    /* in
fab0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73   */..          s
fac0: 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f  tring @default /
fad0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
fae0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23     )..      {..#
faf0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
fb00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
fb10: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fb20: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fb30: 49 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 22  If the special "
fb40: 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74  No_SQLiteGetSett
fb50: 69 6e 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f  ingValue" enviro
fb60: 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
fb70: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62   //       variab
fb80: 6c 65 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e  le is set [to an
fb90: 79 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65  ything], this me
fba0: 74 68 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73  thod will always
fbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
fbc0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 65 20       return the 
fbd0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a  default value...
fbe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
fbf0: 20 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69          if (Envi
fc00: 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
fc10: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
fc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc30: 20 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65   "No_SQLiteGetSe
fc40: 74 74 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20  ttingValue") != 
fc50: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
fc60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fc70: 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
fc80: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
fc90: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
fca0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
fcf0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65          if (name
fd00: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
fd10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fd20: 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20  @default;....   
fd30: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fd80: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
fd90: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
fda0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
fdb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
fdc0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
fdd0: 57 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20  We are about to 
fde0: 72 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76  read a setting v
fdf0: 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 65 6e  alue from the en
fe00: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20  vironment..     
fe10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72       //       or
fe20: 20 70 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20 74   possibly from t
fe30: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
fe40: 74 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74  tion file; creat
fe50: 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  e or..          
fe60: 2f 2f 20 20 20 20 20 20 20 69 6e 63 72 65 6d 65  //       increme
fe70: 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  nt the appropria
fe80: 74 65 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77  te statistic now
fe90: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67  .          Debug
feb0: 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65  Data.IncrementSe
fec0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e  ttingReadCount(n
fed0: 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65  ame, false);..#e
fee0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
fef0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ff00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ff10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ff50: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
ff60: 65 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 20 2f  expand = true; /
ff70: 2a 20 53 48 41 52 45 44 3a 20 45 6e 76 69 72 6f  * SHARED: Enviro
ff80: 6e 6d 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c 20  nment -AND- XML 
ff90: 63 6f 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f 0d  config file. */.
ffa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fff0: 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
10000 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10010 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
10020 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e  string value = n
10030 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
10040 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
10050 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
10060 56 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70  Variable("No_Exp
10070 61 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  and") != null)..
10080 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10090 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e             expan
100a0 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
100b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
100c0 20 20 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69     else if (Envi
100d0 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72  ronment.GetEnvir
100e0 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d  onmentVariable(.
100f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10100 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
10110 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
10120 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
10130 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
10150 4e 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20  No_Expand_{0}", 
10160 6e 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d  name)) != null).
10170 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
10180 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61              expa
10190 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  nd = false;..   
101a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
101b0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e        value = En
101c0 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
101d0 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
101e0 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
101f0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
10200 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76  .IsNullOrEmpty(v
10210 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
10220 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10230 20 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a     if (expand)..
10240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10250 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f    value = Enviro
10260 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69  nment.ExpandEnvi
10270 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73  ronmentVariables
10280 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
10290 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
102a0 3d 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e  = ReplaceEnviron
102b0 6d 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65  mentVariableToke
102c0 6e 73 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ns(value);..    
102d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
102e0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
102f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10300 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
10310 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
10320 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10330 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
10340 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e  "No_SQLiteXmlCon
10350 66 69 67 46 69 6c 65 22 20 65 6e 76 69 72 6f 6e  figFile" environ
10360 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
10370 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
10380 20 20 20 20 20 73 65 74 20 5b 74 6f 20 61 6e 79       set [to any
10390 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74  thing], this met
103a0 68 6f 64 20 77 69 6c 6c 20 4e 45 56 45 52 20 72  hod will NEVER r
103b0 65 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ead from the..  
103c0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
103d0 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
103e0 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  on file...      
103f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10400 20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e    if (Environmen
10410 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
10420 56 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20  Variable(..     
10430 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53             "No_S
10440 51 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69  QLiteXmlConfigFi
10450 6c 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  le") != null).. 
10460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10470 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10480 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
10490 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
104a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
10500 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
10510 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
10520 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  BUG..          /
10530 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
10540 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f  NOTE: We are abo
10550 75 74 20 74 6f 20 72 65 61 64 20 61 20 73 65 74  ut to read a set
10560 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20  ting value from 
10570 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20  the XML..       
10580 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66     //       conf
10590 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20  iguration file; 
105a0 63 72 65 61 74 65 20 6f 72 20 69 6e 63 72 65 6d  create or increm
105b0 65 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69  ent the appropri
105c0 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ate..          /
105d0 2f 20 20 20 20 20 20 20 73 74 61 74 69 73 74 69  /       statisti
105e0 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  c now...        
105f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10600 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
10610 65 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f  entSettingReadCo
10620 75 6e 74 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b  unt(name, true);
10630 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
10640 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10650 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
10660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  /....          r
106b0 65 74 75 72 6e 20 47 65 74 53 65 74 74 69 6e 67  eturn GetSetting
106c0 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69  ValueViaXmlConfi
106d0 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  gFile(..        
106e0 20 20 20 20 20 20 47 65 74 43 61 63 68 65 64 58        GetCachedX
106f0 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
10700 28 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75  (), name, @defau
10710 6c 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20  lt, expand);..  
10720 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10770 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
10780 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
10790 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
107a0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
107b0 20 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74   string ListToSt
107c0 72 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e  ring(IList<strin
107d0 67 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20  g> list)..      
107e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
107f0 28 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (list == null)..
10800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10810 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
10820 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
10830 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e  ilder result = n
10840 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ew StringBuilder
10850 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
10860 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
10870 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74   element in list
10880 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
10890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
108a0 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c   (element == nul
108b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
108c0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
108d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
108e0 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67   if (result.Leng
108f0 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
10900 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
10910 74 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a  t.Append(' ');..
10920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10930 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c  result.Append(el
10940 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  ement);..       
10950 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10960 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e    return result.
10970 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
10980 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
109e0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
109f0 69 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68  int CheckForArch
10a00 69 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74  itecturesAndPlat
10a10 66 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20  forms(..        
10a20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
10a30 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ry,..          r
10a40 65 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20  ef List<string> 
10a50 6d 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20  matches..       
10a60 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
10a70 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
10a80 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
10a90 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65        if (matche
10aa0 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
10ab0 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65            matche
10ac0 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72  s = new List<str
10ad0 69 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ing>();....     
10ae0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
10af0 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
10b00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10b10 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
10b20 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
10b30 28 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a  (directory) &&..
10b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b50 20 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68    (processorArch
10b60 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
10b70 73 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  s != null))..   
10b80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ba0 66 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75  foreach (KeyValu
10bb0 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74  ePair<string, st
10bc0 72 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20  ring> pair..    
10bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10be0 20 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65          in proce
10bf0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
10c00 50 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20  Platforms)..    
10c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c30 20 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63         if (Direc
10c40 74 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62  tory.Exists(Mayb
10c50 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72  eCombinePath(dir
10c60 65 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79  ectory, pair.Key
10c70 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
10c80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ca0 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
10cb0 41 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a  Add(pair.Key);..
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
10ce0 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
10cf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d10 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
10d20 75 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b  ue = pair.Value;
10d30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10d40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
10d50 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d70 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
10d80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10d90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44             if (D
10da0 69 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28  irectory.Exists(
10db0 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
10dc0 28 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75  (directory, valu
10dd0 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e)))..          
10de0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e00 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
10e10 2e 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20  .Add(value);..  
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e30 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b          result++
10e40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10e50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
10e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
10e80 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
10e90 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
10ea0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
10eb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
10ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
10f10 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
10f20 6f 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79  ol CheckAssembly
10f30 43 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20  CodeBase(..     
10f40 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
10f50 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20  sembly,..       
10f60 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69     ref string fi
10f70 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
10f80 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
10f90 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10fa0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10fb0 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
10fc0 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
10fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fe0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
10ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11000 73 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20  string codeBase 
11010 3d 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42  = assembly.CodeB
11020 61 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ase;....        
11030 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
11040 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63  .IsNullOrEmpty(c
11050 6f 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20  odeBase))..     
11060 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11070 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
11080 20 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20              Uri 
11090 75 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f  uri = new Uri(co
110a0 64 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20  deBase);..      
110b0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
110c0 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75  ocalFileName = u
110d0 72 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d  ri.LocalPath;...
110e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
110f0 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28  f (!File.Exists(
11100 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d  localFileName)).
11110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11120 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11140 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
11150 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
11160 65 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20  ectoryName(..   
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
11180 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f  ocalFileName); /
11190 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20  * throw */....  
111a0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
111b0 6e 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  ng xmlConfigFile
111c0 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62  Name = MaybeComb
111d0 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
111e0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65              dire
111f0 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
11200 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
11210 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11220 46 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43  File.Exists(xmlC
11230 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d  onfigFileName)).
11240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11250 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11260 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
11270 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
11280 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
112b0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
112c0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
112d0 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
112e0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
112f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11300 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11310 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11330 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
11340 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
11350 61 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63  ader found XML c
11360 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
11370 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
11380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11390 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
113a0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
113b0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
113c0 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
113d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
113e0 20 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67         xmlConfig
113f0 46 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74  FileName)); /* t
11400 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
11410 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11430 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
11440 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11460 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
11470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11480 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
11490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
114a0 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f     fileName = lo
114b0 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  calFileName;..  
114c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114d0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
114e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
114f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c  .              L
11500 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63  ist<string> matc
11510 68 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  hes = null;.... 
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11530 28 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65  (CheckForArchite
11540 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72  cturesAndPlatfor
11550 6d 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65  ms(directory, re
11560 66 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d  f matches) > 0).
11570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
11580 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
11590 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44  CT_20 && TRACE_D
115a0 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20  ETECTION..      
115b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
115c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
115d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
115e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
115f0 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
11600 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
11610 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11630 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
11640 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11660 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
11670 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
11680 61 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76  ader found nativ
11690 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  e sub-directorie
116a0 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  s " +..         
116b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116c0 20 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20   "via code base 
116d0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
116e0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
116f0 3a 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20  : \"{0}\"",..   
11700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11710 20 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72         ListToStr
11720 69 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20  ing(matches))); 
11730 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
11740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11760 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11770 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11790 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
117a0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
117b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
117c0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
117d0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
117e0 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b  = localFileName;
117f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11800 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
11810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11820 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
11830 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11840 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
11850 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
11860 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
11870 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61  ED..          ca
11880 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
11890 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
118a0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
118b0 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
118c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
118d0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
118e0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
118f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
11900 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
11910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11920 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
11930 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
11940 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
11950 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
11960 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11970 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
11980 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
11990 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
119a0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
119b0 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74  -loader failed t
119c0 6f 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73  o check code bas
119d0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f               "fo
119f0 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63  r currently exec
11a00 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20  uting assembly: 
11a10 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
11a20 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
11a30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11a40 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
11a50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a70 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
11a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
11a90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
11aa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11ab0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11ac0 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
11ad0 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  f....      /////
11ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b20 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
11b30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11b40 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20   /// Resets the 
11b50 63 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20  cached assembly 
11b60 64 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65 2c  directory value,
11b70 20 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68   thus forcing th
11b80 65 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f 2f  e next..      //
11b90 2f 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63  / call to <see c
11ba0 72 65 66 3d 22 47 65 74 43 61 63 68 65 64 41 73  ref="GetCachedAs
11bb0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
11bc0 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65   /> method to re
11bd0 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70  ly..      /// up
11be0 6f 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  on the <see cref
11bf0 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
11c00 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
11c10 64 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a  d to fetch the..
11c20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62        /// assemb
11c30 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ly directory... 
11c40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11c50 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
11c60 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  te static void R
11c70 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
11c80 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
11c90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11ca0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
11cb0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
11cc0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
11cd0 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
11ce0 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
11cf0 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68  Method_ResetCach
11d00 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
11d10 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ory");..#endif..
11d20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
11d30 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
11d40 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
11d50 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
11d60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d70 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62      cachedAssemb
11d80 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75  lyDirectory = nu
11d90 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
11da0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
11db0 65 63 74 6f 72 79 20 3d 20 66 61 6c 73 65 3b 0d  ectory = false;.
11dc0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
11dd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
11de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
11e30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11e40 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
11e50 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
11e60 20 63 61 63 68 65 64 20 64 69 72 65 63 74 6f 72   cached director
11e70 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
11e80 6c 79 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 20  ly currently..  
11e90 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20 65 78      /// being ex
11ea0 65 63 75 74 65 64 2c 20 69 66 20 61 76 61 69 6c  ecuted, if avail
11eb0 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61  able.  If the ca
11ec0 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64 69  ched assembly di
11ed0 72 65 63 74 6f 72 79 20 76 61 6c 75 65 0d 0a 20  rectory value.. 
11ee0 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 74 20       /// is not 
11ef0 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c  available, the <
11f00 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
11f10 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
11f20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a  /> method will..
11f30 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65        /// be use
11f40 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20  d to obtain the 
11f50 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
11f60 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry...      /// <
11f70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11f80 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
11f90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69        /// The di
11fa0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
11fb0 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
11fc0 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65  ly being execute
11fd0 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a  d -OR- null if..
11fe0 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e        /// it can
11ff0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
12000 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
12010 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
12020 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
12030 74 72 69 6e 67 20 47 65 74 43 61 63 68 65 64 41  tring GetCachedA
12040 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
12050 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
12060 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
12070 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d  ebug Build Only.
12080 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
12090 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e        DebugData.
120a0 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f  IncrementOtherCo
120b0 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43  unt("Method_GetC
120c0 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
120d0 65 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69  ectory");..#endi
120e0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  f..          #en
120f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
12100 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
12110 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
12120 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12130 20 20 20 20 20 20 20 69 66 20 28 63 61 63 68 65         if (cache
12140 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
12150 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12170 65 74 75 72 6e 20 63 61 63 68 65 64 41 73 73 65  eturn cachedAsse
12180 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a  mblyDirectory;..
12190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121a0 69 66 20 28 6e 6f 41 73 73 65 6d 62 6c 79 44 69  if (noAssemblyDi
121b0 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
121c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
121d0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
121e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
121f0 20 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73     return GetAss
12200 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29  emblyDirectory()
12210 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
12220 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
12270 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12280 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
12290 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
122a0 73 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  s the directory 
122b0 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
122c0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
122d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63  ..      /// exec
122e0 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  uted...      ///
122f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12300 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
12310 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
12320 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
12330 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
12340 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
12350 74 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ted -OR- null if
12360 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63  ..      /// it c
12370 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
12380 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
12390 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
123a0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
123b0 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d   string GetAssem
123c0 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  blyDirectory()..
123d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
123e0 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67     #region Debug
123f0 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66   Build Only..#if
12400 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
12410 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72    DebugData.Incr
12420 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28  ementOtherCount(
12430 22 4d 65 74 68 6f 64 5f 47 65 74 41 73 73 65 6d  "Method_GetAssem
12440 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d  blyDirectory");.
12450 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
12460 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12470 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
12480 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12490 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
124a0 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41  bly assembly = A
124b0 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
124c0 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
124d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
124e0 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d   if (assembly ==
124f0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12500 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12510 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
12520 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
12530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12540 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12550 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
12560 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
12570 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
12580 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
125a0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
125b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
125c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
125d0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
125e0 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66  e = null;....#if
125f0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
12600 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
12610 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
12620 6c 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e  lyName assemblyN
12630 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47  ame = assembly.G
12640 65 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20  etName();....   
12650 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
12660 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
12670 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12680 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12690 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
126a0 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
126b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
126d0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
126e0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
126f0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
12700 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12720 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12750 66 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d  fileName = assem
12760 62 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65  blyName.CodeBase
12770 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
12780 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65          if (!Che
12790 63 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61  ckAssemblyCodeBa
127a0 73 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66  se(assembly, ref
127b0 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20   fileName))..   
127c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
127d0 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
127e0 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65  ly.Location;..#e
127f0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
12800 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
12810 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
12820 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
12830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
12850 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
12860 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
12870 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  noAssemblyDirect
128a0 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ory = true;..   
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
128c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
128d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
128e0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
128f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12900 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
12910 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74  ctory = Path.Get
12920 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69  DirectoryName(fi
12930 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
12940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
12950 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12960 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
12970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12990 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
129a0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
129b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129d0 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
129e0 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12a10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12a20 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
12a30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a40 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
12a50 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
12a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
12a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a80 20 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62      cachedAssemb
12a90 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69  lyDirectory = di
12aa0 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
12ab0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12ac0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12ad0 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20  n directory;..  
12ae0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
12af0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
12b00 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
12b10 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
12b20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
12b30 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
12b40 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
12b50 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
12b60 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
12b70 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12b80 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
12b90 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12bc0 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
12bd0 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
12be0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
12bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c00 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
12c10 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
12c20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12c30 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
12c40 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
12c50 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65  der failed to ge
12c60 74 20 64 69 72 65 63 74 6f 72 79 20 22 20 2b 0d  t directory " +.
12c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c80 20 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72         "for curr
12c90 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
12ca0 61 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20  assembly: {0}", 
12cb0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
12cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12cd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12ce0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
12cf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12d00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
12d10 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
12d20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
12d30 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
12d40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
12d50 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
12d60 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
12d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
12d80 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
12d90 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
12da0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12db0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
12dc0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
12dd0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
12de0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12e30 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
12e40 20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65   Optional Native
12e50 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20   SQLite Library 
12e60 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65  Pre-Loading Code
12e70 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
12e80 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65    // NOTE: If we
12e90 20 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72   are looking for
12ea0 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51   the standard SQ
12eb0 4c 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74  Lite DLL ("sqlit
12ec0 65 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20  e3.dll"),..     
12ed0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e   //       the in
12ee0 74 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69  terop DLL ("SQLi
12ef0 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29  te.Interop.dll")
12f00 2c 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e  , or we are runn
12f10 69 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  ing on the..    
12f20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20    //       .NET 
12f30 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
12f40 6b 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63  k, we should inc
12f50 6c 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28  lude this code (
12f60 6f 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20  only if the..   
12f70 20 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74     //       feat
12f80 75 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79  ure has actually
12f90 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20   been enabled). 
12fa0 20 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64   This code would
12fb0 20 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20   be totally..   
12fc0 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75     //       redu
12fd0 6e 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f  ndant if this mo
12fe0 64 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75  dule has been bu
12ff0 6e 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d  ndled into the m
13000 69 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20  ixed-mode..     
13010 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62   //       assemb
13020 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23  ly...      //..#
13030 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
13040 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
13050 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
13060 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
13070 52 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  RK....      //..
13080 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f        // NOTE: O
13090 6e 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74  nly compile in t
130a0 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
130b0 79 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20  y pre-load code 
130c0 69 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a  if the feature..
130d0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
130e0 61 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  as been enabled 
130f0 66 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d  for this build..
13100 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50  .      //..#if P
13110 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49  RELOAD_NATIVE_LI
13120 42 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f  BRARY..      ///
13130 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13140 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
13150 66 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  f the environmen
13160 74 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61  t variable conta
13170 69 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73  ining the proces
13180 73 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  sor..      /// a
13190 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
131a0 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
131b0 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
131c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
131d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
131e0 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
131f0 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
13200 45 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20  ECTURE =..      
13210 20 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41      "PROCESSOR_A
13220 52 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d  RCHITECTURE";...
13230 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
13290 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
132a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
132b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
132c0 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
132d0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
132e0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
132f0 20 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c   library or null
13300 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
13320 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
13330 74 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74  tring _SQLiteNat
13340 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d  iveModuleFileNam
13350 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
13360 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
133b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
133c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
133d0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
133e0 61 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61  andle for the na
133f0 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
13400 61 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65  ary or the value
13410 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50  ..      /// IntP
13420 74 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  tr.Zero...      
13430 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13440 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
13450 61 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c  atic IntPtr _SQL
13460 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
13470 61 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a  andle = IntPtr.Z
13480 65 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ero;..      #end
13490 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
134a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
134f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13500 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
13510 69 6e 65 73 20 74 68 65 20 62 61 73 65 20 66 69  ines the base fi
13520 6c 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74  le name (without
13530 20 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69   any directory i
13540 6e 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20  nformation)..   
13550 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e     /// for the n
13560 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
13570 72 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c  rary to be pre-l
13580 6f 61 64 65 64 20 62 79 20 74 68 69 73 20 63 6c  oaded by this cl
13590 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ass...      /// 
135a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
135b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
135c0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62  .      /// The b
135d0 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
135e0 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
135f0 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62  ite library to b
13600 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d  e pre-loaded by.
13610 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  .      /// this 
13620 63 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20  class -OR- null 
13630 69 66 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e  if its value can
13640 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
13650 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13660 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13670 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13680 73 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65  string GetNative
13690 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f  LibraryFileNameO
136a0 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  nly()..      {..
136b0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
136c0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20   fileNameOnly = 
136d0 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
136e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
136f0 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c  "PreLoadSQLite_L
13700 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
13710 6c 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  ly", null);.... 
13720 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
13730 65 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c  eNameOnly != nul
13740 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
13750 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
13760 65 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  eOnly;....      
13770 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54      return SQLIT
13780 45 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54  E_DLL; /* COMPAT
13790 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a   */..      }....
137a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
137b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
137e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
137f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13800 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13810 53 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65  Searches for the
13820 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
13830 69 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69  ibrary in the di
13840 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
13850 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
13860 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
13870 6e 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75  ntly being execu
13880 74 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74  ted as well as t
13890 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
138a0 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72  y..      /// for
138b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70   the current app
138c0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
138d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
138e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
138f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
13900 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
13910 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
13920 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
13930 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
13940 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72  odified to refer
13950 20 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20   to the base..  
13960 20 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72      /// director
13970 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
13980 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
13990 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  ibrary...      /
139a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
139b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
139c0 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
139d0 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
139e0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
139f0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
13a00 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
13a10 66 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f  fied to refer to
13a20 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20   the name..     
13a30 20 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65   /// of the imme
13a40 64 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20  diate directory 
13a50 28 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74  (i.e. the offset
13a60 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64   from the base d
13a70 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20  irectory)..     
13a80 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20   /// containing 
13a90 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
13aa0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
13ab0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
13ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
13ad0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
13ae0 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63 65 73 73  on-zero (success
13af0 29 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  ) if the native 
13b00 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
13b10 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77  as found; otherw
13b20 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ise,..      /// 
13b30 7a 65 72 6f 20 28 66 61 69 6c 75 72 65 29 2e 0d  zero (failure)..
13b40 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
13b50 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
13b60 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
13b70 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
13b80 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
13b90 72 65 66 20 73 74 72 69 6e 67 20 62 61 73 65 44  ref string baseD
13ba0 69 72 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20  irectory,       
13bb0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
13bc0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
13bd0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
13be0 65 63 74 75 72 65 20 2f 2a 20 6f 75 74 20 2a 2f  ecture /* out */
13bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
13c00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13c10 20 20 69 66 20 28 47 65 74 53 65 74 74 69 6e 67    if (GetSetting
13c20 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
13c30 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
13c40 53 51 4c 69 74 65 5f 4e 6f 53 65 61 72 63 68 46  SQLite_NoSearchF
13c50 6f 72 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75  orDirectory", nu
13c60 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ll) != null)..  
13c70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13c80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13c90 66 61 6c 73 65 3b 20 2f 2a 20 44 49 53 41 42 4c  false; /* DISABL
13ca0 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
13cb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13cc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
13cd0 20 4e 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65   NOTE: Determine
13ce0 20 74 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e   the base file n
13cf0 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69  ame for the nati
13d00 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
13d10 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  y...          //
13d20 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69         If this i
13d30 73 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74  s not known by t
13d40 68 69 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61  his class, we ca
13d50 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a  nnot continue...
13d60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13d70 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
13d80 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65  ileNameOnly = Ge
13d90 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46 69  tNativeLibraryFi
13da0 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d  leNameOnly();...
13db0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66  .          if (f
13dc0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e  ileNameOnly == n
13dd0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13de0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
13df0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
13e00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
13e10 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
13e20 6c 69 73 74 20 6f 66 20 62 61 73 65 20 64 69 72  list of base dir
13e30 65 63 74 6f 72 69 65 73 20 61 6e 64 20 70 72 6f  ectories and pro
13e40 63 65 73 73 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d  cessor/platform.
13e50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
13e60 20 20 20 20 6e 61 6d 65 73 2e 20 20 54 68 65 73      names.  Thes
13e70 65 20 6c 69 73 74 73 20 77 69 6c 6c 20 62 65 20  e lists will be 
13e80 75 73 65 64 20 74 6f 20 68 65 6c 70 20 6c 6f 63  used to help loc
13e90 61 74 65 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  ate the native..
13ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
13eb0 20 20 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c     SQLite core l
13ec0 69 62 72 61 72 79 20 28 6f 72 20 69 6e 74 65 72  ibrary (or inter
13ed0 6f 70 20 61 73 73 65 6d 62 6c 79 29 20 74 6f 20  op assembly) to 
13ee0 70 72 65 2d 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20  pre-load into.. 
13ef0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13f00 20 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 0d    this process..
13f10 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
13f20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
13f30 5d 20 64 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ] directories = 
13f40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13f50 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65   GetAssemblyDire
13f60 63 74 6f 72 79 28 29 2c 0d 0a 23 69 66 20 21 50  ctory(),..#if !P
13f70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
13f80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
13f90 20 20 20 20 20 20 20 20 41 70 70 44 6f 6d 61 69          AppDomai
13fa0 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
13fb0 42 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a  BaseDirectory,..
13fc0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
13fd0 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    };....        
13fe0 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 44 69    string[] subDi
13ff0 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
14000 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
14010 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
14020 63 74 75 72 65 28 29 2c 20 47 65 74 50 6c 61 74  cture(), GetPlat
14030 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c 6c 29 0d 0a  formName(null)..
14040 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a            };....
14050 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
14060 68 20 28 73 74 72 69 6e 67 20 64 69 72 65 63 74  h (string direct
14070 6f 72 79 20 69 6e 20 64 69 72 65 63 74 6f 72 69  ory in directori
14080 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  es)..          {
14090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140a0 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 3d 3d  if (directory ==
140b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
140c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
140d0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
140e0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74       foreach (st
140f0 72 69 6e 67 20 73 75 62 44 69 72 65 63 74 6f 72  ring subDirector
14100 79 20 69 6e 20 73 75 62 44 69 72 65 63 74 6f 72  y in subDirector
14110 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ies)..          
14120 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14130 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
14140 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
14150 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14160 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
14170 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
14180 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
14190 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
141a0 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
141b0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141d0 20 20 20 20 20 4d 61 79 62 65 43 6f 6d 62 69 6e       MaybeCombin
141e0 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
141f0 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 2c 0d   subDirectory),.
14200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14210 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 4f         fileNameO
14220 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly));....      
14230 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
14240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14250 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
14260 65 20 53 51 4c 69 74 65 20 44 4c 4c 20 66 69 6c  e SQLite DLL fil
14270 65 20 65 78 69 73 74 73 2c 20 72 65 74 75 72 6e  e exists, return
14280 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
14290 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
142a0 20 20 20 20 20 20 50 72 69 6f 72 20 74 6f 20 72        Prior to r
142b0 65 74 75 72 6e 69 6e 67 2c 20 73 65 74 20 74 68  eturning, set th
142c0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
142d0 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
142e0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
142f0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
14300 74 65 63 74 75 72 65 20 74 6f 20 72 65 66 6c 65  tecture to refle
14310 63 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 0d  ct the location.
14320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14330 20 20 20 2f 2f 20 20 20 20 20 20 20 77 68 65 72     //       wher
14340 65 20 69 74 20 77 61 73 20 66 6f 75 6e 64 2e 0d  e it was found..
14350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14360 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
14370 20 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c           if (Fil
14380 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d  e.Exists(fileNam
14390 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
143a0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
143b0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
143c0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
143d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
143e0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
143f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14420 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
14430 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
14440 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14460 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
14470 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
14480 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
14490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144a0 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69        "Native li
144b0 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72  brary pre-loader
144c0 20 66 6f 75 6e 64 20 6e 61 74 69 76 65 20 66 69   found native fi
144d0 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  le " +..        
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144f0 20 20 20 20 20 20 22 6e 61 6d 65 20 5c 22 7b 30        "name \"{0
14500 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e 67 20 64  }\", returning d
14510 69 72 65 63 74 6f 72 79 20 5c 22 7b 31 7d 5c 22  irectory \"{1}\"
14520 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20 20 20 20   and " +..      
14530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14540 20 20 20 20 20 20 20 20 22 73 75 62 2d 64 69 72          "sub-dir
14550 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c 22 2e 2e  ectory \"{2}\"..
14560 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 64 69  .", fileName, di
14570 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
14580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14590 20 20 20 20 20 20 20 20 73 75 62 44 69 72 65 63          subDirec
145a0 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68 72 6f 77  tory)); /* throw
145b0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
145c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145e0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
145f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14600 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
14620 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
14630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14640 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
14650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14660 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
14670 74 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79  tory = directory
14680 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14690 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73           process
146a0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
146b0 20 73 75 62 44 69 72 65 63 74 6f 72 79 3b 0d 0a   subDirectory;..
146c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
146e0 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d 0a  e; /* FOUND */..
146f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14700 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
14710 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14720 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
14730 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20  eturn false; /* 
14740 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20 20  NOT FOUND */..  
14750 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
14760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
147b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
147c0 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
147d0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
147e0 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
147f0 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  of the current a
14800 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
14810 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a 20    /// domain... 
14820 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14830 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
14840 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14850 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69 72  /// The base dir
14860 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63  ectory for the c
14870 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
14880 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20 6e  on domain -OR- n
14890 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20  ull if it..     
148a0 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64   /// cannot be d
148b0 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
148c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
148d0 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
148e0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
148f0 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28 29  tBaseDirectory()
14900 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
14910 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
14920 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
14930 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
14940 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79 22  e_BaseDirectory"
14950 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
14960 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  iable..         
14970 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65 74   //       is set
14980 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69  , use it verbati
14990 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20 64  m for the base d
149a0 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
149b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
149c0 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
149d0 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e 67  ory = GetSetting
149e0 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53 51  Value("PreLoadSQ
149f0 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f  Lite_BaseDirecto
14a00 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ry",..          
14a10 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20      null);....  
14a20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 65          if (dire
14a30 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ctory != null)..
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14a50 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
14a60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
14a70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
14a80 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  K..          //.
14a90 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
14aa0 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
14ab0 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73 73  oadSQLite_UseAss
14ac0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
14ad0 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
14ae0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14af0 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
14b00 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20 74  (to anything), t
14b10 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 75  hen attempt to u
14b20 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
14b30 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65 63    //       direc
14b40 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
14b50 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65 78  the currently ex
14b60 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
14b70 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
14b80 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74 65       (i.e. Syste
14b90 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20 69  m.Data.SQLite) i
14ba0 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61 70  ntsead of the ap
14bb0 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20  plication..     
14bc0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f       //       do
14bd0 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63 74  main base direct
14be0 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ory...          
14bf0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  //..          if
14c00 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
14c10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
14c20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51        "PreLoadSQ
14c30 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c 79  Lite_UseAssembly
14c40 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c  Directory", null
14c50 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
14c60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14c70 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
14c80 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69   = GetAssemblyDi
14c90 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
14ca0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14cb0 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c  directory != nul
14cc0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14cd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
14ce0 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
14cf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14d00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
14d10 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69  // NOTE: Otherwi
14d20 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20  se, fallback on 
14d30 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20 64  using the base d
14d40 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 0d  irectory of the.
14d50 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
14d60 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70 6c      current appl
14d70 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
14d80 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
14d90 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14da0 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e  AppDomain.Curren
14db0 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65  tDomain.BaseDire
14dc0 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ctory;..#else.. 
14dd0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
14de0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
14df0 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c 62  Otherwise, fallb
14e00 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68 65  ack on using the
14e10 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
14e20 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  ining..         
14e30 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 75   //       the cu
14e40 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
14e50 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  g assembly...   
14e60 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14e70 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 41       return GetA
14e80 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
14e90 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
14ea0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ef0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
14f00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14f10 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
14f20 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d 69  es if the dynami
14f30 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
14f40 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72 65  ile name require
14f50 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20 20  s a suffix..    
14f60 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20 69    /// and adds i
14f70 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  t if necessary..
14f80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
14f90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14fa0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69   <param name="fi
14fb0 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  leName">..      
14fc0 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
14fd0 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
14fe0 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 20  brary file name 
14ff0 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20  to inspect...   
15000 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
15010 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
15020 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
15030 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  The dynamic link
15040 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
15050 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f 64  me, possibly mod
15060 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64 65  ified to include
15070 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65   an..      /// e
15080 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 20  xtension...     
15090 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
150a0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
150b0 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69 78  tatic string Fix
150c0 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d 0a  UpDllFileName(..
150d0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
150e0 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e 20   fileName /* in 
150f0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  */..          ).
15100 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
15110 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
15120 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69  IsNullOrEmpty(fi
15130 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
15140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15150 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d       if (HelperM
15160 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73  ethods.IsWindows
15170 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
15180 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15190 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69 6c          if (!fil
151a0 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28 44  eName.EndsWith(D
151b0 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 2c  llFileExtension,
151c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151d0 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
151e0 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
151f0 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
15200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15210 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15220 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15230 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20 44  urn fileName + D
15240 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 3b  llFileExtension;
15250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15260 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15270 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15280 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15290 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
152a0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
152b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
15300 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15310 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75  y>..      /// Qu
15320 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
15330 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  s the processor 
15340 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20  architecture of 
15350 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
15360 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e 0d     /// process..
15370 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15390 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
153a0 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73    /// The proces
153b0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
153c0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
153d0 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c  process -OR- nul
153e0 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20 2f  l if it..      /
153f0 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
15400 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
15410 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
15420 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
15430 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  atic string GetP
15440 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
15450 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  ture()..      {.
15460 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
15470 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
15480 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f 61  : If the "PreLoa
15490 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73 6f  dSQLite_Processo
154a0 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20 65  rArchitecture" e
154b0 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20  nvironment..    
154c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76        //       v
154d0 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c 20  ariable is set, 
154e0 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d 20  use it verbatim 
154f0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
15500 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20 20  processor..     
15510 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
15520 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20  chitecture...   
15530 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
15540 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63       string proc
15550 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15560 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  e = GetSettingVa
15570 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
15580 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
15590 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63 68  te_ProcessorArch
155a0 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c 29  itecture", null)
155b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
155c0 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
155d0 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c 6c  itecture != null
155e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
155f0 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f   return processo
15600 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a  rArchitecture;..
15610 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
15620 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
15630 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20 61  BUG: Will this a
15640 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62 6c  lways be reliabl
15650 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  e?..          //
15660 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 63  ..          proc
15670 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15680 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56 61  e = GetSettingVa
15690 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41 52  lue(PROCESSOR_AR
156a0 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c 6c  CHITECTURE, null
156b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
156c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
15710 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
15720 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
15730 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
15740 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b 20   // HACK: Check 
15750 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69 62  for an "impossib
15760 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20 20  le" situation.  
15770 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73  If the pointer s
15780 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ize..          /
15790 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62 69  /       is 32-bi
157a0 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73 6f  ts, the processo
157b0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 63  r architecture c
157c0 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34 22  annot be "AMD64"
157d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ...          // 
157e0 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63 61        In that ca
157f0 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f 73  se, we are almos
15800 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74 74  t certainly hitt
15810 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68 65  ing a bug in the
15820 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
15830 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20 73       operating s
15840 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69 73  ystem and/or Vis
15850 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74 20  ual Studio that 
15860 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20 20  causes the..    
15870 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50        //       P
15880 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
15890 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65 6e  CTURE environmen
158a0 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63 6f  t variable to co
158b0 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
158c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 72       //       wr
158d0 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f 6d  ong value in som
158e0 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2e  e circumstances.
158f0 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20 74    Please refer t
15900 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20 20  o ticket..      
15910 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39 61      //       [9a
15920 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66 75  c9862611] for fu
15930 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f  rther informatio
15940 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  n...          //
15950 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
15960 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d 20  (IntPtr.Size == 
15970 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26 0d  sizeof(int)) &&.
15980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53  .              S
15990 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72 6f  tring.Equals(pro
159a0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
159b0 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20 20  re, "AMD64",..  
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
159e0 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
159f0 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se))..          
15a00 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
15a10 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
15a20 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20  DETECTION..     
15a30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15a40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
15a50 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e 67  TE: When tracing
15a60 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61 76   is enabled, sav
15a70 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79  e the originally
15a80 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20 20   detected..     
15a90 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
15aa0 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68    processor arch
15ab0 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65 20  itecture before 
15ac0 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20 20  changing it...  
15ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
15af0 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65 73  ring savedProces
15b00 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
15b10 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69  = processorArchi
15b20 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69 66  tecture;..#endif
15b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15b40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
15b50 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
15b60 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61 74  know that operat
15b70 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61 74  ing systems that
15b80 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22 20   return "AMD64" 
15b90 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  as..            
15ba0 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 70    //       the p
15bb0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
15bc0 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61 6c  cture are actual
15bd0 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f 66  ly a superset of
15be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15bf0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78 38  //       the "x8
15c00 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  6" processor arc
15c10 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72 65  hitecture; there
15c20 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20 20  fore, return..  
15c30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15c40 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e 20       "x86" when 
15c50 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a 65  the pointer size
15c60 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20 20   is 32-bits...  
15c70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
15c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
15c90 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
15ca0 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d 0a  ure = "x86";....
15cb0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
15cc0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45 54  _20 && TRACE_DET
15cd0 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  ECTION..        
15ce0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
15cf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f      // NOTE: Sho
15d30 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61 20  w that we hit a 
15d40 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20 73  fairly unusual s
15d50 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d 0a  ituation (i.e...
15d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d70 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22    //       the "
15d80 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f 72  wrong" processor
15d90 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77 61   architecture wa
15da0 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20 20  s detected)...  
15db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15dc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
15dd0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
15de0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
15df0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
15e00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15e10 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
15e20 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
15e30 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
15e40 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
15e50 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
15e60 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64 20  loader detected 
15e70 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72 20  {0}-bit pointer 
15e80 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
15e90 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a 65             "size
15ea0 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72 20   with processor 
15eb0 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22 7b  architecture \"{
15ec0 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b 0d  1}\", using " +.
15ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ee0 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 6f         "processo
15ef0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c  r architecture \
15f00 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e 2e  "{2}\" instead..
15f10 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
15f20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
15f30 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62 69  r.Size * 8 /* bi
15f40 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f 63  ts */, savedProc
15f50 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
15f60 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
15f70 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
15f80 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
15f90 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
15fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
15fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
15fc0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
15fd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15fe0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
15ff0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
16000 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
16010 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23  ..          }..#
16020 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
16030 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
16040 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
16050 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
16060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
16070 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16080 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65   // NOTE: On the
16090 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
160a0 61 6d 65 77 6f 72 6b 2c 20 61 74 74 65 6d 70 74  amework, attempt
160b0 20 74 6f 20 75 73 65 20 74 68 65 20 6e 61 74 69   to use the nati
160c0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
160d0 20 20 2f 2f 20 20 20 20 20 20 20 57 69 6e 33 32    //       Win32
160e0 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 28 76   API function (v
160f0 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 61  ia P/Invoke) tha
16100 74 20 63 61 6e 20 70 72 6f 76 69 64 65 20 75 73  t can provide us
16110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16120 2f 2f 20 20 20 20 20 20 20 77 69 74 68 20 74 68  //       with th
16130 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
16140 69 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  itecture...     
16150 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
16160 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
16170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16190 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
161a0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
161b0 3a 20 54 68 65 20 6f 75 74 70 75 74 20 6f 66 20  : The output of 
161c0 74 68 65 20 47 65 74 53 79 73 74 65 6d 49 6e 66  the GetSystemInf
161d0 6f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  o function will 
161e0 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
161f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
16200 6c 61 63 65 64 20 68 65 72 65 2e 20 20 4f 6e 6c  laced here.  Onl
16210 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  y the processor 
16220 61 72 63 68 69 74 65 63 74 75 72 65 20 66 69 65  architecture fie
16230 6c 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ld..            
16240 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
16250 73 20 75 73 65 64 20 62 79 20 74 68 69 73 20 6d  s used by this m
16260 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
16270 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16290 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
162a0 6f 64 73 57 69 6e 33 32 2e 53 59 53 54 45 4d 5f  odsWin32.SYSTEM_
162b0 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66 6f 3b  INFO systemInfo;
162c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
162d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
162e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
162f0 4f 54 45 3a 20 51 75 65 72 79 20 74 68 65 20 73  OTE: Query the s
16300 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f  ystem informatio
16310 6e 20 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20  n via P/Invoke, 
16320 74 68 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20  thus..          
16330 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16340 20 66 69 6c 6c 69 6e 67 20 74 68 65 20 73 74 72   filling the str
16350 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
16360 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16380 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
16390 68 6f 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73  hodsWin32.GetSys
163a0 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74  temInfo(out syst
163b0 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20  emInfo);....    
163c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
163d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
163e0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74      // NOTE: Ret
163f0 75 72 6e 20 74 68 65 20 70 72 6f 63 65 73 73 6f  urn the processo
16400 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 76  r architecture v
16410 61 6c 75 65 20 61 73 20 61 20 73 74 72 69 6e 67  alue as a string
16420 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16430 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16440 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
16450 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
16460 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
16470 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d            system
16480 49 6e 66 6f 2e 77 50 72 6f 63 65 73 73 6f 72 41  Info.wProcessorA
16490 72 63 68 69 74 65 63 74 75 72 65 2e 54 6f 53 74  rchitecture.ToSt
164a0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
164b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
164c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
164d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
164e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
164f0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
16500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16510 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
16520 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
16530 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70       // NOTE: Up
16540 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75  on failure, retu
16550 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  rn an empty stri
16560 6e 67 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 70  ng.  This will p
16570 72 65 76 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  revent..        
16580 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
16590 68 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f  he calling metho
165a0 64 20 66 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69  d from consideri
165b0 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64 20 63  ng this method c
165c0 61 6c 6c 20 61 0d 0a 20 20 20 20 20 20 20 20 20  all a..         
165d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 66       //       "f
165e0 61 69 6c 75 72 65 22 2e 0d 0a 20 20 20 20 20 20  ailure"...      
165f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16600 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
16610 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
16620 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
16630 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  .          }..#e
16640 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
16650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
166a0 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63       return proc
166b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
166c0 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
166d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
166e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16720 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16730 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 47  ry>..      /// G
16740 69 76 65 6e 20 74 68 65 20 70 72 6f 63 65 73 73  iven the process
16750 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2c  or architecture,
16760 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d   returns the nam
16770 65 20 6f 66 20 74 68 65 20 70 6c 61 74 66 6f 72  e of the platfor
16780 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  m...      /// </
16790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
167a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
167b0 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  "processorArchit
167c0 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20  ecture">..      
167d0 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65 73 73 6f  /// The processo
167e0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 74  r architecture t
167f0 6f 20 62 65 20 74 72 61 6e 73 6c 61 74 65 64 20  o be translated 
16800 74 6f 20 61 20 70 6c 61 74 66 6f 72 6d 20 6e 61  to a platform na
16810 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16820 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
16830 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
16840 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 6c 61 74      /// The plat
16850 66 6f 72 6d 20 6e 61 6d 65 20 66 6f 72 20 74 68  form name for th
16860 65 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 63  e specified proc
16870 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
16880 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c 0d 0a 20 20  re -OR- null..  
16890 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20 63 61      /// if it ca
168a0 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
168b0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
168c0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
168d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
168e0 73 74 72 69 6e 67 20 47 65 74 50 6c 61 74 66 6f  string GetPlatfo
168f0 72 6d 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  rmName(..       
16900 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73     string proces
16910 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
16920 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
16930 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
16940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
16950 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16960 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ure == null)..  
16970 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
16980 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
16990 65 20 3d 20 47 65 74 50 72 6f 63 65 73 73 6f 72  e = GetProcessor
169a0 41 72 63 68 69 74 65 63 74 75 72 65 28 29 3b 0d  Architecture();.
169b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
169c0 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
169d0 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72 41  Empty(processorA
169e0 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a 20  rchitecture)).. 
169f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
16a00 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
16a10 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
16a20 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
16a30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16a40 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
16a50 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
16a60 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
16a70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
16a80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
16a90 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
16aa0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61        string pla
16ab0 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tformName;....  
16ac0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
16ad0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16ae0 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 54  cturePlatforms.T
16af0 72 79 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  ryGetValue(..   
16b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b10 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
16b20 69 74 65 63 74 75 72 65 2c 20 6f 75 74 20 70 6c  itecture, out pl
16b30 61 74 66 6f 72 6d 4e 61 6d 65 29 29 0d 0a 20 20  atformName))..  
16b40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b60 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d   return platform
16b70 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
16b80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16b90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16ba0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
16bb0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
16c10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16c20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
16c30 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e  ts to load the n
16c40 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
16c50 72 61 72 79 20 62 61 73 65 64 20 6f 6e 20 74 68  rary based on th
16c60 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
16c70 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
16c80 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 20 61   and processor a
16c90 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
16ca0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16cb0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
16cc0 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 73 65 44  aram name="baseD
16cd0 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20 20 20 20  irectory">..    
16ce0 20 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64    /// The base d
16cf0 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73 65 2c  irectory to use,
16d00 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66 61 75 6c   null for defaul
16d10 74 20 28 74 68 65 20 62 61 73 65 20 64 69 72 65  t (the base dire
16d20 63 74 6f 72 79 20 6f 66 0d 0a 20 20 20 20 20 20  ctory of..      
16d30 2f 2f 2f 20 74 68 65 20 63 75 72 72 65 6e 74 20  /// the current 
16d40 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
16d50 69 6e 29 2e 20 20 54 68 69 73 20 64 69 72 65 63  in).  This direc
16d60 74 6f 72 79 20 73 68 6f 75 6c 64 20 63 6f 6e 74  tory should cont
16d70 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ain the..      /
16d80 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  // processor arc
16d90 68 69 74 65 63 74 75 72 65 20 73 70 65 63 69 66  hitecture specif
16da0 69 63 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69  ic sub-directori
16db0 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
16dc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
16dd0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16de0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
16df0 63 74 75 72 65 22 3e 0d 0a 20 20 20 20 20 20 2f  cture">..      /
16e00 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
16e10 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
16e20 74 65 63 74 75 72 65 2c 20 6e 75 6c 6c 20 66 6f  tecture, null fo
16e30 72 20 64 65 66 61 75 6c 74 20 28 74 68 65 0d 0a  r default (the..
16e40 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73        /// proces
16e50 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
16e60 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
16e70 70 72 6f 63 65 73 73 29 2e 20 20 54 68 69 73 20  process).  This 
16e80 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0d 0a 20  caller should.. 
16e90 20 20 20 20 20 2f 2f 2f 20 61 6c 6d 6f 73 74 20       /// almost 
16ea0 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 20 6e  always specify n
16eb0 75 6c 6c 20 66 6f 72 20 74 68 69 73 20 70 61 72  ull for this par
16ec0 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f  ameter...      /
16ed0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16ee0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16ef0 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65  me="nativeModule
16f00 46 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  FileName">..    
16f10 20 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64    /// The candid
16f20 61 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  ate native modul
16f30 65 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c  e file name to l
16f40 6f 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72  oad will be stor
16f50 65 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20  ed here,..      
16f60 2f 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79  /// if necessary
16f70 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
16f80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
16f90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
16fa0 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
16fb0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
16fc0 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16fd0 68 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e  handle as return
16fe0 65 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72  ed by LoadLibrar
16ff0 79 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64  y will be stored
17000 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65  ..      /// here
17010 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20  , if necessary. 
17020 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
17030 20 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20   be IntPtr.Zero 
17040 69 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a  if the call to..
17050 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69        /// LoadLi
17060 62 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20  brary fails...  
17070 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
17080 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
17090 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
170a0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
170b0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77   native module w
170c0 61 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73  as loaded succes
170d0 73 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73  sfully; otherwis
170e0 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
170f0 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
17100 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
17110 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
17120 62 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69  bool PreLoadSQLi
17130 74 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20  teDll(..        
17140 20 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72    string baseDir
17150 65 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20  ectory,         
17160 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
17170 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
17180 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
17190 75 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  ure,    /* in */
171a0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
171b0 73 74 72 69 6e 67 20 6e 61 74 69 76 65 4d 6f 64  string nativeMod
171c0 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20  uleFileName, /* 
171d0 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
171e0 20 20 72 65 66 20 49 6e 74 50 74 72 20 6e 61 74    ref IntPtr nat
171f0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
17200 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
17210 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
17220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
17230 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
17240 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63  OTE: If the spec
17250 69 66 69 65 64 20 62 61 73 65 20 64 69 72 65 63  ified base direc
17260 74 6f 72 79 20 69 73 20 6e 75 6c 6c 2c 20 75 73  tory is null, us
17270 65 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 20  e the default.. 
17280 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17290 20 20 28 69 2e 65 2e 20 61 74 74 65 6d 70 74 20    (i.e. attempt 
172a0 74 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  to automatically
172b0 20 64 65 74 65 63 74 20 69 74 29 2e 0d 0a 20 20   detect it)...  
172c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
172d0 20 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69        if (baseDi
172e0 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
172f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17300 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20  baseDirectory = 
17310 47 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79  GetBaseDirectory
17320 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
17330 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
17340 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61  / NOTE: If we fa
17350 69 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68  iled to query th
17360 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17370 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
17380 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17390 20 20 20 20 20 69 66 20 28 62 61 73 65 44 69 72       if (baseDir
173a0 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ectory == null).
173b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
173c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
173d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
173e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
173f0 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   Determine the b
17400 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f  ase file name fo
17410 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
17420 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
17430 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
17440 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
17450 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20 63 6c  known by this cl
17460 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74 20 63  ass, we cannot c
17470 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
17480 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17490 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
174a0 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74 69 76  eOnly = GetNativ
174b0 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65  eLibraryFileName
174c0 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
174d0 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e 61 6d       if (fileNam
174e0 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eOnly == null)..
174f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17500 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
17510 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17520 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
17530 49 66 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  If the native SQ
17540 4c 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 69  Lite library exi
17550 73 74 73 20 69 6e 20 74 68 65 20 62 61 73 65 20  sts in the base 
17560 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
17570 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74       //       it
17580 73 65 6c 66 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  self, stop now..
17590 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
175a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
175b0 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70  fileName = FixUp
175c0 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62  DllFileName(Mayb
175d0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 62 61 73  eCombinePath(bas
175e0 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20  eDirectory,..   
175f0 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
17600 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20  ameOnly));....  
17610 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
17620 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
17630 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
17640 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
17650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
17660 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
17670 54 45 3a 20 49 66 20 74 68 65 20 73 70 65 63 69  TE: If the speci
17680 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  fied processor a
17690 72 63 68 69 74 65 63 74 75 72 65 20 69 73 20 6e  rchitecture is n
176a0 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d 0a 20 20  ull, use the..  
176b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
176c0 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20   default...     
176d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
176e0 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72     if (processor
176f0 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20  Architecture == 
17700 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17710 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72       processorAr
17720 63 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74  chitecture = Get
17730 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
17740 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  cture();....    
17750 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17760 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
17770 77 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65  we failed to que
17780 72 79 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ry the processor
17790 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 73   architecture, s
177a0 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20  top now...      
177b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
177c0 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41    if (processorA
177d0 72 63 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e  rchitecture == n
177e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
177f0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
17800 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
17810 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
17820 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
17830 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
17840 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
17850 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
17860 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17870 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67 20    library using 
17880 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
17890 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 2e  chitecture name.
178a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
178b0 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
178c0 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
178d0 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
178e0 6e 65 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62  nePath(MaybeComb
178f0 69 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20  inePath(..      
17900 20 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65          baseDire
17910 63 74 6f 72 79 2c 20 70 72 6f 63 65 73 73 6f 72  ctory, processor
17920 41 72 63 68 69 74 65 63 74 75 72 65 29 2c 20 66  Architecture), f
17930 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
17940 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
17950 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
17960 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20 6e  E: If the file n
17970 61 6d 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ame based on the
17980 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
17990 74 65 63 74 75 72 65 20 6e 61 6d 65 0d 0a 20 20  tecture name..  
179a0 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 6e 6f          // is no
179b0 74 20 66 6f 75 6e 64 2c 20 74 72 79 20 75 73 69  t found, try usi
179c0 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  ng the associate
179d0 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e  d platform name.
179e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
179f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46            if (!F
17a00 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
17a10 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
17a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17a30 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17a40 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74      // NOTE: Att
17a50 65 6d 70 74 20 74 6f 20 74 72 61 6e 73 6c 61 74  empt to translat
17a60 65 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  e the processor 
17a70 61 72 63 68 69 74 65 63 74 75 72 65 20 74 6f 20  architecture to 
17a80 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
17a90 20 2f 2f 20 20 20 20 20 20 20 70 6c 61 74 66 6f   //       platfo
17aa0 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  rm name...      
17ab0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17ac0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
17ad0 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 20   platformName = 
17ae0 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28  GetPlatformName(
17af0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
17b00 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  cture);....     
17b10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
17b20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
17b30 54 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64  TE: If we failed
17b40 20 74 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68   to translate th
17b50 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2c  e platform name,
17b60 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20 20   stop now...    
17b70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
17b80 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17b90 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 3d 3d 20  platformName == 
17ba0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17bb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17bc0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
17bd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17be0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
17bf0 45 3a 20 42 75 69 6c 64 20 74 68 65 20 66 75 6c  E: Build the ful
17c00 6c 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  l path and file 
17c10 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74  name for the nat
17c20 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
17c30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
17c40 20 20 20 6c 69 62 72 61 72 79 20 75 73 69 6e 67     library using
17c50 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
17c60 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
17c70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17c80 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20       fileName = 
17c90 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65  FixUpDllFileName
17ca0 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
17cb0 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61  h(MaybeCombinePa
17cc0 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
17cd0 20 20 20 20 20 20 20 62 61 73 65 44 69 72 65 63         baseDirec
17ce0 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72 6d 4e 61  tory, platformNa
17cf0 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  me), fileNameOnl
17d00 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y));....        
17d10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17d20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
17d30 20 49 66 20 74 68 65 20 66 69 6c 65 20 64 6f 65   If the file doe
17d40 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 73 6b 69  s not exist, ski
17d50 70 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 61 64  p trying to load
17d60 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
17d70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17d80 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e        if (!File.
17d90 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
17da0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
17db0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
17dc0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
17dd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  ...          try
17de0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
17df0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
17e00 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
17e10 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
17e20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
17e30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17e40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
17e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17e60 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65   // NOTE: Show e
17e70 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20  xactly where we 
17e80 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f  are trying to lo
17e90 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  ad the native.. 
17ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17eb0 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65   //       SQLite
17ec0 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a   library from...
17ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17ee0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
17ef0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
17f00 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
17f10 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
17f20 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
17f30 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
17f40 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
17f50 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
17f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
17f70 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
17f80 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69  e-loader is tryi
17f90 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ng to load nativ
17fa0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
17fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
17fc0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
17fd0 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61  0}\"...", fileNa
17fe0 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
17ff0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18000 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
18010 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
18020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18030 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
18040 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
18050 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
18060 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
18070 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18080 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
18090 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20  Attempt to load 
180a0 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
180b0 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65  ry.  This will e
180c0 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ither..         
180d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
180e0 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74  turn a valid nat
180f0 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
18100 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72  e, return IntPtr
18110 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20  .Zero,..        
18120 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
18130 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70  r throw an excep
18140 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74  tion.  This must
18150 20 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72   use the appropr
18160 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  iate..          
18170 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49      //       P/I
18180 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72  nvoke method for
18190 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65   the current ope
181a0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a  rating system...
181b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
181c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
181d0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
181e0 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b  Name = fileName;
181f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18200 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
18210 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61  le = NativeLibra
18220 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62  ryHelper.LoadLib
18230 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  rary(fileName);.
18240 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18250 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65 4d   return (nativeM
18260 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49  oduleHandle != I
18270 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
18280 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
18290 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
182a0 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
182b0 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
182c0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
182d0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
182e0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
182f0 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
18300 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
18310 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
18320 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
18330 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
18340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18360 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
18380 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20  TE: First, grab 
18390 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65  the last Win32 e
183a0 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  rror number...  
183b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
183d0 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72        int lastEr
183e0 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65  ror = Marshal.Ge
183f0 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28  tLastWin32Error(
18400 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
18410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18420 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18430 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
18440 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65  E: Show where we
18450 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
18460 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
18470 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
18480 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
18490 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67  brary from along
184a0 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20   with the Win32 
184b0 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a  error code and..
184c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184d0 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70    //       excep
184e0 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tion information
184f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18500 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
18510 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
18520 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
18530 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
18540 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
18550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
18560 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
18570 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
18580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18590 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
185a0 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
185b0 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ed to load nativ
185c0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
185d0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
185e0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
185f0 30 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72  0}\" (getLastErr
18600 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c  or = {1}): {2}",
18610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18620 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
18630 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29  , lastError, e))
18640 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
18670 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
18680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18690 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
186a0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
186b0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
186c0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
186d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
186e0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
186f0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
18700 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
18710 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
18770 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
18780 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a  MEWORK..    //..
18790 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
187a0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
187b0 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20   Framework, the 
187c0 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
187d0 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20  ssembly must..  
187e0 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73    //       be us
187f0 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72  ed because it pr
18800 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77  ovides several w
18810 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e  orkarounds to .N
18820 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
18830 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f  //       Framewo
18840 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  rk limitations i
18850 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f  mportant for pro
18860 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  per operation of
18870 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f   the core..    /
18880 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44  /       System.D
18890 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74  ata.SQLite funct
188a0 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62  ionality (e.g. b
188b0 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e  eing able to bin
188c0 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  d..    //       
188d0 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68  parameters and h
188e0 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c  andle column val
188f0 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74  ues of types Int
18900 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d  64 and Double)..
18910 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
18920 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
18930 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
18940 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
18950 31 30 39 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  109.dll";..#elif
18960 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
18970 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
18980 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
18990 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72  , if the standar
189a0 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
189b0 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65   is enabled, use
189c0 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
189d0 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
189e0 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
189f0 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d  LL = "sqlite3";.
18a00 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52  .#elif USE_INTER
18a10 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a  OP_DLL..    //..
18a20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
18a30 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e  erwise, if the n
18a40 61 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74  ative SQLite int
18a50 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73  erop assembly is
18a60 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f   enabled,..    /
18a70 2f 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d  /       use it..
18a80 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
18a90 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
18aa0 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
18ab0 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
18ac0 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  dll";..#else..  
18ad0 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
18ae0 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75  E: Finally, assu
18af0 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65  me that the mixe
18b00 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20  d-mode assembly 
18b10 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a  is being used...
18b20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
18b30 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
18b40 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
18b50 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
18b60 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  te.dll";..#endif
18b70 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20  ....    // This 
18b80 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74  section uses int
18b90 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20  erop calls that 
18ba0 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20  also fetch text 
18bb0 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69  length to optimi
18bc0 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a  ze conversion...
18bd0 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e      // When usin
18be0 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64  g the standard d
18bf0 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61  ll, we can repla
18c00 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77  ce these calls w
18c10 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74  ith normal sqlit
18c20 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20  e calls and..   
18c30 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a   // do unoptimiz
18c40 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69  ed conversions i
18c50 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64  nstead afterward
18c60 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  s..    #region i
18c70 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78  nterop added tex
18c80 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d  tlength calls...
18c90 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
18ca0 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
18cb0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18cc0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18cd0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18ce0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18cf0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
18d00 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
18d10 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
18d20 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
18d30 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
18d40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
18d50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
18d60 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
18d70 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
18d80 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
18d90 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
18da0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
18db0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
18dc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
18dd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
18de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
18df0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
18e00 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
18e10 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f  database_name16_
18e20 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
18e30 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
18e40 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
18e50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
18e60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
18e70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
18e80 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
18e90 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
18ea0 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28  ecltype_interop(
18eb0 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
18ec0 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
18ed0 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
18ee0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
18ef0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
18f00 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
18f10 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
18f20 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
18f30 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
18f40 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
18f50 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
18f60 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
18f70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
18f80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
18f90 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
18fa0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
18fb0 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
18fc0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
18fd0 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
18fe0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
18ff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19000 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19010 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
19020 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
19030 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  lumn_name16_inte
19040 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
19050 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
19060 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
19070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
19080 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
19090 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
190a0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
190b0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
190c0 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
190d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
190e0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
190f0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
19100 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
19110 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
19120 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
19130 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
19140 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
19150 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
19160 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19170 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
19180 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19190 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
191a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
191b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
191c0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
191d0 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e  mn_table_name_in
191e0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
191f0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
19200 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
19210 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19220 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19230 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19240 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19250 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
19260 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  le_name16_intero
19270 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
19280 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
19290 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
192a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
192b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
192c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
192d0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
192e0 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e  3_column_text_in
192f0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
19300 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
19310 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
19320 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
19330 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
19340 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
19350 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
19360 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
19370 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
19380 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
19390 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
193a0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
193b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
193c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
193d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
193e0 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
193f0 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
19400 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65  r db, ref int le
19410 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
19420 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19430 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19440 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19450 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19460 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
19470 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
19480 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
19490 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
194a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
194b0 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
194c0 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69  , ref int nRemai
194d0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
194e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
194f0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19500 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19510 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19520 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
19530 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74  umn_metadata_int
19540 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
19550 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
19560 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
19570 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72  yte[] colName, r
19580 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ef IntPtr ptrDat
19590 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74  aType, ref IntPt
195a0 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65  r ptrCollSeq, re
195b0 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72  f int notNull, r
195c0 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ef int primaryKe
195d0 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49  y, ref int autoI
195e0 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65  nc, ref int dtLe
195f0 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e  n, ref int csLen
19600 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19620 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19630 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
19640 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
19650 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  ue_text_interop(
19660 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
19670 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
19680 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19690 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
196a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
196b0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
196c0 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69  3_value_text16_i
196d0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
196e0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
196f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
19700 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
19710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
19720 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
19730 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a  lite3_malloc_siz
19740 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
19750 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45   p);....#if INTE
19760 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c  ROP_LOG..    [Dl
19770 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19780 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19790 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
197a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
197b0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
197c0 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a  log_interop();..
197d0 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
197e0 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
197f0 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
19800 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
19810 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
19820 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e  add existing fun
19830 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f  ctionality on to
19840 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  p of SQLite and 
19850 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65  require a little
19860 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20   effort to..    
19870 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77  // get working w
19880 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74  hen using the st
19890 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
198a0 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67  brary...    #reg
198b0 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
198c0 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d  d functionality.
198d0 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
198e0 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
198f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
19900 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
19910 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
19920 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f  rn IntPtr intero
19930 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  p_libversion();.
19940 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
19950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
19960 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
19970 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
19980 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65  r interop_source
19990 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  id();....    [Dl
199a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
199b0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
199c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
199d0 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d   int interop_com
199e0 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
199f0 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29  IntPtr zOptName)
19a00 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19a10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19a20 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19a30 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
19a40 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  Ptr interop_comp
19a50 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
19a60 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  t N);....    [Dl
19a70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19a80 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19a90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19aa0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19ab0 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
19ac0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
19ad0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19ae0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19af0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19b00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
19b10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
19b20 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
19b30 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e  ction_interop(In
19b40 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
19b50 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
19b60 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
19b70 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
19b80 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
19b90 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
19ba0 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
19bb0 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
19bc0 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c  nal, int needCol
19bd0 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  lSeq);....    [D
19be0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
19bf0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
19c00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
19c10 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
19c20 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
19c30 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
19c40 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  r stmt);....    
19c50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
19c60 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
19c70 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
19c80 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
19c90 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
19ca0 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f  up_finish_intero
19cb0 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  p(IntPtr backup)
19cc0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
19cd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
19ce0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
19cf0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
19d00 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
19d10 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f  ite3_blob_close_
19d20 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62  interop(IntPtr b
19d30 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lob);....    [Dl
19d40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
19d50 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
19d60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
19d70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19d80 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e   sqlite3_open_in
19d90 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
19da0 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
19db0 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
19dc0 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
19dd0 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
19de0 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
19df0 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
19e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19e10 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19e20 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19e30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19e40 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e  qlite3_open16_in
19e50 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
19e60 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
19e70 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
19e80 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
19e90 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
19ea0 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
19eb0 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
19ec0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
19ed0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
19ee0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
19ef0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
19f00 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74  qlite3_reset_int
19f10 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
19f20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
19f30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
19f40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
19f50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
19f60 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
19f70 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  s_interop(IntPtr
19f80 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f   db);..#endif../
19f90 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
19fa0 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
19fb0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
19fc0 68 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20  he standard api 
19fd0 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73  call equivalents
19fe0 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e   of the above in
19ff0 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
1a000 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
1a010 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e  d versions of in
1a020 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d  terop functions.
1a030 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
1a040 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50  ANDARD....#if !P
1a050 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a060 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a070 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a080 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a090 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a0a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a0b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a0c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a0d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a0e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a0f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a100 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a110 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  e3_close(IntPtr 
1a120 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54  db);....#if !INT
1a130 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53  EROP_LEGACY_CLOS
1a140 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
1a150 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1a160 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1a170 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1a180 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1a190 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1a1a0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1a1b0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1a1c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1a1d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1a1e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1a1f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1a200 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1a210 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b  e_v2(IntPtr db);
1a220 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a   /* 3.7.14+ */..
1a230 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1a240 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1a250 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1a260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1a270 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1a280 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1a290 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1a2a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1a2b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a2c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1a2d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1a2e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1a2f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1a300 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
1a310 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  on(IntPtr db, by
1a320 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
1a330 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
1a340 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1a350 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
1a360 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
1a370 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
1a380 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
1a390 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69  k ffinal);....#i
1a3a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1a3b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1a3c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1a3d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1a3e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1a3f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1a400 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1a410 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a420 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1a430 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1a440 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1a450 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1a460 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
1a470 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1a480 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1a490 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1a4a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1a4b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1a4c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1a4d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1a4e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1a4f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1a500 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1a510 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1a520 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1a530 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1a540 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
1a550 5f 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62  _finish(IntPtr b
1a560 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
1a570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a5a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a5b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a5c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a5d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a5e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a5f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a600 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a610 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1a620 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1a630 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72  te3_reset(IntPtr
1a640 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1a650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a6a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a6b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a6c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a6d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a6e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a6f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a700 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  tr sqlite3_bind_
1a710 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49  parameter_name(I
1a720 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1a730 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1a740 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1a750 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1a760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1a770 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1a780 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1a790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1a7a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1a7b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a7c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1a7d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1a7e0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1a7f0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1a800 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28  n_database_name(
1a810 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1a820 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1a830 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1a840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1a850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1a860 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1a870 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1a880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1a890 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1a8a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1a8b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1a8c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1a8d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1a8e0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1a8f0 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
1a900 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1a910 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1a920 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1a930 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1a940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1a950 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1a960 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1a970 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1a980 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1a990 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1a9a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1a9b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1a9c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1a9d0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1a9e0 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49  olumn_decltype(I
1a9f0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1aa00 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1aa10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aa20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1aa30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1aa40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1aa50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1aa60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1aa70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1aa80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1aa90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1aaa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1aab0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1aac0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1aad0 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74  n_decltype16(Int
1aae0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1aaf0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1ab00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1ab10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1ab20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ab30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1ab40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1ab50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ab60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ab70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ab80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1ab90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1aba0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1abb0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1abc0 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
1abd0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1abe0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1abf0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1ac00 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1ac10 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1ac20 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1ac30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ac40 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1ac50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ac60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1ac70 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ac80 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ac90 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1aca0 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49  _column_name16(I
1acb0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1acc0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1acd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ace0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1acf0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ad00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ad10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ad20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1ad30 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1ad40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ad50 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ad60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ad70 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1ad80 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1ad90 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e  n_origin_name(In
1ada0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1adb0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1adc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1add0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ade0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1adf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ae00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ae10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ae20 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ae30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ae40 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ae50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ae60 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1ae70 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1ae80 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49  _origin_name16(I
1ae90 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1aea0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1aeb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1aec0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1aed0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1aee0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1aef0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1af00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1af10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1af20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1af30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1af40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1af50 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1af60 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1af70 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74  n_table_name(Int
1af80 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1af90 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1afa0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1afb0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1afc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1afd0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1afe0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1aff0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b000 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b010 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b020 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b040 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1b050 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1b060 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74  table_name16(Int
1b070 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1b080 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1b090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1b0a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1b0b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1b0c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1b0d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1b0e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1b0f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1b100 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1b110 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1b120 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1b130 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1b140 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1b150 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
1b160 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1b170 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b180 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b190 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b1a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b1b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b1c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b1d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b1e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b1f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b200 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b210 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b220 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1b230 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49  _column_text16(I
1b240 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1b250 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1b260 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b270 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b280 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b290 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b2a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b2b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b2c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b2d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b2e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b2f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b300 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b310 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
1b320 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  g(IntPtr db);...
1b330 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1b340 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b350 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b360 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1b370 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1b380 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b390 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1b3a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b3b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1b3c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1b3d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1b3e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1b3f0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
1b400 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1b410 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1b420 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1b430 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1b440 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d  r ptrRemain);...
1b450 0a 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45  .#if USE_PREPARE
1b460 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  _V2..#if !PLATFO
1b470 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1b480 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1b490 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1b4a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1b4b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1b4c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1b4d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1b4e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1b4f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1b500 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1b510 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1b520 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
1b530 65 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20  epare_v2(IntPtr 
1b540 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
1b550 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66   int nBytes, ref
1b560 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65   IntPtr stmt, re
1b570 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  f IntPtr ptrRema
1b580 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  in);..#endif....
1b590 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1b5a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1b5b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1b5c0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1b5d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1b5e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1b5f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1b600 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1b610 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1b620 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1b630 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1b640 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1b650 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1b660 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49  olumn_metadata(I
1b670 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1b680 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
1b690 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
1b6a0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
1b6b0 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
1b6c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
1b6d0 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
1b6e0 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
1b6f0 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
1b700 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a   int autoInc);..
1b710 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1b720 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1b730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1b740 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1b750 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1b760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1b770 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1b780 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1b790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1b7a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1b7b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1b7c0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1b7d0 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74  3_value_text(Int
1b7e0 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
1b7f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1b810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1b820 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1b830 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1b840 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1b850 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1b860 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1b870 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1b880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1b890 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1b8a0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1b8b0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70  _text16(IntPtr p
1b8c0 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  );....#endif..  
1b8d0 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e    // SQLITE_STAN
1b8e0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
1b8f0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1b900 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
1b910 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20   are custom and 
1b920 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65  have no equivale
1b930 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  nt standard libr
1b940 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  ary method...   
1b950 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20   // All of them 
1b960 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76  are "nice to hav
1b970 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65  es" and not nece
1b980 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f  ssarily "need to
1b990 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72   haves"...    #r
1b9a0 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c  egion no equival
1b9b0 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74  ent standard met
1b9c0 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  hod....#if !SQLI
1b9d0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1b9e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1b9f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1ba00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ba10 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ba20 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f  lite3_context_co
1ba30 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e  llseq_interop(In
1ba40 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1ba50 66 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20  f int type, ref 
1ba60 69 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74  int enc, ref int
1ba70 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1ba80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ba90 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1baa0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bab0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1bac0 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72  ntext_collcompar
1bad0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1bae0 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1baf0 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20   p1, int p1len, 
1bb00 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70  byte[] p2, int p
1bb10 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  2len);....    [D
1bb20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bb30 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bb40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bb50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1bb60 65 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72  e sqlite3_cursor
1bb70 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
1bb80 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1bb90 63 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67  cursor, ref long
1bba0 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowid);....    
1bbb0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1bbc0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1bbd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bbe0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1bbf0 6f 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ode sqlite3_inde
1bc00 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e  x_column_info_in
1bc10 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
1bc20 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c   byte[] catalog,
1bc30 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d   byte[] IndexNam
1bc40 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e  e, byte[] Column
1bc50 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f  Name, ref int so
1bc60 72 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74  rtOrder, ref int
1bc70 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e   onError, ref In
1bc80 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20  tPtr Collation, 
1bc90 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29  ref int colllen)
1bca0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1bcb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bcc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bcd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1bce0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1bcf0 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e  ursor_interop(In
1bd00 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64  tPtr stmt, int d
1bd10 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74  b, int tableRoot
1bd20 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66  Page);....#endif
1bd30 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
1bd40 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
1bd50 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1bd60 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63  / Standard API c
1bd70 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f  alls global acro
1bd80 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68  ss versions.  Th
1bd90 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e  ere are a few in
1bda0 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72  stances of inter
1bdb0 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f  op calls..    //
1bdc0 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65   scattered in he
1bdd0 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65  re, but they are
1bde0 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65   only active whe
1bdf0 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  n PLATFORM_COMPA
1be00 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64  CTFRAMEWORK is d
1be10 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72  eclared...    #r
1be20 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73  egion standard s
1be30 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
1be40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1be50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1be60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1be70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1be80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1be90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1bea0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1beb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1bec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1bed0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1bee0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1bef0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1bf00 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
1bf10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1bf20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1bf30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1bf40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1bf50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1bf60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1bf70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1bf80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1bf90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bfa0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1bfb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1bfc0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1bfd0 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
1bfe0 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
1bff0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1c000 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1c010 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c020 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1c030 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1c040 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1c050 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1c060 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c070 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1c080 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c090 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c0a0 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
1c0b0 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
1c0c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1c0d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1c0e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c0f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1c100 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1c110 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1c120 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1c130 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c140 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1c150 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c160 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1c170 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
1c180 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a  on_used(IntPtr z
1c190 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  OptName);....#if
1c1a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1c1b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1c1c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c1d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1c1e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1c1f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1c200 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1c210 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c220 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1c230 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1c240 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c250 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
1c260 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
1c270 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt N);....#if !P
1c280 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1c290 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1c2a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1c2b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1c2c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1c2d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1c2e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1c2f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c300 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1c310 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c320 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c330 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c340 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
1c350 5f 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20  _cache(..       
1c360 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
1c370 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1c380 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c390 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c3a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1c3b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1c3c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c3d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1c3e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c3f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1c400 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1c410 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1c420 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1c430 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  e sqlite3_enable
1c440 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
1c450 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1c460 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29   db, int enable)
1c470 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1c480 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1c490 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1c4a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1c4b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1c4c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1c4d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1c4e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1c4f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c500 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1c510 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c520 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1c530 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f  rCode sqlite3_lo
1c540 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
1c550 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
1c560 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d  , byte[] fileNam
1c570 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61  e, byte[] procNa
1c580 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1c590 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  Error);....#if !
1c5a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c5b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c5c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c5d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c5e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c5f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c600 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1c610 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c620 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1c630 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c640 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1c650 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1c660 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e  te3_overload_fun
1c670 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
1c680 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69   IntPtr zName, i
1c690 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69  nt nArgs);....#i
1c6a0 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21  f WINDOWS..#if !
1c6b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1c6c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1c6d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c6e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1c6f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1c700 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1c710 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1c720 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1c730 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1c740 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c750 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1c760 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1c770 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
1c780 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
1c790 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73  "sqlite3_win32_s
1c7a0 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51  et_directory" SQ
1c7b0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1c7c0 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20  y function is.. 
1c7d0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
1c7e0 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69   supported on Wi
1c7f0 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  ndows...    //..
1c800 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c810 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1c820 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1c830 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
1c840 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65  ectory(uint type
1c850 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b  , string value);
1c860 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f  ....#if !DEBUG /
1c870 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62  / NOTE: Should b
1c880 65 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20  e "WIN32HEAP && 
1c890 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20  !MEMDEBUG"..#if 
1c8a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1c8b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1c8c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c8d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1c8e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1c8f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1c900 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1c910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c920 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1c930 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1c940 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69   NOTE: The "sqli
1c950 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
1c960 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
1c970 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
1c980 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
1c990 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
1c9a0 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
1c9b0 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
1c9c0 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
1c9d0 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
1c9e0 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
1c9f0 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
1ca00 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
1ca10 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1ca20 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1ca30 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
1ca40 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
1ca50 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1ca60 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
1ca70 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
1ca80 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
1ca90 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
1caa0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
1cab0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1cac0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1cad0 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
1cae0 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69  et_heap();....#i
1caf0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1cb00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1cb10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cb20 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1cb30 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1cb40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1cb50 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1cb60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cb70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1cb80 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
1cb90 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
1cba0 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70  lite3_win32_comp
1cbb0 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65  act_heap" SQLite
1cbc0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
1cbd0 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
1cbe0 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
1cbf0 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
1cc00 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32  s when the Win32
1cc10 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f   native allocato
1cc20 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20  r is in..    // 
1cc30 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20        use (i.e. 
1cc40 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22  by default, in "
1cc50 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20  Release" builds 
1cc60 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
1cc70 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20  QLite..    //   
1cc80 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64      only).  By d
1cc90 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75  efault, in "Debu
1cca0 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  g" builds of Sys
1ccb0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c  tem.Data.SQLite,
1ccc0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
1ccd0 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f     MEMDEBUG allo
1cce0 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a  cator is used...
1ccf0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
1cd00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cd10 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1cd20 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
1cd30 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65  _compact_heap(re
1cd40 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b  f uint largest);
1cd50 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
1cd60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1cd70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1cd80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1cd90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1cda0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1cdb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1cdc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1cdd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1cde0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cdf0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ce00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ce10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1ce20 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e  te3_malloc(int n
1ce30 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ce40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ce50 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ce60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ce70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ce80 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ce90 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1cea0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ceb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1cec0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ced0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cee0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1cef0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e  lite3_realloc(In
1cf00 74 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d  tPtr p, int n);.
1cf10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1cf20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cf30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1cf40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1cf50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1cf60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1cf70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1cf80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1cf90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1cfa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1cfb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1cfc0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1cfd0 5f 66 72 65 65 28 49 6e 74 50 74 72 20 70 29 3b  _free(IntPtr p);
1cfe0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1cff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d000 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d010 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d030 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d040 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d050 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d070 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d090 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1d0a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  Code sqlite3_ope
1d0b0 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75 74 66 38  n_v2(byte[] utf8
1d0c0 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66 20 49 6e  Filename, ref In
1d0d0 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 4f  tPtr db, SQLiteO
1d0e0 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
1d0f0 67 73 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  gs, byte[] vfsNa
1d100 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
1d110 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d120 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d130 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d140 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d150 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d160 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
1d170 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
1d180 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
1d190 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d1a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d1b0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
1d1c0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
1d1d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d1e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d1f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d200 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 73 74  qlite3_open16(st
1d210 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 72  ring fileName, r
1d220 65 66 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  ef IntPtr db);..
1d230 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d240 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d250 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d260 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d270 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d290 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d2a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d2b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d2c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d2d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d2e0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1d2f0 69 6e 74 65 72 72 75 70 74 28 49 6e 74 50 74 72  interrupt(IntPtr
1d300 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
1d310 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1d320 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1d330 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1d340 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1d350 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1d360 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1d370 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d380 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f  static extern lo
1d390 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
1d3a0 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 49 6e 74  insert_rowid(Int
1d3b0 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66  Ptr db);..#endif
1d3c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d3d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d3e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d3f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d410 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d420 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d430 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d450 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d460 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d470 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1d480 5f 63 68 61 6e 67 65 73 28 49 6e 74 50 74 72 20  _changes(IntPtr 
1d490 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
1d4a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d4b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d4c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d4d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1d4e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1d4f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1d500 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d510 74 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e  tatic extern lon
1d520 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  g sqlite3_memory
1d530 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e 64 69 66  _used();..#endif
1d540 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d550 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d560 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d570 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d580 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d590 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d5a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
1d5b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d5c0 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71  c extern long sq
1d5d0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
1d5e0 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74  hwater(int reset
1d5f0 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Flag);..#endif..
1d600 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1d610 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1d620 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d630 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1d640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1d650 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1d660 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1d670 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1d680 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1d690 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1d6a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d6b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1d6c0 64 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  de sqlite3_shutd
1d6d0 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  own();....#if !P
1d6e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d6f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d700 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d710 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d720 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d730 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d740 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d750 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d760 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d770 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d780 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d790 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d7a0 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
1d7b0 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6d  IntPtr db, int m
1d7c0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
1d7d0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d7e0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d7f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d800 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d810 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d830 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d840 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d850 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d860 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d870 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d880 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d890 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 49  clear_bindings(I
1d8a0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
1d8b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1d8c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1d8d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d8e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1d8f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1d900 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d910 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1d920 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d930 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1d940 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1d950 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1d960 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1d970 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c   sqlite3_bind_bl
1d980 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ob(IntPtr stmt, 
1d990 69 6e 74 20 69 6e 64 65 78 2c 20 42 79 74 65 5b  int index, Byte[
1d9a0 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69  ] value, int nSi
1d9b0 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54 72 61 6e  ze, IntPtr nTran
1d9c0 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  sient);....#if !
1d9d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d9e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d9f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1da00 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1da10 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1da20 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1da30 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
1da40 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1da50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1da60 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1da70 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
1da80 20 69 6e 74 20 69 6e 64 65 78 2c 20 64 6f 75 62   int index, doub
1da90 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  le value);..#end
1daa0 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1dab0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1dac0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1dad0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1dae0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1daf0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1db00 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1db10 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1db20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1db30 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1db40 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db50 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1db60 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62  orCode sqlite3_b
1db70 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74 72 20 73  ind_int(IntPtr s
1db80 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1db90 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  int value);.... 
1dba0 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f     //..    // NO
1dbb0 54 45 3a 20 54 68 69 73 20 72 65 61 6c 6c 79 20  TE: This really 
1dbc0 6a 75 73 74 20 63 61 6c 6c 73 20 22 73 71 6c 69  just calls "sqli
1dbd0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 3b 20 68  te3_bind_int"; h
1dbe0 6f 77 65 76 65 72 2c 20 69 74 20 68 61 73 20 74  owever, it has t
1dbf0 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  he..    //      
1dc00 20 63 6f 72 72 65 63 74 20 74 79 70 65 20 73 69   correct type si
1dc10 67 6e 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75  gnature for an u
1dc20 6e 73 69 67 6e 65 64 20 28 33 32 2d 62 69 74 29  nsigned (32-bit)
1dc30 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
1dc40 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
1dc50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1dc60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1dc70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1dc80 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1dc90 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 2c 20 43  te3_bind_int", C
1dca0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dcb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dcc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dcd0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1dcf0 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71  EntryPoint = "sq
1dd00 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22 29  lite3_bind_int")
1dd10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1dd20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dd30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1dd40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69  rCode sqlite3_bi
1dd50 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74 72 20 73  nd_uint(IntPtr s
1dd60 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1dd70 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uint value);....
1dd80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1dd90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1dda0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ddb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1ddc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1ddd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dde0 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
1ddf0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1de00 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1de10 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
1de20 64 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 73  d_int64(IntPtr s
1de30 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1de40 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23 65  long value);..#e
1de50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 0d 0a  ndif....    //..
1de60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
1de70 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63 61  s really just ca
1de80 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69 6e  lls "sqlite3_bin
1de90 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77 65 76 65  d_int64"; howeve
1dea0 72 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20  r, it has the.. 
1deb0 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72     //       corr
1dec0 65 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75  ect type signatu
1ded0 72 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e  re for an unsign
1dee0 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62 69 74 29  ed long (64-bit)
1def0 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 2f   integer...    /
1df00 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  /..#if !PLATFORM
1df10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1df20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1df30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
1df40 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
1df50 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 22 2c  te3_bind_int64",
1df60 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1df70 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1df80 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1df90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dfa0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1dfb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1dfc0 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 28 49  e3_bind_uint64(I
1dfd0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1dfe0 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20 76 61 6c  index, ulong val
1dff0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
1e000 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e010 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e020 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e030 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e040 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e050 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e060 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e070 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e080 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e090 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e0a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e0b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e0c0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75   sqlite3_bind_nu
1e0d0 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ll(IntPtr stmt, 
1e0e0 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1e0f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e100 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e120 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e150 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e170 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e180 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e190 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e1a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e1b0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
1e1c0 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
1e1d0 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d  nt index, byte[]
1e1e0 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65 6e   value, int nlen
1e1f0 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
1e200 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
1e210 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e220 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e230 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e240 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e250 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e260 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e270 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e290 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e2a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e2b0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1e2c0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
1e2d0 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e 74 50 74  eter_count(IntPt
1e2e0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
1e2f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e300 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e310 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e320 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e330 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e340 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e350 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e360 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e370 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e380 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e390 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1e3a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1e3b0 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 49 6e  rameter_index(In
1e3c0 74 50 74 72 20 73 74 6d 74 2c 20 62 79 74 65 5b  tPtr stmt, byte[
1e3d0 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a 0d 0a 23  ] strName);....#
1e3e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e3f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e400 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e410 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e420 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e430 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e440 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e450 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e460 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e470 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e480 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e490 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
1e4a0 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  mn_count(IntPtr 
1e4b0 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1e4c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e4d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e4e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e4f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e500 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e510 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e520 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e530 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e540 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e550 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e560 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e570 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e580 65 33 5f 73 74 65 70 28 49 6e 74 50 74 72 20 73  e3_step(IntPtr s
1e590 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
1e5a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e5b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e5c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e5d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e5e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e5f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e600 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e610 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e620 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e630 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e640 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1e650 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
1e660 6e 6c 79 28 49 6e 74 50 74 72 20 73 74 6d 74 29  nly(IntPtr stmt)
1e670 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a 2f 0d 0a  ; /* 3.7.4+ */..
1e680 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e690 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e6a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e6b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e6c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e6d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e6e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1e6f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e700 65 78 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71  extern double sq
1e710 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75  lite3_column_dou
1e720 62 6c 65 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  ble(IntPtr stmt,
1e730 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23 65   int index);..#e
1e740 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ndif....#if !PLA
1e750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e780 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e790 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1e7a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1e7b0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1e7c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e7d0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1e7e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1e7f0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1e800 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28  ite3_column_int(
1e810 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1e820 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1e830 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e840 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e850 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e860 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e870 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e890 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
1e8a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e8b0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f   long sqlite3_co
1e8c0 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e 74 50 74  lumn_int64(IntPt
1e8d0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e8e0 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  x);..#endif....#
1e8f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e900 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e910 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e920 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1e930 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1e940 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1e950 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1e960 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e970 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1e980 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1e990 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1e9a0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1e9b0 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e 74 50 74  olumn_blob(IntPt
1e9c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1e9d0 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
1e9e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e9f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1ea00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ea10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1ea20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1ea30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1ea40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1ea50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ea60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1ea70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ea80 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
1ea90 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
1eaa0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1eab0 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
1eac0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ead0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1eae0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eaf0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1eb00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1eb10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1eb20 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1eb30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1eb40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1eb50 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1eb60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1eb70 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  t sqlite3_column
1eb80 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20  _bytes16(IntPtr 
1eb90 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1eba0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ebb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ebc0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ebd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1ebe0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1ebf0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1ec00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1ec10 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1ec20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1ec30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1ec40 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ec50 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e 69  xtern TypeAffini
1ec60 74 79 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ty sqlite3_colum
1ec70 6e 5f 74 79 70 65 28 49 6e 74 50 74 72 20 73 74  n_type(IntPtr st
1ec80 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1ec90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1eca0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ecb0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ecc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ecd0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ece0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1ecf0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ed00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ed10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ed20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ed30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ed40 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ed50 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
1ed60 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28 49 6e 74  te_collation(Int
1ed70 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73  Ptr db, byte[] s
1ed80 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 54 79 70  trName, int nTyp
1ed90 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  e, IntPtr pvUser
1eda0 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f  , SQLiteCollatio
1edb0 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20  n func);....#if 
1edc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1edd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ede0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1edf0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ee00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ee10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ee20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ee30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ee40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ee50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ee60 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1ee70 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
1ee80 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50 74 72 20  te_count(IntPtr 
1ee90 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
1eea0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1eeb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1eec0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eed0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1eee0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1eef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1ef00 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1ef10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ef20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1ef30 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1ef40 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1ef50 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
1ef60 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 70  ue_blob(IntPtr p
1ef70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ef80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ef90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1efa0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1efb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1efc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1efd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1efe0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1eff0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f000 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f010 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f020 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1f030 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 49  e3_value_bytes(I
1f040 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
1f050 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f060 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f070 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f080 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f090 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f0a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f0b0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f0c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f0d0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f0e0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f0f0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f100 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
1f110 62 79 74 65 73 31 36 28 49 6e 74 50 74 72 20 70  bytes16(IntPtr p
1f120 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f130 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f140 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f160 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f170 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f180 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f190 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f1a0 74 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c  tic extern doubl
1f1b0 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  e sqlite3_value_
1f1c0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 29  double(IntPtr p)
1f1d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
1f1e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f1f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f200 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f210 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f220 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f230 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f240 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f250 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f260 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f270 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f280 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f290 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  t sqlite3_value_
1f2a0 69 6e 74 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a  int(IntPtr p);..
1f2b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f2c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f2d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f2e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f2f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f300 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f310 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
1f320 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f330 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
1f340 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28  te3_value_int64(
1f350 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e 64  IntPtr p);..#end
1f360 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  if....#if !PLATF
1f370 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f380 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f390 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f3a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f3b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f3c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f3d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f3e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f3f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f400 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f410 65 78 74 65 72 6e 20 54 79 70 65 41 66 66 69 6e  extern TypeAffin
1f420 69 74 79 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ity sqlite3_valu
1f430 65 5f 74 79 70 65 28 49 6e 74 50 74 72 20 70 29  e_type(IntPtr p)
1f440 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f450 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f460 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f470 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f480 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f490 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f4a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f4b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f4c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f4d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f4e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f4f0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
1f500 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 49  e3_result_blob(I
1f510 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62  ntPtr context, b
1f520 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74  yte[] value, int
1f530 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 70   nSize, IntPtr p
1f540 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23  vReserved);....#
1f550 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1f560 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1f570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f580 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1f590 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1f5a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1f5b0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
1f5c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f5d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
1f5e0 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 49  _result_double(I
1f5f0 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64  ntPtr context, d
1f600 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
1f610 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1f620 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f630 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f640 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f650 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f660 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f670 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f680 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f690 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f6a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f6b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f6c0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
1f6d0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1f6e0 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
1f6f0 78 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 45 72  xt, byte[] strEr
1f700 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d  r, int nLen);...
1f710 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f720 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f730 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f740 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f750 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f760 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f770 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f780 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f790 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f7a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f7b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f7c0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
1f7d0 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65  esult_error_code
1f7e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
1f7f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f800 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
1f810 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1f820 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1f830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f840 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1f850 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1f860 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1f870 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1f880 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f890 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1f8a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1f8b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1f8c0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1f8d0 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 49 6e  _error_toobig(In
1f8e0 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
1f8f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f900 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f910 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f920 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f930 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f940 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f950 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f960 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f970 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f980 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f990 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f9a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
1f9b0 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d  result_error_nom
1f9c0 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  em(IntPtr contex
1f9d0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
1f9e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1f9f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fa00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fa10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fa20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fa30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1fa40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1fa50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fa60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1fa70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fa80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
1fa90 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
1faa0 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
1fab0 2c 20 49 6e 74 50 74 72 20 76 61 6c 75 65 29 3b  , IntPtr value);
1fac0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1fad0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1fae0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1faf0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fb00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fb10 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1fb20 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1fb30 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1fb40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fb50 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1fb60 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1fb70 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
1fb80 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
1fb90 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
1fba0 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a  , int nLen);....
1fbb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1fbc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1fbd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fbe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1fbf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1fc00 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1fc10 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1fc20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1fc30 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1fc40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1fc50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1fc60 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
1fc70 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50 74 72 20  sult_int(IntPtr 
1fc80 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 76 61 6c  context, int val
1fc90 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
1fca0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1fcb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1fcc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fcd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1fce0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1fcf0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1fd00 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1fd10 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
1fd20 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
1fd30 5f 69 6e 74 36 34 28 49 6e 74 50 74 72 20 63 6f  _int64(IntPtr co
1fd40 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76 61 6c 75  ntext, long valu
1fd50 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  e);..#endif....#
1fd60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fd70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1fd80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fd90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1fda0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1fdb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1fdc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1fdd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1fde0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1fdf0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1fe00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1fe10 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
1fe20 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20  ult_null(IntPtr 
1fe30 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
1fe40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1fe50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1fe60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fe70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1fe80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fe90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1fea0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1feb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fec0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1fed0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1fee0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
1fef0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
1ff00 74 5f 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  t_text(IntPtr co
1ff10 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61  ntext, byte[] va
1ff20 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c 20 49  lue, int nLen, I
1ff30 6e 74 50 74 72 20 70 76 52 65 73 65 72 76 65 64  ntPtr pvReserved
1ff40 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1ff50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1ff60 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1ff70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1ff80 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ff90 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1ffa0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1ffb0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1ffc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1ffd0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1ffe0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1fff0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20000 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f  lite3_aggregate_
20010 63 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63  context(IntPtr c
20020 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e 42 79 74  ontext, int nByt
20030 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  es);....#if !PLA
20040 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20050 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20060 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20070 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20080 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20090 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
200a0 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
200b0 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c  t.Unicode)]..#el
200c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
200d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
200e0 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
200f0 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64  .Unicode)]..#end
20100 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20110 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
20120 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
20130 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
20140 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
20150 69 6e 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e  int index, strin
20160 67 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 6c 65  g value, int nle
20170 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65  n, IntPtr pvRese
20180 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rved);....#if !P
20190 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
201a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
201b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
201c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
201d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
201e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
201f0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
20200 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
20210 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20220 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20230 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53   CharSet = CharS
20240 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23 65  et.Unicode)]..#e
20250 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20260 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
20270 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
20280 73 75 6c 74 5f 65 72 72 6f 72 31 36 28 49 6e 74  sult_error16(Int
20290 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
202a0 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
202b0 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
202c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
202d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
202e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
202f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20300 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20310 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20320 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
20330 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
20340 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20350 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20360 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
20370 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
20380 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20390 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
203a0 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
203b0 65 73 75 6c 74 5f 74 65 78 74 31 36 28 49 6e 74  esult_text16(Int
203c0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
203d0 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74  ing strName, int
203e0 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76   nLen, IntPtr pv
203f0 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69  Reserved);....#i
20400 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20  f INTEROP_CODEC 
20410 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55  || INTEROP_INCLU
20420 44 45 5f 53 45 45 0d 0a 23 69 66 20 21 50 4c 41  DE_SEE..#if !PLA
20430 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20440 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
20450 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20460 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
20470 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
20480 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
20490 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
204a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
204b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
204c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
204d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
204e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
204f0 5f 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  _key(IntPtr db, 
20500 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
20510 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20  keylen);....#if 
20520 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20530 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20550 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20560 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20580 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20590 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
205a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
205b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
205c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
205d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
205e0 69 74 65 33 5f 72 65 6b 65 79 28 49 6e 74 50 74  ite3_rekey(IntPt
205f0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79  r db, byte[] key
20600 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a  , int keylen);..
20610 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 49 4e  #endif....#if IN
20620 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49  TEROP_INCLUDE_ZI
20630 50 56 46 53 0d 0a 23 69 66 20 21 50 4c 41 54 46  PVFS..#if !PLATF
20640 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20650 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20660 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20670 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20680 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20690 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
206a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
206b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
206c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
206d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
206e0 65 78 74 65 72 6e 20 76 6f 69 64 20 7a 69 70 76  extern void zipv
206f0 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d 0a 0d 0a  fsInit_v2();....
20700 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20710 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20720 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20730 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20740 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20750 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20760 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20770 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20780 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20790 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
207a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
207b0 20 76 6f 69 64 20 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
207c0 5f 76 33 28 69 6e 74 20 72 65 67 44 66 6c 74 29  _v3(int regDflt)
207d0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
207e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
207f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20800 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20810 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20820 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20830 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20840 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20850 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20860 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20870 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20880 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
20890 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72  id sqlite3_progr
208a0 65 73 73 5f 68 61 6e 64 6c 65 72 28 49 6e 74 50  ess_handler(IntP
208b0 74 72 20 64 62 2c 20 69 6e 74 20 6f 70 73 2c 20  tr db, int ops, 
208c0 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61  SQLiteProgressCa
208d0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
208e0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
208f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20900 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20910 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20920 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20930 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20940 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20950 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20960 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20970 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
20980 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
20990 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
209a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
209b0 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 49  set_authorizer(I
209c0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
209d0 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61  AuthorizerCallba
209e0 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
209f0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
20a00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20a10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20a20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20a30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20a40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20a50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20a60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20a70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20a80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20a90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20aa0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20ab0 50 74 72 20 73 71 6c 69 74 65 33 5f 75 70 64 61  Ptr sqlite3_upda
20ac0 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64  te_hook(IntPtr d
20ad0 62 2c 20 53 51 4c 69 74 65 55 70 64 61 74 65 43  b, SQLiteUpdateC
20ae0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
20af0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
20b00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20b10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20b20 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20b30 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20b40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20b50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20b60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20b70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20b80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20b90 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20ba0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20bb0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
20bc0 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28 49 6e 74  _commit_hook(Int
20bd0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f  Ptr db, SQLiteCo
20be0 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e  mmitCallback fun
20bf0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
20c00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20c10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20c20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20c30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20c40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20c50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20c60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20c70 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20c80 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c90 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20ca0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20cb0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20cc0 6c 69 74 65 33 5f 74 72 61 63 65 28 49 6e 74 50  lite3_trace(IntP
20cd0 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72 61  tr db, SQLiteTra
20ce0 63 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  ceCallback func,
20cf0 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
20d00 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20d20 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20d30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20d40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20d50 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20d60 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20d70 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20d80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20d90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20da0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20db0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20dc0 74 65 33 5f 74 72 61 63 65 5f 76 32 28 49 6e 74  te3_trace_v2(Int
20dd0 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 54 72  Ptr db, SQLiteTr
20de0 61 63 65 46 6c 61 67 73 20 6d 61 73 6b 2c 20 53  aceFlags mask, S
20df0 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61  QLiteTraceCallba
20e00 63 6b 32 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ck2 func, IntPtr
20e10 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 20 20 20   pvUser);....   
20e20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74 65   // Since sqlite
20e30 33 5f 63 6f 6e 66 69 67 28 29 20 74 61 6b 65 73  3_config() takes
20e40 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67 75   a variable argu
20e50 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61  ment list, we ha
20e60 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64  ve to overload d
20e70 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20  eclarations..   
20e80 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73   // for all poss
20e90 69 62 6c 65 20 63 61 6c 6c 73 20 74 68 61 74 20  ible calls that 
20ea0 77 65 20 77 61 6e 74 20 74 6f 20 75 73 65 2e 0d  we want to use..
20eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
20ef0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
20f00 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  3_config", Calli
20f10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20f20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20f30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20f40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20f50 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
20f60 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
20f70 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e  3_config")]..#en
20f80 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20f90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20fa0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20fb0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6e  sqlite3_config_n
20fc0 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e 66 69 67  one(SQLiteConfig
20fd0 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d 0a 0d 0a  OpsEnum op);....
20fe0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20ff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21000 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21010 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21020 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
21030 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e  _config", Callin
21040 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21050 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21060 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21070 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21080 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
21090 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
210a0 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64  _config")]..#end
210b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
210c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
210d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
210e0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 69 6e  qlite3_config_in
210f0 74 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  t(SQLiteConfigOp
21100 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61  sEnum op, int va
21110 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
21120 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21130 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21140 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21150 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
21160 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
21170 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
21180 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21190 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
211a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
211b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
211c0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
211d0 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   "sqlite3_config
211e0 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ")]..#endif..   
211f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21200 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
21210 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
21220 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51 4c 69 74  config_log(SQLit
21230 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20 6f  eConfigOpsEnum o
21240 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43 61 6c 6c  p, SQLiteLogCall
21250 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
21260 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
21270 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21280 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
212a0 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f  ITE_DLL, EntryPo
212b0 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64  int = "sqlite3_d
212c0 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69  b_config", Calli
212d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
212e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
212f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21300 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21310 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
21320 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
21330 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  3_db_config")]..
21340 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21350 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21360 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21370 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  de sqlite3_db_co
21380 6e 66 69 67 5f 63 68 61 72 70 74 72 28 49 6e 74  nfig_charptr(Int
21390 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f  Ptr db, SQLiteCo
213a0 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70  nfigDbOpsEnum op
213b0 2c 20 49 6e 74 50 74 72 20 63 68 61 72 50 74 72  , IntPtr charPtr
213c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
213d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
213e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
213f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21400 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
21410 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
21420 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
21430 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21440 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21450 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21470 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
21480 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
21490 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
214a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
214b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
214c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
214d0 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74  e3_db_config_int
214e0 5f 72 65 66 69 6e 74 28 49 6e 74 50 74 72 20 64  _refint(IntPtr d
214f0 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44  b, SQLiteConfigD
21500 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  bOpsEnum op, int
21510 20 76 61 6c 75 65 2c 20 72 65 66 20 69 6e 74 20   value, ref int 
21520 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23 69 66 20  result);....#if 
21530 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21540 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21550 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21560 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
21570 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
21580 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67  config", Calling
21590 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
215a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
215b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
215c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
215d0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
215e0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
215f0 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65  db_config")]..#e
21600 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21610 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21620 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21630 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66   sqlite3_db_conf
21640 69 67 5f 69 6e 74 70 74 72 5f 74 77 6f 5f 69 6e  ig_intptr_two_in
21650 74 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51  ts(IntPtr db, SQ
21660 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45  LiteConfigDbOpsE
21670 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74 72 20 70  num op, IntPtr p
21680 74 72 2c 20 69 6e 74 20 69 6e 74 30 2c 20 69 6e  tr, int int0, in
21690 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23 69 66 20  t int1);....#if 
216a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
216b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
216c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
216d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
216e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
216f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21700 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21710 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21720 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21730 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21740 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
21750 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
21760 69 74 65 33 5f 64 62 5f 73 74 61 74 75 73 28 49  ite3_db_status(I
21770 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
21780 53 74 61 74 75 73 4f 70 73 45 6e 75 6d 20 6f 70  StatusOpsEnum op
21790 2c 20 72 65 66 20 69 6e 74 20 63 75 72 72 65 6e  , ref int curren
217a0 74 2c 20 72 65 66 20 69 6e 74 20 68 69 67 68 77  t, ref int highw
217b0 61 74 65 72 2c 20 69 6e 74 20 72 65 73 65 74 46  ater, int resetF
217c0 6c 61 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lag);....#if !PL
217d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
217e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
217f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21800 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21810 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21820 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21830 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21840 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21850 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21860 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21870 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
21880 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c 62 61 63   sqlite3_rollbac
21890 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  k_hook(IntPtr db
218a0 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b  , SQLiteRollback
218b0 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49  Callback func, I
218c0 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a  ntPtr pvUser);..
218d0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
218e0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
218f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21900 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21910 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21920 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21930 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21940 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21950 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21960 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21970 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21980 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
21990 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49 6e 74 50  3_db_handle(IntP
219a0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
219b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
219c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
219d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
219e0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
219f0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21a00 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21a10 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21a20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21a30 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21a40 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21a50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
21a60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
21a70 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65 61 73 65  lite3_db_release
21a80 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74 72 20 64  _memory(IntPtr d
21a90 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  b);....#if !PLAT
21aa0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21ab0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21ac0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21ad0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21ae0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21af0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21b00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21b10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21b20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21b30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21b40 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
21b50 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61  qlite3_db_filena
21b60 6d 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e  me(IntPtr db, In
21b70 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d  tPtr dbName);...
21b80 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21b90 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21ba0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21bb0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21bc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21bd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21be0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21bf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21c00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21c10 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21c20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21c30 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62  n int sqlite3_db
21c40 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72  _readonly(IntPtr
21c50 20 64 62 2c 20 49 6e 74 50 74 72 20 64 62 4e 61   db, IntPtr dbNa
21c60 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  me);....#if !PLA
21c70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21c80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21c90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21ca0 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
21cb0 22 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65  "sqlite3_db_file
21cc0 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e 67 43 6f  name", CallingCo
21cd0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21ce0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21cf0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21d00 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21d10 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
21d20 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62  nt = "sqlite3_db
21d30 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d 0a 23 65  _filename")]..#e
21d40 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21d50 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21d60 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
21d70 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62 79 74 65  db_filename_byte
21d80 73 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  s(IntPtr db, byt
21d90 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d 0a 0d 0a  e[] dbName);....
21da0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21db0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21dc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21dd0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21de0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21df0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21e00 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21e10 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21e20 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21e30 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21e40 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21e50 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
21e60 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74 50 74 72  next_stmt(IntPtr
21e70 20 64 62 2c 20 49 6e 74 50 74 72 20 73 74 6d 74   db, IntPtr stmt
21e80 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21e90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21ea0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21eb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21ec0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21ed0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21ee0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21ef0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21f00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21f10 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21f20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21f30 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
21f40 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 65  orCode sqlite3_e
21f50 78 65 63 28 49 6e 74 50 74 72 20 64 62 2c 20 62  xec(IntPtr db, b
21f60 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c 20 49 6e  yte[] strSql, In
21f70 74 50 74 72 20 70 76 43 61 6c 6c 62 61 63 6b 2c  tPtr pvCallback,
21f80 20 49 6e 74 50 74 72 20 70 76 50 61 72 61 6d 2c   IntPtr pvParam,
21f90 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d   ref IntPtr errM
21fa0 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
21fb0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21fc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21fd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21fe0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21ff0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22000 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22010 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22020 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22030 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22040 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22050 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
22060 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d  ite3_release_mem
22070 6f 72 79 28 69 6e 74 20 6e 42 79 74 65 73 29 3b  ory(int nBytes);
22080 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22090 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
220a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
220b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
220c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
220d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
220e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
220f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22100 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22110 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22120 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22130 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
22140 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28  _get_autocommit(
22150 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23  IntPtr db);....#
22160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22180 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22190 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
221a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
221b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
221c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
221d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
221e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
221f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22200 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22210 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
22220 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
22230 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 49 6e  _result_codes(In
22240 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 6e 6f  tPtr db, int ono
22250 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ff);....#if !PLA
22260 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22270 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22280 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22290 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
222a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
222b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
222c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
222d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
222e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
222f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22300 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
22310 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
22320 5f 65 72 72 63 6f 64 65 28 49 6e 74 50 74 72 20  _errcode(IntPtr 
22330 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  db);....#if !PLA
22340 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22350 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22360 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22370 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22380 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22390 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
223a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
223b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
223c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
223d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
223e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
223f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
22400 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
22410 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
22420 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22430 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22440 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22450 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22460 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22470 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22480 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22490 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
224a0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
224b0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
224c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
224d0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
224e0 5f 65 72 72 73 74 72 28 53 51 4c 69 74 65 45 72  _errstr(SQLiteEr
224f0 72 6f 72 43 6f 64 65 20 72 63 29 3b 20 2f 2a 20  rorCode rc); /* 
22500 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d 0a 20 20  3.7.15+ */....  
22510 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c 69 74    // Since sqlit
22520 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65 73 20 61  e3_log() takes a
22530 20 76 61 72 69 61 62 6c 65 20 61 72 67 75 6d 65   variable argume
22540 6e 74 20 6c 69 73 74 2c 20 77 65 20 68 61 76 65  nt list, we have
22550 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 64 65 63   to overload dec
22560 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20 20 20 2f  larations..    /
22570 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62  / for all possib
22580 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f 72 20 6e  le calls.  For n
22590 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e 6c 79 20  ow, we are only 
225a0 65 78 70 6f 73 69 6e 67 20 61 20 73 69 6e 67 6c  exposing a singl
225b0 65 20 73 74 72 69 6e 67 2c 20 61 6e 64 0d 0a 20  e string, and.. 
225c0 20 20 20 2f 2f 20 64 65 70 65 6e 64 20 6f 6e 20     // depend on 
225d0 74 68 65 20 63 61 6c 6c 65 72 20 74 6f 20 66 6f  the caller to fo
225e0 72 6d 61 74 20 74 68 65 20 73 74 72 69 6e 67 2e  rmat the string.
225f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22600 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22610 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22620 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22630 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22640 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22650 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22660 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22670 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22680 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22690 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
226a0 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
226b0 6c 6f 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  log(SQLiteErrorC
226c0 6f 64 65 20 69 45 72 72 43 6f 64 65 2c 20 62 79  ode iErrCode, by
226d0 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29 3b 0d 0a  te[] zFormat);..
226e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
226f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22700 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22710 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22720 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22730 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22740 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22750 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22760 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22770 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22780 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22790 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
227a0 64 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  de sqlite3_file_
227b0 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74 72 20 64  control(IntPtr d
227c0 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62 4e 61 6d  b, byte[] zDbNam
227d0 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
227e0 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23 69 66 20  r pArg);....#if 
227f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22800 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22820 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22830 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22840 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22850 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22860 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22870 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22880 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22890 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
228a0 50 74 72 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  Ptr sqlite3_back
228b0 75 70 5f 69 6e 69 74 28 49 6e 74 50 74 72 20 64  up_init(IntPtr d
228c0 65 73 74 44 62 2c 20 62 79 74 65 5b 5d 20 7a 44  estDb, byte[] zD
228d0 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50 74 72 20  estName, IntPtr 
228e0 73 6f 75 72 63 65 44 62 2c 20 62 79 74 65 5b 5d  sourceDb, byte[]
228f0 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29 3b 0d 0a   zSourceName);..
22900 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22910 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22920 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22930 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22940 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22950 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22960 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22970 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22980 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22990 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
229a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
229b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
229c0 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  de sqlite3_backu
229d0 70 5f 73 74 65 70 28 49 6e 74 50 74 72 20 62 61  p_step(IntPtr ba
229e0 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 29  ckup, int nPage)
229f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22a00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22a10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22a20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22a30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22a40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22a50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22a60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22a70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22a80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22a90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22aa0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
22ab0 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61 69 6e 69  3_backup_remaini
22ac0 6e 67 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70  ng(IntPtr backup
22ad0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22ae0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22af0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22b00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22b10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22b20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22b30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22b40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22b50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22b60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22b70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22b80 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
22b90 65 33 5f 62 61 63 6b 75 70 5f 70 61 67 65 63 6f  e3_backup_pageco
22ba0 75 6e 74 28 49 6e 74 50 74 72 20 62 61 63 6b 75  unt(IntPtr backu
22bb0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
22bc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22bd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22be0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22bf0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22c00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22c10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22c20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22c30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22c40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22c50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22c60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
22c70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
22c80 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e 74 50 74  blob_close(IntPt
22c90 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20  r blob);....#if 
22ca0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22cb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22cc0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22cd0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22ce0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22cf0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22d00 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22d10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22d20 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22d30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22d40 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22d50 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79   sqlite3_blob_by
22d60 74 65 73 28 49 6e 74 50 74 72 20 62 6c 6f 62 29  tes(IntPtr blob)
22d70 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22d80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22d90 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22da0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22db0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22dc0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22dd0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22de0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22df0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22e00 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22e10 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22e20 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
22e30 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
22e40 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74 72 20 64  ob_open(IntPtr d
22e50 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
22e60 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
22e70 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
22e80 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c 20 69 6e  , long rowId, in
22e90 74 20 66 6c 61 67 73 2c 20 72 65 66 20 49 6e 74  t flags, ref Int
22ea0 50 74 72 20 70 74 72 42 6c 6f 62 29 3b 0d 0a 0d  Ptr ptrBlob);...
22eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22f10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22f30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22f40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22f50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22f60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
22f70 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
22f80 65 61 64 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c  ead(IntPtr blob,
22f90 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61   [MarshalAs(Unma
22fa0 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61  nagedType.LPArra
22fb0 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65  y)] byte[] buffe
22fc0 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e  r, int count, in
22fd0 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69  t offset);....#i
22fe0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22ff0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23000 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23010 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23020 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23030 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23040 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23050 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23060 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23070 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23080 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
23090 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
230a0 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72 65 6f 70  qlite3_blob_reop
230b0 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c 20  en(IntPtr blob, 
230c0 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a  long rowId);....
230d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
230e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
230f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23100 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23110 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23120 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23130 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23140 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23150 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23160 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23170 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23180 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
23190 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 77 72   sqlite3_blob_wr
231a0 69 74 65 28 49 6e 74 50 74 72 20 62 6c 6f 62 2c  ite(IntPtr blob,
231b0 20 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61   [MarshalAs(Unma
231c0 6e 61 67 65 64 54 79 70 65 2e 4c 50 41 72 72 61  nagedType.LPArra
231d0 79 29 5d 20 62 79 74 65 5b 5d 20 62 75 66 66 65  y)] byte[] buffe
231e0 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 20 69 6e  r, int count, in
231f0 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 23 69  t offset);....#i
23200 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23210 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23220 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23230 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23240 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23250 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23260 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23270 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23280 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23290 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
232a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
232b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
232c0 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
232d0 74 61 62 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tab(IntPtr db, I
232e0 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d 0a 0d 0a  ntPtr zSQL);....
232f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23300 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23310 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23320 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23330 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23340 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23350 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23360 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23370 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23380 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23390 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
233a0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
233b0 6d 70 72 69 6e 74 66 28 49 6e 74 50 74 72 20 66  mprintf(IntPtr f
233c0 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c 69 73 74  ormat, __arglist
233d0 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  );..    #endregi
233e0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c  on....    // SQL
233f0 69 74 65 20 41 50 49 20 63 61 6c 6c 73 20 74 68  ite API calls th
23400 61 74 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  at are provided 
23410 62 79 20 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20  by "well-known" 
23420 65 78 74 65 6e 73 69 6f 6e 73 20 74 68 61 74 20  extensions that 
23430 6d 61 79 20 62 65 20 73 74 61 74 69 63 61 6c 6c  may be staticall
23440 79 0d 0a 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64  y..    // linked
23450 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
23460 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69 62   core native lib
23470 72 61 72 79 20 63 75 72 72 65 6e 74 6c 79 20 69  rary currently i
23480 6e 20 75 73 65 2e 0d 0a 20 20 20 20 23 72 65 67  n use...    #reg
23490 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 20 73 71  ion extension sq
234a0 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a  lite api calls..
234b0 20 20 20 20 23 72 65 67 69 6f 6e 20 76 69 72 74      #region virt
234c0 75 61 6c 20 74 61 62 6c 65 0d 0a 23 69 66 20 49  ual table..#if I
234d0 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
234e0 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
234f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23500 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23510 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23520 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23530 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23540 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23550 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23560 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23570 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23580 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23590 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
235a0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
235b0 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49  posable_module(I
235c0 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
235d0 20 6e 61 6d 65 2c 20 72 65 66 20 73 71 6c 69 74   name, ref sqlit
235e0 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  e3_module module
235f0 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  , IntPtr pClient
23600 44 61 74 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f  Data, xDestroyMo
23610 64 75 6c 65 20 78 44 65 73 74 72 6f 79 29 3b 0d  dule xDestroy);.
23620 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23630 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23640 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23650 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23660 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23670 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23680 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23690 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
236a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
236b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
236c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
236d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
236e0 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28  _dispose_module(
236f0 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b  IntPtr pModule);
23700 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65  ..#endif..    #e
23710 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
23720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
23770 20 20 20 23 72 65 67 69 6f 6e 20 73 65 73 73 69     #region sessi
23780 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 0d 0a 23 69  on extension..#i
23790 66 20 49 4e 54 45 52 4f 50 5f 53 45 53 53 49 4f  f INTEROP_SESSIO
237a0 4e 5f 45 58 54 45 4e 53 49 4f 4e 0d 0a 23 69 66  N_EXTENSION..#if
237b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
237c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
237d0 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
237e0 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
237f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23800 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
23810 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
23820 61 74 65 20 69 6e 74 20 78 53 65 73 73 69 6f 6e  ate int xSession
23830 46 69 6c 74 65 72 28 49 6e 74 50 74 72 20 63 6f  Filter(IntPtr co
23840 6e 74 65 78 74 2c 20 49 6e 74 50 74 72 20 70 54  ntext, IntPtr pT
23850 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  blName);....#if 
23860 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23870 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23880 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
23890 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
238a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
238b0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
238c0 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
238d0 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  te SQLiteChangeS
238e0 65 74 43 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74  etConflictResult
238f0 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63   xSessionConflic
23900 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
23910 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  , SQLiteChangeSe
23920 74 43 6f 6e 66 6c 69 63 74 54 79 70 65 20 74 79  tConflictType ty
23930 70 65 2c 20 49 6e 74 50 74 72 20 69 74 65 72 61  pe, IntPtr itera
23940 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tor);....#if !PL
23950 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23960 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
23970 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
23980 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
23990 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
239a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
239b0 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
239c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
239d0 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 28 49 6e  xSessionInput(In
239e0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
239f0 74 50 74 72 20 70 44 61 74 61 2c 20 72 65 66 20  tPtr pData, ref 
23a00 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 23  int nData);....#
23a10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23a20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23a30 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
23a40 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
23a50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23a60 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
23a70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
23a80 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
23a90 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 4f 75  rCode xSessionOu
23aa0 74 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74  tput(IntPtr cont
23ab0 65 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74  ext, IntPtr pDat
23ac0 61 2c 20 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a  a, int nData);..
23ad0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
23ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b20 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
23b30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23b40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23b50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23b60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23b70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23b80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23b90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23ba0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23bb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23bc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23bd0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
23be0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
23bf0 73 69 6f 6e 5f 63 72 65 61 74 65 28 49 6e 74 50  sion_create(IntP
23c00 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
23c10 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72  Name, ref IntPtr
23c20 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69   session);....#i
23c30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23c40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23c50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23c60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23c70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23c80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23c90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23ca0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23cb0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23cc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23cd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
23ce0 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73 73 69  oid sqlite3sessi
23cf0 6f 6e 5f 64 65 6c 65 74 65 28 49 6e 74 50 74 72  on_delete(IntPtr
23d00 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69   session);....#i
23d10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23d20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23d30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23d40 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23d50 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23d60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23d70 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23d80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23d90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23da0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23db0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
23dc0 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  nt sqlite3sessio
23dd0 6e 5f 65 6e 61 62 6c 65 28 49 6e 74 50 74 72 20  n_enable(IntPtr 
23de0 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20 65 6e 61  session, int ena
23df0 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ble);....#if !PL
23e00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23e10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23e20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23e30 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23e40 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23e50 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23e60 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23e70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23e80 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23e90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23ea0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
23eb0 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69 6e 64  lite3session_ind
23ec0 69 72 65 63 74 28 49 6e 74 50 74 72 20 73 65 73  irect(IntPtr ses
23ed0 73 69 6f 6e 2c 20 69 6e 74 20 69 6e 64 69 72 65  sion, int indire
23ee0 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ct);....#if !PLA
23ef0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23f00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23f10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23f20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
23f30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23f40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23f50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23f60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23f70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23f80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23f90 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23fa0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
23fb0 73 65 73 73 69 6f 6e 5f 61 74 74 61 63 68 28 49  session_attach(I
23fc0 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 62  ntPtr session, b
23fd0 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 29 3b 0d  yte[] tblName);.
23fe0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24000 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24010 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24030 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24040 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24050 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24090 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
240a0 73 65 73 73 69 6f 6e 5f 74 61 62 6c 65 5f 66 69  session_table_fi
240b0 6c 74 65 72 28 49 6e 74 50 74 72 20 73 65 73 73  lter(IntPtr sess
240c0 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c  ion, xSessionFil
240d0 74 65 72 20 78 46 69 6c 74 65 72 2c 20 49 6e 74  ter xFilter, Int
240e0 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
240f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24100 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24110 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24120 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24130 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24140 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24150 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24160 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24170 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
24180 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24190 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
241a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
241b0 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
241c0 5f 63 68 61 6e 67 65 73 65 74 28 49 6e 74 50 74  _changeset(IntPt
241d0 72 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20 69  r session, ref i
241e0 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 72  nt nChangeSet, r
241f0 65 66 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67  ef IntPtr pChang
24200 65 53 65 74 29 3b 0a 0d 0a 23 69 66 20 21 50 4c  eSet);...#if !PL
24210 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24220 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24230 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24240 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24250 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24260 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24270 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24290 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
242a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
242b0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
242c0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
242d0 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28 49 6e  3session_diff(In
242e0 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 62 79  tPtr session, by
242f0 74 65 5b 5d 20 66 72 6f 6d 44 62 4e 61 6d 65 2c  te[] fromDbName,
24300 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c   byte[] tblName,
24310 20 72 65 66 20 49 6e 74 50 74 72 20 65 72 72 4d   ref IntPtr errM
24320 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  sg);....#if !PLA
24330 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24340 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24350 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24360 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24370 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24380 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24390 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
243a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
243b0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
243c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
243d0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
243e0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
243f0 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74  session_patchset
24400 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
24410 20 72 65 66 20 69 6e 74 20 6e 50 61 74 63 68 53   ref int nPatchS
24420 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  et, ref IntPtr p
24430 50 61 74 63 68 53 65 74 29 3b 0d 0a 0d 0a 23 69  PatchSet);....#i
24440 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24450 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24470 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24480 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
244a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
244b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
244c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
244d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
244e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
244f0 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  nt sqlite3sessio
24500 6e 5f 69 73 65 6d 70 74 79 28 49 6e 74 50 74 72  n_isempty(IntPtr
24510 20 73 65 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69   session);....#i
24520 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24530 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24550 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24560 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24570 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24580 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24590 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
245a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
245b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
245c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
245d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
245e0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
245f0 73 74 61 72 74 28 72 65 66 20 49 6e 74 50 74 72  start(ref IntPtr
24600 20 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 6e   iterator, int n
24610 43 68 61 6e 67 65 53 65 74 2c 20 49 6e 74 50 74  ChangeSet, IntPt
24620 72 20 70 43 68 61 6e 67 65 53 65 74 29 3b 0d 0a  r pChangeSet);..
24630 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24640 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24650 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24660 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24670 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24680 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24690 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
246a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
246b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
246c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
246d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
246e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
246f0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
24700 73 65 74 5f 6e 65 78 74 28 49 6e 74 50 74 72 20  set_next(IntPtr 
24710 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69  iterator);....#i
24720 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24730 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24740 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24750 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24760 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24780 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24790 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
247a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
247b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
247c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
247d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
247e0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
247f0 6f 70 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  op(IntPtr iterat
24800 6f 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  or, ref IntPtr p
24810 54 62 6c 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74  TblName, ref int
24820 20 6e 43 6f 6c 75 6d 6e 73 2c 20 72 65 66 20 53   nColumns, ref S
24830 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41  QLiteAuthorizerA
24840 63 74 69 6f 6e 43 6f 64 65 20 6f 70 2c 20 72 65  ctionCode op, re
24850 66 20 69 6e 74 20 62 49 6e 64 69 72 65 63 74 29  f int bIndirect)
24860 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24870 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24880 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24890 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
248a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
248b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
248c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
248d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
248e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
248f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24900 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24910 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
24920 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
24930 6e 67 65 73 65 74 5f 70 6b 28 49 6e 74 50 74 72  ngeset_pk(IntPtr
24940 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49   iterator, ref I
24950 6e 74 50 74 72 20 70 50 72 69 6d 61 72 79 4b 65  ntPtr pPrimaryKe
24960 79 73 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c  ys, ref int nCol
24970 75 6d 6e 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  umns);....#if !P
24980 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24990 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
249a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
249b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
249c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
249d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
249e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
249f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24a00 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
24a10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24a20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24a30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24a40 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 6c 64 28  e3changeset_old(
24a50 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
24a60 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78   int columnIndex
24a70 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 61  , ref IntPtr pVa
24a80 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  lue);....#if !PL
24a90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24aa0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24ab0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24ac0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24ad0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24ae0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24af0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24b00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24b10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24b20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24b30 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24b40 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
24b50 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 77 28 49  3changeset_new(I
24b60 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
24b70 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c  int columnIndex,
24b80 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c   ref IntPtr pVal
24b90 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ue);....#if !PLA
24ba0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24bb0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24bc0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24bd0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
24be0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24bf0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24c00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24c10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24c20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
24c30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24c40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
24c50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
24c60 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 66 6c 69  changeset_confli
24c70 63 74 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  ct(IntPtr iterat
24c80 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e  or, int columnIn
24c90 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20  dex, ref IntPtr 
24ca0 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20  pValue);....#if 
24cb0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24cc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24cd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24ce0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24cf0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24d00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24d10 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24d20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24d30 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24d40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24d50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24d60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24d70 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66 6b  ite3changeset_fk
24d80 5f 63 6f 6e 66 6c 69 63 74 73 28 49 6e 74 50 74  _conflicts(IntPt
24d90 72 20 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20  r iterator, ref 
24da0 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 29 3b 0d  int conflicts);.
24db0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24dc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24dd0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24de0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24df0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24e00 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24e10 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24e20 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24e30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24e40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24e50 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24e60 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24e70 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
24e80 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28 49 6e  eset_finalize(In
24e90 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d  tPtr iterator);.
24ea0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24eb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24ec0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24ed0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24ee0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24ef0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24f00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24f10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24f20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24f30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24f40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24f50 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24f60 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
24f70 65 73 65 74 5f 69 6e 76 65 72 74 28 69 6e 74 20  eset_invert(int 
24f80 6e 49 6e 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c  nIn, IntPtr pIn,
24f90 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72   ref int nOut, r
24fa0 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  ef IntPtr pOut);
24fb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24fd0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24fe0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24ff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25000 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
25010 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25020 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
25030 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25040 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
25050 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25060 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
25070 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
25080 67 65 73 65 74 5f 63 6f 6e 63 61 74 28 69 6e 74  geset_concat(int
25090 20 6e 41 2c 20 49 6e 74 50 74 72 20 70 41 2c 20   nA, IntPtr pA, 
250a0 69 6e 74 20 6e 42 2c 20 49 6e 74 50 74 72 20 70  int nB, IntPtr p
250b0 42 2c 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c  B, ref int nOut,
250c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74   ref IntPtr pOut
250d0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
250e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
250f0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25100 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25120 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25130 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25140 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25150 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25160 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25170 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25180 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
25190 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
251a0 61 6e 67 65 67 72 6f 75 70 5f 6e 65 77 28 72 65  angegroup_new(re
251b0 66 20 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  f IntPtr changeG
251c0 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  roup);....#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 67 72 6f 75 70 5f 61 64  e3changegroup_ad
252a0 64 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47  d(IntPtr changeG
252b0 72 6f 75 70 2c 20 69 6e 74 20 6e 44 61 74 61 2c  roup, int nData,
252c0 20 49 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d   IntPtr pData);.
252d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
252e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
252f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25300 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25310 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25320 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25330 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25340 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
25360 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25370 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25380 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
25390 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
253a0 65 67 72 6f 75 70 5f 6f 75 74 70 75 74 28 49 6e  egroup_output(In
253b0 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70  tPtr changeGroup
253c0 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 2c  , ref int nData,
253d0 20 72 65 66 20 49 6e 74 50 74 72 20 70 44 61 74   ref IntPtr pDat
253e0 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  a);....#if !PLAT
253f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25400 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25410 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25420 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25430 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25440 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25450 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25470 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25480 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25490 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
254a0 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
254b0 64 65 6c 65 74 65 28 49 6e 74 50 74 72 20 63 68  delete(IntPtr ch
254c0 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23  angeGroup);....#
254d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
254e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
254f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25500 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
25510 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25520 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25530 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25540 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25550 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25560 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25570 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25580 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25590 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
255a0 5f 61 70 70 6c 79 28 49 6e 74 50 74 72 20 64 62  _apply(IntPtr db
255b0 2c 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74  , int nChangeSet
255c0 2c 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65  , IntPtr pChange
255d0 53 65 74 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c  Set, xSessionFil
255e0 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65  ter xFilter, xSe
255f0 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43  ssionConflict xC
25600 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20  onflict, IntPtr 
25610 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
25620 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25630 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25640 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25650 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
25660 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
25670 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
25680 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
25690 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
256a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
256b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
256c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
256d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
256e0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61  lite3changeset_a
256f0 70 70 6c 79 5f 73 74 72 6d 28 49 6e 74 50 74 72  pply_strm(IntPtr
25700 20 64 62 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70   db, xSessionInp
25710 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74  ut xInput, IntPt
25720 72 20 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e 46  r pIn, xSessionF
25730 69 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78  ilter xFilter, x
25740 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20  SessionConflict 
25750 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74  xConflict, IntPt
25760 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23  r context);....#
25770 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25780 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25790 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
257a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
257b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
257c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
257d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
257e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
257f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25800 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25810 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25820 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25830 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
25840 5f 63 6f 6e 63 61 74 5f 73 74 72 6d 28 78 53 65  _concat_strm(xSe
25850 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75  ssionInput xInpu
25860 74 41 2c 20 49 6e 74 50 74 72 20 70 49 6e 41 2c  tA, IntPtr pInA,
25870 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78   xSessionInput x
25880 49 6e 70 75 74 42 2c 20 49 6e 74 50 74 72 20 70  InputB, IntPtr p
25890 49 6e 42 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74  InB, xSessionOut
258a0 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74  put xOutput, Int
258b0 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
258c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
258d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
258e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
258f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25900 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25910 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25920 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25930 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25940 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25950 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25960 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25970 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25980 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
25990 69 6e 76 65 72 74 5f 73 74 72 6d 28 78 53 65 73  invert_strm(xSes
259a0 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74  sionInput xInput
259b0 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53  , IntPtr pIn, xS
259c0 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75  essionOutput xOu
259d0 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75  tput, IntPtr pOu
259e0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
259f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25a00 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25a10 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25a20 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25a30 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25a40 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25a50 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25a60 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25a70 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25a80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25a90 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
25aa0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
25ab0 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 5f 73  hangeset_start_s
25ac0 74 72 6d 28 72 65 66 20 49 6e 74 50 74 72 20 69  trm(ref IntPtr i
25ad0 74 65 72 61 74 6f 72 2c 20 78 53 65 73 73 69 6f  terator, xSessio
25ae0 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
25af0 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23  ntPtr pIn);....#
25b00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25b10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25b20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25b30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
25b40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25b50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25b60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25b70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25b80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25b90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25ba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25bb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25bc0 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63  sqlite3session_c
25bd0 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 28 49 6e  hangeset_strm(In
25be0 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78 53  tPtr session, xS
25bf0 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75  essionOutput xOu
25c00 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75  tput, IntPtr pOu
25c10 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
25c20 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25c30 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25c40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25c50 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25c60 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25c70 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25c80 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25c90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25ca0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25cb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25cc0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
25cd0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
25ce0 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 5f  ession_patchset_
25cf0 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65 73 73  strm(IntPtr sess
25d00 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74  ion, xSessionOut
25d10 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74  put xOutput, Int
25d20 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69  Ptr pOut);....#i
25d30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25d40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25d50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25d60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
25d70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
25d80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
25d90 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
25da0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25db0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
25dc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25dd0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
25de0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
25df0 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75  qlite3changegrou
25e00 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e 74 50 74  p_add_strm(IntPt
25e10 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 78  r changeGroup, x
25e20 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
25e30 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 29  put, IntPtr pIn)
25e40 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25e50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25e60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25e70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25e80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25e90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25ea0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25eb0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25ec0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25ed0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25ee0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25ef0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25f00 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
25f10 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74 5f  ngegroup_output_
25f20 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61 6e  strm(IntPtr chan
25f30 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69 6f  geGroup, xSessio
25f40 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c  nOutput xOutput,
25f50 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
25f60 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
25f70 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23 65 6e 64  region..    #end
25f80 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
25f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
25fe0 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65 20   #region sqlite 
25ff0 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c 6c  interop api call
26000 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  s (.NET Compact 
26010 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29 0d  Framework only).
26020 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
26030 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26  MPACTFRAMEWORK &
26040 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  & !SQLITE_STANDA
26050 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RD..    [DllImpo
26060 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26070 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26080 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
26090 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
260a0 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65 72  sert_rowid_inter
260b0 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72 65  op(IntPtr db, re
260c0 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d 0a  f long rowId);..
260d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
260e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
260f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26100 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
26110 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
26120 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20 6c  ed_interop(ref l
26130 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a 20  ong bytes);.... 
26140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26150 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
26160 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26170 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
26180 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
26190 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e 74  ater_interop(int
261a0 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66 20   resetFlag, ref 
261b0 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
261c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
261d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
261e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
261f0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
26200 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
26210 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  bind_double_inte
26220 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
26230 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
26240 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
26250 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26260 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
26270 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26280 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
26290 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
262a0 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
262b0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
262c0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
262d0 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d   long value);...
262e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
262f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
26300 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
26310 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e 74  3_bind_int64_int
26320 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e 74  erop")]..    int
26330 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26340 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
26350 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
26360 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  _uint64_interop(
26370 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
26380 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f 6e   index, ref ulon
26390 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
263a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
263b0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
263c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
263d0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
263e0 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 5f  3_column_double_
263f0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
26400 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
26410 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
26420 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
26430 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26440 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
26450 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
26460 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  id sqlite3_colum
26470 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  n_int64_interop(
26480 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
26490 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67   index, ref long
264a0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
264b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
264c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
264d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
264e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
264f0 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
26500 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20  terop(IntPtr p, 
26510 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65  ref double value
26520 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
26530 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26540 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
26550 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
26560 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
26570 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
26580 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49 6e 74  ntPtr p, ref Int
26590 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
265a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
265b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
265c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
265d0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
265e0 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65  e3_result_double
265f0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
26600 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f 75  context, ref dou
26610 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ble value);.... 
26620 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26630 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
26640 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26650 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
26660 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
26670 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
26680 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e 74  context, ref Int
26690 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  64 value);....  
266a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
266b0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
266c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
266d0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
266e0 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
266f0 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e  osable_module_in
26700 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
26710 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
26720 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72 20 70  r name, IntPtr p
26730 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56 65 72  Module, int iVer
26740 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20 78 43  sion, xCreate xC
26750 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
26760 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63  xConnect xConnec
26770 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20 78 42  t, xBestIndex xB
26780 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73 63 6f  estIndex, xDisco
26790 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65 63  nnect xDisconnec
267a0 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73  t,..        xDes
267b0 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c 20 78  troy xDestroy, x
267c0 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43 6c 6f  Open xOpen, xClo
267d0 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69 6c 74  se xClose, xFilt
267e0 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20 20 20  er xFilter,..   
267f0 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65 78 74       xNext xNext
26800 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78 43 6f  , xEof xEof, xCo
26810 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20 78 52  lumn xColumn, xR
26820 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78 55 70  owId xRowId, xUp
26830 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d 0a 20  date xUpdate,.. 
26840 20 20 20 20 20 20 20 78 42 65 67 69 6e 20 78 42         xBegin xB
26850 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53 79 6e  egin, xSync xSyn
26860 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d  c, xCommit xComm
26870 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52  it, xRollback xR
26880 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
26890 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20    xFindFunction 
268a0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 78  xFindFunction, x
268b0 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 2c 20  Rename xRename, 
268c0 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65  xSavepoint xSave
268d0 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20  point,..        
268e0 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
268f0 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  e, xRollbackTo x
26900 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50  RollbackTo, IntP
26910 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d  tr pClientData,.
26920 0a 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f  .        xDestro
26930 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72 6f 79  yModule xDestroy
26940 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Module);..#endif
26950 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46 4f 52  ..    // PLATFOR
26960 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26970 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f 53 54  RK && !SQLITE_ST
26980 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65 6e 64  ANDARD..    #end
26990 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
269a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
269f0 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
26a00 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66 20 49  Delegates..#if I
26a10 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
26a20 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41 54 46  ABLE..#if !PLATF
26a30 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26a40 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
26a50 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
26a60 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
26a70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26a80 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
26a90 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
26aa0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
26ab0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  te(..        Int
26ac0 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
26ad0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
26ae0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
26af0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
26b00 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
26b10 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
26b20 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  b,..        ref 
26b30 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
26b40 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
26b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
26ba0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26bb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26bc0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
26bd0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
26be0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26bf0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
26c00 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
26c10 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26c20 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
26c30 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
26c40 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
26c50 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69  pAux,..        i
26c60 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
26c70 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
26c80 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
26c90 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
26ca0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
26cb0 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  rror..    );....
26cc0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26d10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26d20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26d30 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26d40 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26d50 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26d60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26d70 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
26d80 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
26d90 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64  rorCode xBestInd
26da0 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ex(..        Int
26db0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
26dc0 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
26dd0 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  x..    );....   
26de0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26e30 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26e40 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26e50 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
26e60 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
26e70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26e80 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
26e90 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
26ea0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
26eb0 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
26ec0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
26ed0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d  r pVtab..    );.
26ee0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
26ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f30 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
26f40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26f50 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
26f60 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
26f70 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
26f80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26f90 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
26fa0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
26fb0 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
26fc0 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  roy(..        In
26fd0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
26fe0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27030 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
27040 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27050 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
27060 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
27070 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
27080 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27090 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
270a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
270b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
270c0 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  pen(..        In
270d0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
270e0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
270f0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d  pCursor..    );.
27100 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27120 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
27160 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27170 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
27180 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
27190 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
271a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
271b0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
271c0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
271d0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
271e0 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
271f0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
27200 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
27260 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27270 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
27280 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
27290 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
272a0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
272b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
272c0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
272d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
272e0 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
272f0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
27300 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78  .        int idx
27310 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Num,..        In
27320 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20  tPtr idxStr,..  
27330 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
27340 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
27350 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  argv..    );....
27360 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
273b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
273c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
273d0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
273e0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
273f0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27400 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27410 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27420 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
27430 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a  rorCode xNext(..
27440 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27450 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
27460 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274b0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
274c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
274d0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
274e0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
274f0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
27500 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27510 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
27520 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 45   delegate int xE
27530 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  of(..        Int
27540 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
27550 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f  ////////////////
27580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
275b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
275c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
275d0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
275e0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
275f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27600 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
27610 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
27620 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
27630 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
27640 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
27650 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
27660 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
27670 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
27680 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
276e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
276f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27700 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
27710 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
27720 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27730 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
27740 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
27750 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
27760 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
27770 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27780 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c  ,..        ref l
27790 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29  ong rowId..    )
277a0 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277f0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
27800 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
27810 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
27820 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
27830 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
27840 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27850 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
27860 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
27870 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
27880 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  date(..        I
27890 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
278a0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
278b0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
278c0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72  argv,..        r
278d0 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
278e0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
278f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27930 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
27940 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27950 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27960 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
27970 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
27980 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27990 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
279a0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
279b0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
279c0 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
279d0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
279e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      );....    //
279f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27a40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27a50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27a60 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
27a70 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
27a80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
27a90 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
27aa0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
27ab0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
27ac0 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
27ad0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
27ae0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
27b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
27b40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
27b50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
27b60 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74   [UnmanagedFunct
27b70 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69  ionPointer(Calli
27b80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
27b90 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  cl)]..#endif..  
27ba0 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74    public delegat
27bb0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
27bc0 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
27bd0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
27be0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
27bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 2f 2f 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 0d 0a 0d 0a 23  ///////////....#
27c40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27c50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27c60 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27c70 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27c80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27c90 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27ca0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
27cb0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
27cc0 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
27cd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27ce0 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
27cf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27d40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27d50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27d60 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27d70 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27d80 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27d90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27da0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
27db0 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46 69 6e  elegate int xFin
27dc0 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
27dd0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
27de0 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6e  ,..        int n
27df0 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  Arg,..        In
27e00 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
27e10 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
27e20 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
27e30 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
27e40 6e 74 50 74 72 20 70 55 73 65 72 44 61 74 61 0d  ntPtr pUserData.
27e50 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
27e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
27eb0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27ec0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27ed0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
27ee0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
27ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
27f00 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
27f10 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
27f20 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
27f30 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
27f40 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
27f50 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  b,..        IntP
27f60 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29 3b 0d  tr zNew..    );.
27f70 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
27f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fc0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
27fd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27fe0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
27ff0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
28000 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
28010 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28020 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
28030 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
28040 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
28050 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
28060 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
28070 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
28080 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d  point..    );...
28090 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
280a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
280f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28100 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
28110 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
28120 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
28130 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
28140 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
28150 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
28160 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
28170 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  e(..        IntP
28180 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
28190 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
281a0 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  t..    );....   
281b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28200 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28220 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
28230 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
28240 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28250 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
28260 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
28270 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
28280 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
28290 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
282a0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
282b0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
282c0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
28320 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28330 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28340 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
28350 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
28360 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
28370 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
28380 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
28390 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
283a0 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70  yModule(IntPtr p
283b0 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 23 65  ClientData);..#e
283c0 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65  ndif..    #endre
283d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28420 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
28430 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 53 74  region Native St
28440 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20 49 4e  ructures..#if IN
28450 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
28460 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  BLE..    [Struct
28470 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
28480 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
28490 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
284a0 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  uct sqlite3_modu
284b0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
284c0 20 20 20 2f 2a 20 20 20 30 20 2a 2f 20 70 75 62     /*   0 */ pub
284d0 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  lic int iVersion
284e0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 20  ;..        /*   
284f0 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 72 65  8 */ public xCre
28500 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a 20 20  ate xCreate;..  
28510 20 20 20 20 20 20 2f 2a 20 20 31 36 20 2a 2f 20        /*  16 */ 
28520 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63 74 20  public xConnect 
28530 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20  xConnect;..     
28540 20 20 20 2f 2a 20 20 32 34 20 2a 2f 20 70 75 62     /*  24 */ pub
28550 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78 20 78  lic xBestIndex x
28560 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20 20 20  BestIndex;..    
28570 20 20 20 20 2f 2a 20 20 33 32 20 2a 2f 20 70 75      /*  32 */ pu
28580 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65 63 74  blic xDisconnect
28590 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d 0a 20   xDisconnect;.. 
285a0 20 20 20 20 20 20 20 2f 2a 20 20 34 30 20 2a 2f         /*  40 */
285b0 20 70 75 62 6c 69 63 20 78 44 65 73 74 72 6f 79   public xDestroy
285c0 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20 20 20   xDestroy;..    
285d0 20 20 20 20 2f 2a 20 20 34 38 20 2a 2f 20 70 75      /*  48 */ pu
285e0 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70 65 6e  blic xOpen xOpen
285f0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 35  ;..        /*  5
28600 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6c 6f  6 */ public xClo
28610 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20 20 20  se xClose;..    
28620 20 20 20 20 2f 2a 20 20 36 34 20 2a 2f 20 70 75      /*  64 */ pu
28630 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78 46 69  blic xFilter xFi
28640 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lter;..        /
28650 2a 20 20 37 32 20 2a 2f 20 70 75 62 6c 69 63 20  *  72 */ public 
28660 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a 20 20  xNext xNext;..  
28670 20 20 20 20 20 20 2f 2a 20 20 38 30 20 2a 2f 20        /*  80 */ 
28680 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45 6f 66  public xEof xEof
28690 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38  ;..        /*  8
286a0 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f 6c  8 */ public xCol
286b0 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  umn xColumn;..  
286c0 20 20 20 20 20 20 2f 2a 20 20 39 36 20 2a 2f 20        /*  96 */ 
286d0 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20 78 52  public xRowId xR
286e0 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f  owId;..        /
286f0 2a 20 31 30 34 20 2a 2f 20 70 75 62 6c 69 63 20  * 104 */ public 
28700 78 55 70 64 61 74 65 20 78 55 70 64 61 74 65 3b  xUpdate xUpdate;
28710 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 31 32  ..        /* 112
28720 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65 67 69   */ public xBegi
28730 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20 20 20  n xBegin;..     
28740 20 20 20 2f 2a 20 31 32 30 20 2a 2f 20 70 75 62     /* 120 */ pub
28750 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e 63 3b  lic xSync xSync;
28760 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 32 38  ..        /* 128
28770 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f 6d 6d   */ public xComm
28780 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20  it xCommit;..   
28790 20 20 20 20 20 2f 2a 20 31 33 36 20 2a 2f 20 70       /* 136 */ p
287a0 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63 6b 20  ublic xRollback 
287b0 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20  xRollback;..    
287c0 20 20 20 20 2f 2a 20 31 34 34 20 2a 2f 20 70 75      /* 144 */ pu
287d0 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63 74 69  blic xFindFuncti
287e0 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  on xFindFunction
287f0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 35  ;..        /* 15
28800 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 65 6e  2 */ public xRen
28810 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a 20 20  ame xRename;..  
28820 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d 65 74        /* The met
28830 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69  hods above are i
28840 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74  n version 1 of t
28850 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  he sqlite3_modul
28860 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20 6f 62  e..         * ob
28870 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62 65 6c  ject.  Those bel
28880 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
28890 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74 65 72  on 2 and greater
288a0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  . */..        /*
288b0 20 31 36 30 20 2a 2f 20 70 75 62 6c 69 63 20 78   160 */ public x
288c0 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76 65 70  Savepoint xSavep
288d0 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f  oint;..        /
288e0 2a 20 31 36 38 20 2a 2f 20 70 75 62 6c 69 63 20  * 168 */ public 
288f0 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65 61 73  xRelease xReleas
28900 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  e;..        /* 1
28910 37 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f  76 */ public xRo
28920 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62 61  llbackTo xRollba
28930 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ckTo;..    }....
28940 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28990 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
289a0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
289b0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
289c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
289d0 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 0d 0a  t sqlite3_vtab..
289e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
289f0 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 49  *  0 */ public I
28a00 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b 0d 0a  ntPtr pModule;..
28a10 20 20 20 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f          /*  8 */
28a20 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52 65 66   public int nRef
28a30 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52 20 55  ; /* NO LONGER U
28a40 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
28a50 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20  /* 16 */ public 
28a60 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67 3b 0d  IntPtr zErrMsg;.
28a70 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28ad0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
28ae0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
28af0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
28b00 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
28b10 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d  te3_vtab_cursor.
28b20 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
28b30 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 49  /* 0 */ public I
28b40 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a 20 20  ntPtr pVTab;..  
28b50 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
28b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ba0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53  //////....    [S
28bb0 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f  tructLayout(Layo
28bc0 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61  utKind.Sequentia
28bd0 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
28be0 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  l struct sqlite3
28bf0 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
28c00 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
28c10 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33    public sqlite3
28c20 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
28c30 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
28c40 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
28c50 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  raint constraint
28c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
28c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
28c80 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
28c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
28ca0 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20   (constraint != 
28cb0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
28cc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28cd0 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20        iColumn = 
28ce0 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75  constraint.iColu
28cf0 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn;..           
28d00 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73 74 72       op = constr
28d10 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20 20 20  aint.op;..      
28d20 20 20 20 20 20 20 20 20 20 20 75 73 61 62 6c 65            usable
28d30 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73   = constraint.us
28d40 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  able;..         
28d50 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66 66 73         iTermOffs
28d60 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  et = constraint.
28d70 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
28d80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
28d90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28da0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
28df0 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62       /* 0 */ pub
28e00 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
28e10 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a  ..        /* 4 *
28e20 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49  / public SQLiteI
28e30 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
28e40 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a   op;..        /*
28e50 20 35 20 2a 2f 20 70 75 62 6c 69 63 20 62 79 74   5 */ public byt
28e60 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20  e usable;..     
28e70 20 20 20 2f 2a 20 38 20 2a 2f 20 70 75 62 6c 69     /* 8 */ publi
28e80 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65  c int iTermOffse
28e90 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t;..    }....   
28ea0 20 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 2f 2f 2f  ////////////////
28ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28ef0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
28f00 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
28f10 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
28f20 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
28f30 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
28f40 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  erby..    {..   
28f50 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69       public sqli
28f60 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
28f70 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
28f80 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
28f90 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20  By orderBy..    
28fa0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
28fb0 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
28fc0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
28fd0 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65          if (orde
28fe0 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rBy != null)..  
28ff0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f               iCo
29010 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79 2e 69  lumn = orderBy.i
29020 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
29030 20 20 20 20 20 20 20 20 20 64 65 73 63 20 3d 20           desc = 
29040 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d 0a 20  orderBy.desc;.. 
29050 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29060 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29070 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
290c0 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75        /* 0 */ pu
290d0 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e  blic int iColumn
290e0 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62  ; /* Column numb
290f0 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  er */..        /
29100 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20 62 79  * 4 */ public by
29110 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72  te desc;   /* Tr
29120 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61  ue for DESC.  Fa
29130 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d  lse for ASC. */.
29140 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
29150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29190 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
291a0 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c   [StructLayout(L
291b0 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e  ayoutKind.Sequen
291c0 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  tial)]..    inte
291d0 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69  rnal struct sqli
291e0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
291f0 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20  aint_usage..    
29200 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
29210 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
29220 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
29230 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
29240 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
29250 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73 74 72  aintUsage constr
29260 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 20  aintUsage..     
29270 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
29280 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
29290 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
292a0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74         if (const
292b0 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 6e 75  raintUsage != nu
292c0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
292d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
292e0 20 20 20 20 61 72 67 76 49 6e 64 65 78 20 3d 20      argvIndex = 
292f0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e  constraintUsage.
29300 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20  argvIndex;..    
29310 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d 69 74              omit
29320 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61   = constraintUsa
29330 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20  ge.omit;..      
29340 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
29350 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
29360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
293b0 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67 76   public int argv
293c0 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e 30 2c  Index; /* if >0,
293d0 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70   constraint is p
293e0 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78  art of argv to x
293f0 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20  Filter */..     
29400 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f     public byte o
29410 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f 20 6e  mit;     /* Do n
29420 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66  ot code a test f
29430 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69  or this constrai
29440 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nt */..    }....
29450 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29470 2f 2f 2f 2f 2f 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 0d  ///////////////.
294a0 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
294b0 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
294c0 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
294d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
294e0 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
294f0 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  info..    {..   
29500 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a       /* Inputs *
29510 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 30  /..        /*  0
29520 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
29530 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a 20 4e  Constraint; /* N
29540 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
29550 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20   in aConstraint 
29560 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  */..        /*  
29570 38 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50  8 */ public IntP
29580 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74 3b 0d  tr aConstraint;.
29590 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 20 2a  .        /* 16 *
295a0 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 4f 72  / public int nOr
295b0 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e 75 6d  derBy;    /* Num
295c0 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
295d0 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d 0a 20  n aOrderBy */.. 
295e0 20 20 20 20 20 20 20 2f 2a 20 32 34 20 2a 2f 20         /* 24 */ 
295f0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 4f  public IntPtr aO
29600 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20 20 20  rderBy;..       
29610 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d 0a   /* Outputs */..
29620 20 20 20 20 20 20 20 20 2f 2a 20 33 32 20 2a 2f          /* 32 */
29630 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61   public IntPtr a
29640 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b  ConstraintUsage;
29650 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 30 20  ..        /* 40 
29660 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 64  */ public int id
29670 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20 20 20  xNum;           
29680 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  /* Number used t
29690 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69  o identify the i
296a0 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
296b0 20 2f 2a 20 34 38 20 2a 2f 20 70 75 62 6c 69 63   /* 48 */ public
296c0 20 73 74 72 69 6e 67 20 69 64 78 53 74 72 3b 20   string idxStr; 
296d0 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67         /* String
296e0 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69  , possibly obtai
296f0 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ned from sqlite3
29700 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20 20 20  _malloc */..    
29710 20 20 20 20 2f 2a 20 35 36 20 2a 2f 20 70 75 62      /* 56 */ pub
29720 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f 46 72  lic int needToFr
29730 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46 72 65  eeIdxStr; /* Fre
29740 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20 73  e idxStr using s
29750 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 66  qlite3_free() if
29760 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20   true */..      
29770 20 20 2f 2a 20 36 30 20 2a 2f 20 70 75 62 6c 69    /* 60 */ publi
29780 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e  c int orderByCon
29790 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75 65 20  sumed;  /* True 
297a0 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72  if output is alr
297b0 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d  eady ordered */.
297c0 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 34 20 2a  .        /* 64 *
297d0 2f 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20  / public double 
297e0 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 2f  estimatedCost; /
297f0 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  * Estimated cost
29800 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
29810 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
29820 20 2f 2a 20 37 32 20 2a 2f 20 70 75 62 6c 69 63   /* 72 */ public
29830 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65 64 52   long estimatedR
29840 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69 6d 61  ows;   /* Estima
29850 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  ted number of ro
29860 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f 0d 0a  ws returned */..
29870 20 20 20 20 20 20 20 20 2f 2a 20 38 30 20 2a 2f          /* 80 */
29880 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
29890 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c 61 67  dexFlags idxFlag
298a0 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20 53 51  s; /* Mask of SQ
298b0 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41 4e 5f  LITE_INDEX_SCAN_
298c0 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20 20 20  * flags */..    
298d0 20 20 20 20 2f 2a 20 38 38 20 2a 2f 20 70 75 62      /* 88 */ pub
298e0 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73 65 64  lic long colUsed
298f0 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 70  ;         /* Inp
29900 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f 6c 75  ut: Mask of colu
29910 6d 6e 73 20 75 73 65 64 20 62 79 20 73 74 61 74  mns used by stat
29920 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d  ement */..    }.
29930 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
29940 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20  dregion..  }..  
29950 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
29960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
299b0 0a 20 20 23 72 65 67 69 6f 6e 20 2e 4e 45 54 20  .  #region .NET 
299c0 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
299d0 6b 20 28 6f 6e 6c 79 29 20 43 72 69 74 69 63 61  k (only) Critica
299e0 6c 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 23  lHandle Class..#
299f0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
29a00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29a10 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
29a20 74 20 63 6c 61 73 73 20 43 72 69 74 69 63 61 6c  t class Critical
29a30 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70 6f 73  Handle : IDispos
29a40 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 70  able..  {..    p
29a50 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69 73 43  rivate bool _isC
29a60 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 6f 74  losed;..    prot
29a70 65 63 74 65 64 20 49 6e 74 50 74 72 20 68 61 6e  ected IntPtr han
29a80 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  dle;....    prot
29a90 65 63 74 65 64 20 43 72 69 74 69 63 61 6c 48 61  ected CriticalHa
29aa0 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e 76 61  ndle(IntPtr inva
29ab0 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 29 0d  lidHandleValue).
29ac0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61  .    {..      ha
29ad0 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64 48 61  ndle = invalidHa
29ae0 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ndleValue;..    
29af0 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20 66 61    _isClosed = fa
29b00 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  lse;..    }.... 
29b10 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61 6e 64     ~CriticalHand
29b20 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  le()..    {..   
29b30 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
29b40 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
29b50 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 6c   private void Cl
29b60 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  eanup()..    {..
29b70 20 20 20 20 20 20 69 66 20 28 21 49 73 43 6c 6f        if (!IsClo
29b80 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  sed)..      {.. 
29b90 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 73 43         this._isC
29ba0 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  losed = true;.. 
29bb0 20 20 20 20 20 20 20 69 66 20 28 21 49 73 49 6e         if (!IsIn
29bc0 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20 20  valid)..        
29bd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52 65 6c  {..          Rel
29be0 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 20  easeHandle();.. 
29bf0 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
29c00 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
29c10 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
29c20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
29c30 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
29c40 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b  d Close()..    {
29c50 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65 28  ..      Dispose(
29c60 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  true);..    }...
29c70 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
29c80 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
29c90 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
29ca0 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (true);..    }..
29cb0 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20  ..    protected 
29cc0 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
29cd0 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
29ce0 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ing)..    {..   
29cf0 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d 0a 20     Cleanup();.. 
29d00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
29d10 65 63 74 65 64 20 61 62 73 74 72 61 63 74 20 62  ected abstract b
29d20 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
29d30 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f 74  e();....    prot
29d40 65 63 74 65 64 20 76 6f 69 64 20 53 65 74 48 61  ected void SetHa
29d50 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61 6c 75  ndle(IntPtr valu
29d60 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
29d70 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b   handle = value;
29d80 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
29d90 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 48 61  ublic void SetHa
29da0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 0d  ndleAsInvalid().
29db0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 69  .    {..      _i
29dc0 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
29dd0 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65  .      GC.Suppre
29de0 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
29df0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
29e00 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 43 6c  public bool IsCl
29e10 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  osed..    {..   
29e20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
29e30 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a 20 20  _isClosed; }..  
29e40 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
29e50 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  c abstract bool 
29e60 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 7b  IsInvalid..    {
29e70 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a 20 20  ..      get;..  
29e80 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65 6e 64    }....  }..#end
29e90 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e  if..  #endregion
29ea0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
29eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
29f00 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  on SQLiteConnect
29f10 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  ionHandle Class.
29f20 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65 73 20  .    // Handles 
29f30 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20 64 61  the unmanaged da
29f40 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72 2c 20  tabase pointer, 
29f50 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66 69 6e  and provides fin
29f60 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20 20 2f  alization..    /
29f70 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 74  / support for it
29f80 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
29f90 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
29fa0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
29fb0 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61  dle : CriticalHa
29fc0 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66  ndle..    {..#if
29fd0 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
29fe0 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f   && !PLATFORM_CO
29ff0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2a000 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2a010 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 43   delegate void C
2a020 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61  loseConnectionCa
2a030 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
2a040 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
2a050 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
2a060 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
2a070 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2a080 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43 6f 6e   static CloseCon
2a090 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 20  nectionCallback 
2a0a0 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  closeConnection 
2a0b0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  =..            S
2a0c0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
2a0d0 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65 6e 64  onnection;..#end
2a0e0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  if....        //
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a130 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
2a140 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a150 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2a160 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
2a170 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
2a180 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
2a190 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
2a1a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a1f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2a200 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d  bool ownHandle;.
2a210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a260 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
2a270 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c  blic static impl
2a280 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e  icit operator In
2a290 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  tPtr(SQLiteConne
2a2a0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62 29 0d  ctionHandle db).
2a2b0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a2c0 20 20 20 20 20 20 20 20 69 66 20 28 64 62 20 21          if (db !
2a2d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2a2e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2a2f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2a300 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2a310 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64 62 2e         lock (db.
2a320 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2a330 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2a340 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a350 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2a360 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20   db.handle;..   
2a370 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a380 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a390 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a3a0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
2a3b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a3c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a410 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2a420 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2a430 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 64  nHandle(IntPtr d
2a440 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c  b, bool ownHandl
2a450 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
2a460 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64 6c 65  : this(ownHandle
2a470 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2a480 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2a490 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a4a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2a4b0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2a4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2a4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a4e0 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c 65 20   this.ownHandle 
2a4f0 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20  = ownHandle;..  
2a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2a510 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a 20 20  tHandle(db);..  
2a520 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a530 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 72 69 76 61 74 65 20 53 51 4c       private SQL
2a5a0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2a5b0 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64  dle(bool ownHand
2a5c0 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le)..           
2a5d0 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a   : base(IntPtr.Z
2a5e0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ero)..        {.
2a5f0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2a600 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  E..            i
2a610 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  f (ownHandle).. 
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2a630 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65  nterlocked.Incre
2a640 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2a650 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ta.connectionCou
2a660 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
2a670 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2a680 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a6d0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
2a6e0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
2a6f0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
2a700 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2a710 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a720 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2a730 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2a740 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2a750 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a760 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a770 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72 65 74  (!ownHandle) ret
2a780 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
2a790 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a7a0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2a7b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2a7c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a7d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a7e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a7f0 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d  tr localHandle =
2a800 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63   Interlocked.Exc
2a810 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20  hange(..        
2a820 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2a830 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a  handle, IntPtr.Z
2a840 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c  ero);....#if SQL
2a850 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
2a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a870 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
2a880 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2a890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8a0 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69     closeConnecti
2a8b0 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61  on(this, localHa
2a8c0 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  ndle);..#else.. 
2a8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2a8e0 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21  f (localHandle !
2a8f0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2a900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a910 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 43      SQLiteBase.C
2a920 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74  loseConnection(t
2a930 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  his, localHandle
2a940 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
2a950 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2a960 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2a970 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
2a980 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2a990 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2a9b0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
2a9c0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
2a9d0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9f0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
2aa00 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
2aa10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aa20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43           "CloseC
2aa30 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 22 2c  onnection: {0}",
2aa40 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20   localHandle)); 
2aa50 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa80 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2aa90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2aaa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2aab0 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  dif..#else..    
2aac0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2aad0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20   (syncRoot)..   
2aae0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2aaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab00 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21      if (handle !
2ab10 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
2ab20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2ab50 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
2ab60 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2ab70 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  handle);..      
2ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab90 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50    SetHandle(IntP
2aba0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2abb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2abc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2abd0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66    }..#endif..#if
2abe0 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2abf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2ac00 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2ac10 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2ac20 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ta.connectionCou
2ac30 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69  nt);..#endif..#i
2ac40 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
2ac50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ac60 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2ac70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
2ac80 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
2ac90 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
2aca0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  E..            c
2acb0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2acc0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
2acd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
2ace0 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
2acf0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
2ad00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2ad10 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2ad20 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2ad30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ad40 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2ad50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ad60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2ad70 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
2ad80 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
2ad90 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
2ada0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2adb0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
2adc0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
2add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ade0 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65 43 6f          "CloseCo
2adf0 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c 20 65  nnection: {0}, e
2ae00 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
2ae10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
2ae30 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
2ae40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ae50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2ae60 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2ae70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
2aea0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2aeb0 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
2aec0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2aed0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2aee0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2aef0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2af00 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2af10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2af20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2af30 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2af40 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2af50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2af60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2af70 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
2af80 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2af90 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
2afa0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
2afb0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2afc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2afd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
2b030 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
2b040 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
2b050 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
2b060 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b070 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
2b080 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2b090 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f 6e  ef DebugData.con
2b0a0 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a  nectionCount);..
2b0b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2b0c0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2b0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b120 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77 6e 48  public bool OwnH
2b130 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
2b140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
2b150 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
2b160 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2b170 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b190 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2b1a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2b1b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b1d0 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e 64 6c   return ownHandl
2b1e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2b1f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2b200 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2b210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b260 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
2b270 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
2b280 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
2b290 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b2a0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2b2b0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2b2c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b2d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2b2e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2b2f0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2b300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b310 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b320 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2b330 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
2b340 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
2b350 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b360 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2b370 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
2b3d0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
2b3e0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
2b3f0 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
2b400 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2b410 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b420 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2b430 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2b440 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2b450 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b470 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
2b480 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
2b490 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2b4a0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
2b4b0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
2b4c0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2b4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b510 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2b520 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ion SQLiteStatem
2b530 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  entHandle Class.
2b540 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
2b550 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
2b560 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
2b570 67 65 64 20 53 51 4c 69 74 65 20 73 74 61 74 65  ged SQLite state
2b580 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65  ments...    inte
2b590 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
2b5a0 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  s SQLiteStatemen
2b5b0 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63  tHandle : Critic
2b5c0 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  alHandle..    {.
2b5d0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2b5e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b5f0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
2b600 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74   readonly object
2b610 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
2b620 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69  object();..#endi
2b630 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b690 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2b6a0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2b6b0 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  nn;....        /
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b710 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2b720 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f  implicit operato
2b730 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 53  r IntPtr(SQLiteS
2b740 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 73  tatementHandle s
2b750 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  tmt)..        {.
2b760 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2b770 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (stmt != null)..
2b780 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2b790 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2b7a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2b7c0 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52 6f 6f  ck (stmt.syncRoo
2b7d0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2b7e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b800 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74 2e 68     return stmt.h
2b810 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2b820 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2b830 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b840 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2b850 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2b860 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b8c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2b8d0 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c  teStatementHandl
2b8e0 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
2b8f0 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e  onHandle cnn, In
2b900 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20 20 20  tPtr stmt)..    
2b910 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2b920 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2b930 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2b940 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2b950 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2b960 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2b970 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b990 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d  this.cnn = cnn;.
2b9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b9b0 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d 74 29   SetHandle(stmt)
2b9c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2b9d0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2b9e0 20 20 20 20 20 20 20 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 2f 0d 0a  //////////////..
2ba30 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2ba40 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e SQLiteStatemen
2ba50 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20  tHandle()..     
2ba60 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
2ba70 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2ba80 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
2ba90 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2baa0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2bab0 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
2bac0 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
2bad0 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  ntCount);..#endi
2bae0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
2baf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2bb40 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
2bb50 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
2bb60 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
2bb70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2bb80 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2bb90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2bba0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2bbb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2bbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2bbd0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
2bbe0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
2bbf0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
2bc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2bc10 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
2bc20 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
2bc30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bc40 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
2bc50 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc70 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 61   SQLiteBase.Fina
2bc80 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63 6e  lizeStatement(cn
2bc90 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b  n, localHandle);
2bca0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
2bcb0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2bcc0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2bcd0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bcf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd00 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2bd10 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2bd20 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2bd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd40 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2bd50 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2bd60 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2bd80 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e  FinalizeStatemen
2bd90 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  t: {0}", localHa
2bda0 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
2bdb0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2bdc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2bdd0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2bde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2bdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2be00 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
2be10 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2be20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2be30 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
2be40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2be50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2be60 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
2be70 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2be80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bea0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
2beb0 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
2bec0 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  ent(cnn, handle)
2bed0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2bee0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
2bef0 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
2bf00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2bf10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2bf20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2bf30 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
2bf40 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2bf50 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2bf60 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
2bf70 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74  f DebugData.stat
2bf80 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65  ementCount);..#e
2bf90 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d  ndif..#if DEBUG.
2bfa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bfb0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
2bfc0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2bfd0 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
2bfe0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2bff0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2c000 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
2c010 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29  LiteException e)
2c020 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2c030 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
2c040 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65  teException)..#e
2c050 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2c060 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f    {..#if !NET_CO
2c070 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
2c080 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
2c090 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2c0b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c0c0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
2c0d0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
2c0e0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
2c0f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c100 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
2c110 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
2c120 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
2c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c140 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65  "FinalizeStateme
2c150 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69  nt: {0}, excepti
2c160 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  on: {1}",..     
2c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c180 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20     handle, e)); 
2c190 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1c0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
2c1d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c1e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
2c1f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2c200 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c210 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
2c220 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2c230 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2c240 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2c250 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2c260 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c290 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2c2a0 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20  AsInvalid();..  
2c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2c2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c2d0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2c2e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2c2f0 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lse;..#else..   
2c300 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c310 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  true;..#endif.. 
2c320 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2c330 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2c380 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2c390 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2c3a0 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f  int WasReleasedO
2c3b0 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  k()..        {..
2c3c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2c3d0 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44  rn Interlocked.D
2c3e0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
2c3f0 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
2c400 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  Count);..       
2c410 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
2c420 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c470 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2c480 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
2c490 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
2c4a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c4b0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2c4c0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2c4d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2c4e0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2c4f0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2c500 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2c510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c530 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
2c540 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2c550 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2c560 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2c570 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2c580 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2c590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5d0 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
2c5e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2c5f0 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
2c600 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
2c610 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2c620 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2c630 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2c640 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2c650 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2c660 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c670 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c680 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
2c690 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2c6a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
2c6b0 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
2c6c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2c6d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c720 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
2c730 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c  QLiteBackupHandl
2c740 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20  e Class..    // 
2c750 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a  Provides finaliz
2c760 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f  ation support fo
2c770 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69  r unmanaged SQLi
2c780 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  te backup object
2c790 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s...    internal
2c7a0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
2c7b0 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65  LiteBackupHandle
2c7c0 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c   : CriticalHandl
2c7d0 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c  e..    {..#if PL
2c7e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2c7f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2c800 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e   internal readon
2c810 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ly object syncRo
2c820 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
2c830 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
2c840 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c890 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2c8a0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2c8b0 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a  nHandle cnn;....
2c8c0 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c910 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2c920 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69  c static implici
2c930 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74  t operator IntPt
2c940 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61  r(SQLiteBackupHa
2c950 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a 20 20  ndle backup)..  
2c960 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c970 20 20 20 20 20 69 66 20 28 62 61 63 6b 75 70 20       if (backup 
2c980 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2c990 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2c9a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c9b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2c9c0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 61          lock (ba
2c9d0 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  ckup.syncRoot)..
2c9e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2c9f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2ca10 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68 61 6e  eturn backup.han
2ca20 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
2ca30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ca40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ca50 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
2ca60 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
2ca70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cac0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2cad0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
2cae0 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53 51 4c  BackupHandle(SQL
2caf0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2cb00 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
2cb10 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
2cb20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
2cb30 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2cb40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2cb50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2cb60 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2cb70 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2cb80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2cba0 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20  s.cnn = cnn;..  
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                Se
2cbc0 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70 29 3b  tHandle(backup);
2cbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2cbe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2cbf0 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2cc40 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2cc50 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
2cc60 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  dle()..         
2cc70 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
2cc80 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2cc90 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
2cca0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2ccb0 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
2ccc0 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2ccd0 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74  Data.backupCount
2cce0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
2ccf0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2cd00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2cd50 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
2cd60 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
2cd70 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
2cd80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cd90 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2cda0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
2cdb0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2cdc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2cdd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
2cde0 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
2cdf0 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
2ce00 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2ce10 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
2ce20 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
2ce30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ce40 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2ce50 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2ce60 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2ce70 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2ce80 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75  Base.FinishBacku
2ce90 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64  p(cnn, localHand
2cea0 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  le);....#if !NET
2ceb0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2cec0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2ced0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2cee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cef0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cf00 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2cf10 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2cf20 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2cf30 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2cf50 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2cf60 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf80 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70     "FinishBackup
2cf90 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e  : {0}", localHan
2cfa0 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  dle)); /* throw 
2cfb0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2cfc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2cfd0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
2cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2cff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d000 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73   }..#endif..#els
2d010 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2d020 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2d030 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
2d040 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d050 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68             if (h
2d060 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  andle != IntPtr.
2d070 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2d080 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0a0 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2d0b0 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e  .FinishBackup(cn
2d0c0 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  n, handle);..   
2d0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0e0 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49       SetHandle(I
2d0f0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
2d100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d110 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2d120 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2d130 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2d140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d150 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65    Interlocked.De
2d160 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
2d170 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e  gData.backupCoun
2d180 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
2d190 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2d1a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
2d1b0 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
2d1c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
2d1d0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
2d1e0 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
2d1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
2d200 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
2d210 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
2d220 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2d230 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
2d240 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
2d250 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2d260 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
2d270 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
2d280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d290 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2d2a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2d2c0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
2d2d0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
2d2e0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
2d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d300 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
2d310 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d330 20 20 20 20 20 20 20 22 46 69 6e 69 73 68 42 61         "FinishBa
2d340 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ckup: {0}, excep
2d350 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d370 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
2d380 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2d390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2d3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d3b0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2d3c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d3d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2d3e0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2d3f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d400 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
2d410 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2d420 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2d430 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2d440 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2d450 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2d460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d470 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d480 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2d490 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
2d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2d4c0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2d4d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d4e0 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
2d4f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d500 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2d510 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2d520 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d570 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2d580 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
2d590 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
2d5a0 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
2d5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2d5c0 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
2d5d0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2d5e0 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43  ebugData.backupC
2d5f0 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
2d600 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
2d610 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d660 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2d670 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
2d680 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
2d690 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
2d6a0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
2d6b0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2d6c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2d6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d6e0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2d6f0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2d700 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d720 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
2d730 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2d740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2d750 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d760 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2d770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7c0 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
2d7d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
2d7e0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
2d7f0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
2d800 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2d810 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2d820 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2d830 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
2d840 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2d850 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d860 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d870 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
2d880 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d890 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
2d8a0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
2d8b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2d8c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d910 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
2d920 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 43  LiteBlobHandle C
2d930 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f  lass..    // Pro
2d940 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69  vides finalizati
2d950 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75  on support for u
2d960 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20  nmanaged SQLite 
2d970 62 6c 6f 62 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  blob objects... 
2d980 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
2d990 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42  ed class SQLiteB
2d9a0 6c 6f 62 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  lobHandle : Crit
2d9b0 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
2d9c0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2d9d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2d9e0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d9f0 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
2da00 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
2da10 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
2da20 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da70 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2da80 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2da90 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2daa0 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
2dab0 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2daf0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2db00 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2db10 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
2db20 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
2db30 65 42 6c 6f 62 48 61 6e 64 6c 65 20 62 6c 6f 62  eBlobHandle blob
2db40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2db50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c            if (bl
2db60 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ob != null)..   
2db70 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
2db80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2db90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2dba0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2dbb0 28 62 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74 29 0d  (blob.syncRoot).
2dbc0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2dbd0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbf0 72 65 74 75 72 6e 20 62 6c 6f 62 2e 68 61 6e 64  return blob.hand
2dc00 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
2dc10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2dc20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2dc30 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
2dc40 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
2dc50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2dc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dca0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2dcb0 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 42  internal SQLiteB
2dcc0 6c 6f 62 48 61 6e 64 6c 65 28 53 51 4c 69 74 65  lobHandle(SQLite
2dcd0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2dce0 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62 6c 6f   cnn, IntPtr blo
2dcf0 62 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b)..            
2dd00 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
2dd10 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2dd20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2dd30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2dd40 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2dd50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2dd60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2dd70 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
2dd80 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
2dd90 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2dda0 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20 20 20 20 20  le(blob);..     
2ddb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ddc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddf0 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2de20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2de30 42 6c 6f 62 48 61 6e 64 6c 65 28 29 0d 0a 20 20  BlobHandle()..  
2de40 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
2de50 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20  (IntPtr.Zero).. 
2de60 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f         {..#if CO
2de70 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
2de80 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
2de90 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
2dea0 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62  f DebugData.blob
2deb0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
2dec0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ded0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2dee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2def0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2df20 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2df30 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c  ed override bool
2df40 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29   ReleaseHandle()
2df50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2df60 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2df70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2df80 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2df90 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2dfb0 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  Ptr localHandle 
2dfc0 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78  = Interlocked.Ex
2dfd0 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20 20  change(..       
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
2dff0 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e   handle, IntPtr.
2e000 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Zero);....      
2e010 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
2e020 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
2e030 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2e050 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 42  QLiteBase.CloseB
2e060 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  lob(cnn, localHa
2e070 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
2e080 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2e090 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e0b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2e0c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e0d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2e0e0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2e0f0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2e100 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2e110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e120 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2e130 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2e140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e150 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a       "CloseBlob:
2e160 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
2e170 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
2e180 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2e190 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2e1a0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
2e1e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e1f0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2e200 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2e210 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e220 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
2e230 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2e240 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2e250 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e270 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
2e280 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 68  CloseBlob(cnn, h
2e290 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2b0 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
2e2c0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2e2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e2f0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
2e300 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2e310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2e320 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
2e330 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2e340 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23  a.blobCount);..#
2e350 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55 47  endif..#if DEBUG
2e360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e370 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2e380 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e390 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
2e3a0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2e3b0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2e3c0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2e3d0 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20 65  QLiteException e
2e3e0 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
2e3f0 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c        catch (SQL
2e400 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  iteException)..#
2e410 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2e420 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
2e430 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2e440 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2e450 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2e460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e470 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e480 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2e490 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2e4a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2e4b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2e4c0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2e4d0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2e4e0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e500 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d   "CloseBlob: {0}
2e510 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d  , exception: {1}
2e520 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2e530 20 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64              hand
2e540 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f  le, e)); /* thro
2e550 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2e560 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e570 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e590 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e5a0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2e5b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e5c0 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
2e5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e5e0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2e5f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e610 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2e620 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2e630 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e650 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c  SetHandleAsInval
2e660 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  id();..         
2e670 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2e680 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42        }..#if DEB
2e690 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2e6a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23  return false;..#
2e6b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2e6c0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2e6d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e6e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e730 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e  ////....#if COUN
2e740 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2e750 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73    public int Was
2e760 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20  ReleasedOk()..  
2e770 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e780 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65       return Inte
2e790 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e  rlocked.Decremen
2e7a0 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
2e7b0 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20 20 20  blobCount);..   
2e7c0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2e7d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2e7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2e830 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  lic override boo
2e840 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
2e850 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e860 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
2e870 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2e880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2e890 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2e8a0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2e8b0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e8e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 68         return (h
2e8f0 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  andle == IntPtr.
2e900 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zero);..        
2e910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e920 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2e930 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2e940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e980 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45  //////....#if DE
2e990 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62  BUG..        pub
2e9a0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
2e9b0 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ing ToString()..
2e9c0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2e9d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2e9e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2e9f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2ea00 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
2ea10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ea30 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74  turn handle.ToSt
2ea40 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
2ea50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ea60 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  }..#endif..    }
2ea70 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2ea80 0d 0a 7d 0d 0a                                   ..}..