System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9920c9bb21cf384c1a4a2cf0c65afe8ff165a642:


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 20 7c 7c 20  7 || NET_471 || 
0310: 4e 45 54 5f 34 37 32 29 20 26 26 20 21 50 4c 41  NET_472) && !PLA
0320: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0330: 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69 6e 67 20  MEWORK..  using 
0340: 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 56  System.Runtime.V
0350: 65 72 73 69 6f 6e 69 6e 67 3b 0d 0a 23 65 6e 64  ersioning;..#end
0360: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
0370: 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 23 69  stem.Text;....#i
0380: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
0390: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20  ACTFRAMEWORK || 
03a0: 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
03b0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72  using System.Thr
03c0: 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d  eading;..#endif.
03d0: 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  ...  using Syste
03e0: 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67  m.Xml;....  #reg
03f0: 69 6f 6e 20 44 65 62 75 67 20 44 61 74 61 20 53  ion Debug Data S
0400: 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 23 69 66  tatic Class..#if
0410: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c   COUNT_HANDLE ||
0420: 20 44 45 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73   DEBUG..  /// <s
0430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
0440: 68 69 73 20 63 6c 61 73 73 20 65 6e 63 61 70 73  his class encaps
0450: 75 6c 61 74 65 73 20 73 6f 6d 65 20 74 72 61 63  ulates some trac
0460: 6b 69 6e 67 20 64 61 74 61 20 74 68 61 74 20 69  king data that i
0470: 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  s used for debug
0480: 67 69 6e 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20  ging..  /// and 
0490: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
04a0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
04b0: 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ry>..  internal 
04c0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 44 65 62  static class Deb
04d0: 75 67 44 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20  ugData..  {..   
04e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
04f0: 74 65 20 44 61 74 61 0d 0a 23 69 66 20 44 45 42  te Data..#if DEB
0500: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0510: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0520: 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20  // This lock is 
0530: 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20  used to protect 
0540: 73 65 76 65 72 61 6c 20 73 74 61 74 69 63 20 66  several static f
0550: 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ields...      //
0560: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0570: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0580: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  ic readonly obje
0590: 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  ct staticSyncRoo
05a0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
05b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
05c0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
0610: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72        #region Cr
0620: 69 74 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f  itical Handle Co
0630: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0640: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55  d Only)..#if COU
0650: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
0660: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
0670: 54 45 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73  TE: These counts
0680: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 74   represent the t
0690: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
06a0: 75 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20  utstanding..    
06b0: 20 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d    //       (non-
06c0: 64 69 73 70 6f 73 65 64 29 20 43 72 69 74 69 63  disposed) Critic
06d0: 61 6c 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64  alHandle derived
06e0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
06f0: 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  s..      //     
0700: 20 20 63 72 65 61 74 65 64 20 62 79 20 74 68 69    created by thi
0710: 73 20 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72  s library and ar
0720: 65 20 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20  e primarily for 
0730: 75 73 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  use by..      //
0740: 20 20 20 20 20 20 20 74 68 65 20 74 65 73 74 20         the test 
0750: 73 75 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f  suite.  These co
0760: 75 6e 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65  unts are increme
0770: 6e 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  nted by the..   
0780: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f     //       asso
0790: 63 69 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74  ciated construct
07a0: 6f 72 73 20 61 6e 64 20 61 72 65 20 64 65 63 72  ors and are decr
07b0: 65 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65  emented upon the
07c0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
07d0: 20 73 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70   successful comp
07e0: 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73  letion of the as
07f0: 73 6f 63 69 61 74 65 64 20 52 65 6c 65 61 73 65  sociated Release
0800: 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f  Handle..      //
0810: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d         methods..
0820: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
0830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0840: 20 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43   int connectionC
0850: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0860: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0870: 20 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b   statementCount;
0880: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
0890: 20 73 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b   static int back
08a0: 75 70 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  upCount;..      
08b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
08c0: 69 6e 74 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a  int blobCount;..
08d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
08e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
08f0: 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0940: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 65 74       #region Set
0950: 74 69 6e 67 73 20 52 65 61 64 20 43 6f 75 6e 74  tings Read Count
0960: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0970: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0990: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
09a0: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
09b0: 73 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20  stores the read 
09c0: 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72  counts for the r
09d0: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
09e0: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
09f0: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 69 73 20  settings.  This 
0a00: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f  information is o
0a10: 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77 68 65  nly recorded whe
0a20: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0a30: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 44 65  e..      /// "De
0a40: 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69  bug" build confi
0a50: 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  guration...     
0a60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
0a80: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
0a90: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65  <string, int> se
0aa0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b  ttingReadCounts;
0ab0: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
0b10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0b20: 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69    /// This dicti
0b30: 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65  onary stores the
0b40: 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72   read counts for
0b50: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0b60: 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20  figuration..    
0b70: 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 20 76    /// settings v
0b80: 69 61 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ia the XML confi
0b90: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20  guration file.  
0ba0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0bb0: 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
0bc0: 2f 2f 2f 20 72 65 63 6f 72 64 65 64 20 77 68 65  /// recorded whe
0bd0: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0be0: 65 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  e "Debug" build 
0bf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0c00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0c20: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0c30: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0c40: 74 3e 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65  t> settingFileRe
0c50: 61 64 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69  adCounts;..#endi
0c60: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
0c70: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0cd0: 23 72 65 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f  #region Other Co
0ce0: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0cf0: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42  d Only)..#if DEB
0d00: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0d10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0d20: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0d30: 72 79 20 73 74 6f 72 65 73 20 6d 69 73 63 65 6c  ry stores miscel
0d40: 6c 61 6e 65 6f 75 73 20 63 6f 75 6e 74 73 20 75  laneous counts u
0d50: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
0d60: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72  g..      /// pur
0d70: 70 6f 73 65 73 2e 20 20 54 68 69 73 20 69 6e 66  poses.  This inf
0d80: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0d90: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0da0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0db0: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0dc0: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0dd0: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0de0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0df0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0e00: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0e10: 72 69 6e 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72  ring, int> other
0e20: 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d  Counts;..#endif.
0e30: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
0e40: 6e 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  n..      #endreg
0e50: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
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 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0eb0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
0ec0: 65 74 68 6f 64 73 0d 0a 23 69 66 20 44 45 42 55  ethods..#if DEBU
0ed0: 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  G..      /// <su
0ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0ef0: 2f 20 43 72 65 61 74 65 73 20 64 69 63 74 69 6f  / Creates dictio
0f00: 6e 61 72 69 65 73 20 75 73 65 64 20 74 6f 20 73  naries used to s
0f10: 74 6f 72 65 20 74 68 65 20 72 65 61 64 20 63 6f  tore the read co
0f20: 75 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f 66  unts for each of
0f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
0f40: 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
0f50: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20  ation settings. 
0f60: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
0f70: 72 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20  re used for..   
0f80: 20 20 20 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67     /// debugging
0f90: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0fa0: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
0fb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0fc0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
0fd0: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74  static void Init
0fe0: 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20  ialize()..      
0ff0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  {..          loc
1000: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
1010: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
1020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1030: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1040: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
1050: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 69 65   the dictionarie
1060: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
1070: 74 68 61 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20  that will..     
1080: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1090: 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75    contain the nu
10a0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
10b0: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
10c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d0: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
10e0: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
10f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1100: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1110: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
1120: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1130: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
1140: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  ngReadCounts = n
1150: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
1160: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d  ring, int>();...
1170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1180: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
1190: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
11a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11b0: 20 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65       settingFile
11c0: 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77  ReadCounts = new
11d0: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
11e0: 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20  ng, int>();.... 
11f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1200: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20  (otherCounts == 
1210: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1220: 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f           otherCo
1230: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
1240: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
1250: 74 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t>();..         
1260: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1270: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
12d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12e0: 20 51 75 65 72 69 65 73 20 74 68 65 20 72 65 61   Queries the rea
12f0: 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65  d counts for the
1300: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
1310: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e  ration settings.
1320: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73  ..      /// Thes
1330: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
1340: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
1350: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
1360: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
1370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
1390: 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46 69 6c  ram name="viaFil
13a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  e">..      /// N
13b0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
13c0: 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  pecified setting
13d0: 73 20 77 65 72 65 20 72 65 61 64 20 66 72 6f 6d  s were read from
13e0: 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20   the XML..      
13f0: 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  /// configuratio
1400: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
1410: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1420: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f  ..      /// A co
1440: 70 79 20 6f 66 20 74 68 65 20 73 74 61 74 69 73  py of the statis
1450: 74 69 63 73 20 66 6f 72 20 74 68 65 20 73 70 65  tics for the spe
1460: 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63  cified runtime c
1470: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
1480: 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73      /// settings
1490: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
14a0: 65 79 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  ey are not avail
14b0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
14c0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
14d0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
14e0: 20 6f 62 6a 65 63 74 20 47 65 74 53 65 74 74 69   object GetSetti
14f0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 28 0d 0a 20  ngReadCounts(.. 
1500: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69           bool vi
1510: 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  aFile..         
1520: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
1530: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1540: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1560: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 69 61           if (via
1570: 46 69 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  File)..         
1580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
15a0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
15b0: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1600: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
1610: 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e 67  ng, int>(setting
1620: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 29 3b  FileReadCounts);
1630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1640: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1650: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1670: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1680: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
1690: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63    return new Dic
16e0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
16f0: 69 6e 74 3e 28 73 65 74 74 69 6e 67 52 65 61 64  int>(settingRead
1700: 43 6f 75 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20  Counts);..      
1710: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1720: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
1730: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1780: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
1790: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17a0: 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74 68 65 20   /// Clears the 
17b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
17c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
17d0: 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e  iguration settin
17e0: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  gs...      /// T
17f0: 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65  hese numbers are
1800: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
1810: 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e 67 20  ing and testing 
1820: 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a  purposes only...
1830: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1840: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1850: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61  <param name="via
1860: 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  File">..      //
1870: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1880: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
1890: 69 6e 67 73 20 77 65 72 65 20 72 65 61 64 20 66  ings were read f
18a0: 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  rom the XML..   
18b0: 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
18c0: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
18d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
18f0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 53 65  tic void ClearSe
1900: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 28  ttingReadCounts(
1910: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
1920: 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20   viaFile..      
1930: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
1940: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1950: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1960: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1980: 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20 20 20  viaFile)..      
1990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
19b0: 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64  (settingFileRead
19c0: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
19d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e0: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
19f0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65  leReadCounts.Cle
1a00: 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ar();..         
1a10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a20: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a50: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1a60: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a80: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1a90: 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28 29 3b 0d  Counts.Clear();.
1aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
1ac0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
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 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72  ..      /// Incr
1b40: 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64 20  ements the read 
1b50: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70  count for the sp
1b60: 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20  ecified runtime 
1b70: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  configuration.. 
1b80: 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67       /// setting
1b90: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
1ba0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
1bb0: 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74  bugging and test
1bc0: 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20  ing purposes..  
1bd0: 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20      /// only... 
1be0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1bf0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
1c00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
1c10: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
1c20: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65  e name of the se
1c30: 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64  tting being read
1c40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
1c50: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
1c60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69   <param name="vi
1c70: 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  aFile">..      /
1c80: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
1c90: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
1ca0: 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72 65  ting is being re
1cb0: 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ad from the XML.
1cc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69  .      /// confi
1cd0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
1ce0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cf0: 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  m>..      public
1d00: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63   static void Inc
1d10: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
1d20: 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20  dCount(..       
1d30: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
1d40: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
1d50: 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20  viaFile..       
1d60: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
1d70: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1d80: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
1d90: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1da0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1dc0: 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74 61  NOTE: Update sta
1dd0: 74 69 73 74 69 63 73 20 66 6f 72 20 74 68 69 73  tistics for this
1de0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d   setting value..
1df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1e00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e10: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e40: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
1e50: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
1e60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e90: 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20   int count;.... 
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb0: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
1ec0: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 54  FileReadCounts.T
1ed0: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
1ee0: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f10: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61  ileReadCounts[na
1f20: 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b  me] = count + 1;
1f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f40: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f60: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f70: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41 64  ileReadCounts.Ad
1f80: 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20  d(name, 1);..   
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fc0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1fd0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fe0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1ff0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
2000: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2010: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2030: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2040: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2050: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
2060: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54  tingReadCounts.T
2070: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
2080: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
20b0: 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20  eadCounts[name] 
20c0: 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20  = count + 1;..  
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
20f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2100: 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43      settingReadC
2110: 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20  ounts.Add(name, 
2120: 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1);..           
2130: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2140: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2150: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
2160: 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
21c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21d0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68 65   /// Queries the
21e0: 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68 65 73   counters.  Thes
21f0: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
2200: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
2210: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
2220: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
2230: 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f   only...      //
2240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2250: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2260: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  >..      /// A c
2270: 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 75 6e 74  opy of the count
2280: 65 72 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ers -OR- null if
2290: 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 61 76   they are not av
22a0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
22b0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
22c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
22d0: 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74 4f 74  tic object GetOt
22e0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
22f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2300: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2310: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2330: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2340: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2360: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
2370: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2380: 72 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72  rn new Dictionar
2390: 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 6f  y<string, int>(o
23a0: 74 68 65 72 43 6f 75 6e 74 73 29 3b 0d 0a 20 20  therCounts);..  
23b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
2420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2430: 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74      /// Clears t
2440: 68 65 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68  he counters.  Th
2450: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
2460: 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69  used for debuggi
2470: 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f  ng and..      //
2480: 2f 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  / testing purpos
2490: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
24a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
24b0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
24c0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 4f 74  tic void ClearOt
24d0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
24e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24f0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2500: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2510: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2520: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2530: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
2540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
2550: 68 65 72 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28  herCounts.Clear(
2560: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
2570: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
2580: 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
25f0: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 73 70 65  crements the spe
2600: 63 69 66 69 65 64 20 63 6f 75 6e 74 65 72 2e 0d  cified counter..
2610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2630: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
2640: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
2650: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
2660: 63 6f 75 6e 74 65 72 20 62 65 69 6e 67 20 69 6e  counter being in
2670: 63 72 65 6d 65 6e 74 65 64 2e 0d 0a 20 20 20 20  cremented...    
2680: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2690: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
26a0: 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65  tic void Increme
26b0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 0d 0a 20  ntOtherCount(.. 
26c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
26d0: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
26e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
26f0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
2700: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
2710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2720: 20 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65          if (othe
2730: 72 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  rCounts != null)
2740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2750: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2760: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2780: 20 20 20 20 20 69 66 20 28 6f 74 68 65 72 43 6f       if (otherCo
2790: 75 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65  unts.TryGetValue
27a0: 28 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74  (name, out count
27b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
27c0: 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43            otherC
27d0: 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f  ounts[name] = co
27e0: 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20  unt + 1;..      
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2810: 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75          otherCou
2820: 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29  nts.Add(name, 1)
2830: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2840: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2850: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
2860: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
2870: 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  on..  }..#endif.
2880: 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
2890: 0a 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e0: 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 48 65  ....  #region He
28f0: 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 53 74 61  lper Methods Sta
2900: 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f  tic Class..  ///
2910: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
2920: 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63 6c  / This static cl
2930: 61 73 73 20 70 72 6f 76 69 64 65 73 20 73 6f 6d  ass provides som
2940: 65 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  e methods that a
2950: 72 65 20 73 68 61 72 65 64 20 62 65 74 77 65 65  re shared betwee
2960: 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 6e 61 74  n the..  /// nat
2970: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
2980: 6c 6f 61 64 65 72 20 61 6e 64 20 6f 74 68 65 72  loader and other
2990: 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20 2f 2f 2f   classes...  ///
29a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69   </summary>..  i
29b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
29c0: 6c 61 73 73 20 48 65 6c 70 65 72 4d 65 74 68 6f  lass HelperMetho
29d0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
29e0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
29f0: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2a00: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a10: 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c  ring DisplayNull
2a20: 4f 62 6a 65 63 74 20 3d 20 22 3c 6e 75 6c 6c 4f  Object = "<nullO
2a30: 62 6a 65 63 74 3e 22 3b 0d 0a 20 20 20 20 20 20  bject>";..      
2a40: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a50: 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d 70 74  ring DisplayEmpt
2a60: 79 53 74 72 69 6e 67 20 3d 20 22 3c 65 6d 70 74  yString = "<empt
2a70: 79 53 74 72 69 6e 67 3e 22 3b 0d 0a 20 20 20 20  yString>";..    
2a80: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2a90: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 53 74  string DisplaySt
2aa0: 72 69 6e 67 46 6f 72 6d 61 74 20 3d 20 22 5c 22  ringFormat = "\"
2ab0: 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a 20 20 20 20 20  {0}\"";....     
2ac0: 20 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 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b10: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
2b20: 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79  t string Display
2b30: 4e 75 6c 6c 41 72 72 61 79 20 3d 20 22 3c 6e 75  NullArray = "<nu
2b40: 6c 6c 41 72 72 61 79 3e 22 3b 0d 0a 20 20 20 20  llArray>";..    
2b50: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2b60: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d  string DisplayEm
2b70: 70 74 79 41 72 72 61 79 20 3d 20 22 3c 65 6d 70  ptyArray = "<emp
2b80: 74 79 41 72 72 61 79 3e 22 3b 0d 0a 0d 0a 20 20  tyArray>";....  
2b90: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2be0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2bf0: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 4f  onst char ArrayO
2c00: 70 65 6e 20 3d 20 27 5b 27 3b 0d 0a 20 20 20 20  pen = '[';..    
2c10: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2c20: 73 74 72 69 6e 67 20 45 6c 65 6d 65 6e 74 53 65  string ElementSe
2c30: 70 61 72 61 74 6f 72 20 3d 20 22 2c 20 22 3b 0d  parator = ", ";.
2c40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c50: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 43  onst char ArrayC
2c60: 6c 6f 73 65 20 3d 20 27 5d 27 3b 0d 0a 0d 0a 20  lose = ']';.... 
2c70: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cc0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2cd0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
2ce0: 63 68 61 72 5b 5d 20 53 70 61 63 65 43 68 61 72  char[] SpaceChar
2cf0: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  s = {..         
2d00: 20 27 5c 74 27 2c 20 27 5c 6e 27 2c 20 27 5c 72   '\t', '\n', '\r
2d10: 27 2c 20 27 5c 76 27 2c 20 27 5c 66 27 2c 20 27  ', '\v', '\f', '
2d20: 20 27 0d 0a 20 20 20 20 20 20 7d 3b 0d 0a 20 20   '..      };..  
2d30: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d40: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d90: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
2da0: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
2db0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2dc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2dd0: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
2de0: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65  d to protect the
2df0: 20 73 74 61 74 69 63 20 3c 73 65 65 20 63 72 65   static <see cre
2e00: 66 3d 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 61 6e  f="isMono" /> an
2e10: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  d..      /// <se
2e20: 65 20 63 72 65 66 3d 22 69 73 44 6f 74 4e 65 74  e cref="isDotNet
2e30: 43 6f 72 65 22 20 2f 3e 20 66 69 65 6c 64 73 2e  Core" /> fields.
2e40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2e50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
2e60: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
2e70: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
2e80: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
2e90: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
2ea0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
2f10: 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c 79  his type is only
2f20: 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72 75   present when ru
2f30: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
2f40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2f50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
2f60: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
2f70: 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52  nly string MonoR
2f80: 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f  untimeType = "Mo
2f90: 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a  no.Runtime";....
2fa0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3000: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3010: 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c  This type is onl
3020: 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72  y present when r
3030: 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e 45 54 20 43  unning on .NET C
3040: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ore...      /// 
3050: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
3080: 20 44 6f 74 4e 65 74 43 6f 72 65 4c 69 62 54 79   DotNetCoreLibTy
3090: 70 65 20 3d 20 22 53 79 73 74 65 6d 2e 43 6f 72  pe = "System.Cor
30a0: 65 4c 69 62 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  eLib";....      
30b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3100: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3110: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
3120: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
3130: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
3140: 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61  on Mono.  Initia
3150: 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d  lly null, it is.
3160: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62  .      /// set b
3170: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
3180: 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68  "IsMono" /> meth
3190: 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20  od on its first 
31a0: 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74  call.  Later, it
31b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72  ..      /// is r
31c0: 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d  eturned verbatim
31d0: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
31e0: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
31f0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
3200: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3210: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3220: 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d  c bool? isMono =
3230: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3290: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32a0: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
32b0: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
32c0: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
32d0: 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 20 20 49  on .NET Core.  I
32e0: 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 0d 0a  nitially null,..
32f0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 69 73 20        /// it is 
3300: 73 65 74 20 62 79 20 74 68 65 20 3c 73 65 65 20  set by the <see 
3310: 63 72 65 66 3d 22 49 73 44 6f 74 4e 65 74 43 6f  cref="IsDotNetCo
3320: 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e  re" /> method on
3330: 20 69 74 73 20 66 69 72 73 74 0d 0a 20 20 20 20   its first..    
3340: 20 20 2f 2f 2f 20 63 61 6c 6c 2e 20 20 4c 61 74    /// call.  Lat
3350: 65 72 2c 20 69 74 20 69 73 20 72 65 74 75 72 6e  er, it is return
3360: 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20 74  ed verbatim by t
3370: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
3380: 65 65 20 63 72 65 66 3d 22 49 73 44 6f 74 4e 65  ee cref="IsDotNe
3390: 74 43 6f 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64  tCore" /> method
33a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
33b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
33c0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
33d0: 6f 6c 3f 20 69 73 44 6f 74 4e 65 74 43 6f 72 65  ol? isDotNetCore
33e0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
33f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
3440: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3450: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
3460: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
3470: 65 72 20 77 65 20 73 75 63 63 65 73 73 66 75 6c  er we successful
3480: 6c 79 20 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a  ly invoked the..
3490: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34a0: 72 65 66 3d 22 44 65 62 75 67 67 65 72 2e 42 72  ref="Debugger.Br
34b0: 65 61 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  eak" /> method. 
34c0: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
34d0: 20 69 74 20 69 73 20 73 65 74 20 62 79 0d 0a 20   it is set by.. 
34e0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
34f0: 65 20 63 72 65 66 3d 22 4d 61 79 62 65 42 72 65  e cref="MaybeBre
3500: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20  akIntoDebugger" 
3510: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
3520: 20 66 69 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20   first call...  
3530: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3540: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
3550: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64  e static bool? d
3560: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e  ebuggerBreak = n
3570: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ull;..      #end
3580: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
35f0: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
3600: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3610: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3620: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
3630: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3640: 65 73 73 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20  ess.  Only used 
3650: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a  for debugging...
3660: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3670: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3680: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
3690: 20 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74   /// The ID of t
36a0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
36b0: 73 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  ss -OR- zero if 
36c0: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
36d0: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
36e0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
36f0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
3700: 61 74 69 63 20 69 6e 74 20 47 65 74 50 72 6f 63  atic int GetProc
3710: 65 73 73 49 64 28 29 0d 0a 20 20 20 20 20 20 7b  essId()..      {
3720: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 72 6f 63  ..          Proc
3730: 65 73 73 20 70 72 6f 63 65 73 73 20 3d 20 50 72  ess process = Pr
3740: 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74  ocess.GetCurrent
3750: 50 72 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20  Process();....  
3760: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3770: 65 73 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ess == null)..  
3780: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3790: 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rn 0;....       
37a0: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
37b0: 73 2e 49 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  s.Id;..      }..
37c0: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3810: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
3820: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3830: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
3840: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73  ther or not this
3850: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
3860: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
3870: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3880: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
3890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
38a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
38b0: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73  this assembly is
38c0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f   running on Mono
38d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
38e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
38f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
3900: 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20  ol IsMono()..   
3910: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3920: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
3930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3940: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
3950: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
3960: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3970: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
3980: 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Mono == null).. 
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54       isMono = (T
39b0: 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f  ype.GetType(Mono
39c0: 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20  RuntimeType) != 
39d0: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
39f0: 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b  rn (bool)isMono;
3a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a10: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
3a20: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
3a30: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
3a50: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
3a60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3a70: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3a80: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
3a90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3ae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3af0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3b00: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3b10: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3b20: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3b30: 67 20 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 0d  g on .NET Core..
3b40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3b50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3b60: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3b70: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
3b80: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  f this assembly 
3b90: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e  is running on .N
3ba0: 45 54 20 43 6f 72 65 2e 0d 0a 20 20 20 20 20 20  ET Core...      
3bb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3bc0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
3bd0: 74 69 63 20 62 6f 6f 6c 20 49 73 44 6f 74 4e 65  tic bool IsDotNe
3be0: 74 43 6f 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  tCore()..      {
3bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
3c00: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
3c20: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3c40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3c50: 20 20 20 20 20 20 69 66 20 28 69 73 44 6f 74 4e        if (isDotN
3c60: 65 74 43 6f 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  etCore == null).
3c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 44 6f              isDo
3ca0: 74 4e 65 74 43 6f 72 65 20 3d 20 28 54 79 70 65  tNetCore = (Type
3cb0: 2e 47 65 74 54 79 70 65 28 0d 0a 20 20 20 20 20  .GetType(..     
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 44 6f 74 4e 65 74 43 6f 72 65 4c       DotNetCoreL
3ce0: 69 62 54 79 70 65 29 20 21 3d 20 6e 75 6c 6c 29  ibType) != null)
3cf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3d00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3d20: 72 6e 20 28 62 6f 6f 6c 29 69 73 44 6f 74 4e 65  rn (bool)isDotNe
3d30: 74 43 6f 72 65 3b 0d 0a 20 20 20 20 20 20 20 20  tCore;..        
3d40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3d50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3d60: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
3d70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3d80: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
3d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3da0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
3db0: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
3dc0: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
3dd0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3e30: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
3e40: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
3e50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3e60: 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20       /// Resets 
3e70: 74 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65  the cached value
3e80: 20 66 6f 72 20 74 68 65 20 22 50 72 65 4c 6f 61   for the "PreLoa
3e90: 64 53 51 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74  dSQLite_BreakInt
3ea0: 6f 44 65 62 75 67 67 65 72 22 0d 0a 20 20 20 20  oDebugger"..    
3eb0: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
3ec0: 69 6f 6e 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  ion setting...  
3ed0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3ee0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3ef0: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  al static void R
3f00: 65 73 65 74 42 72 65 61 6b 49 6e 74 6f 44 65 62  esetBreakIntoDeb
3f10: 75 67 67 65 72 28 29 0d 0a 20 20 20 20 20 20 7b  ugger()..      {
3f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
3f30: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3f40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
3f60: 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75  buggerBreak = nu
3f70: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
3f80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
3f90: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3fe0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3ff0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  ry>..      /// I
4000: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
4010: 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65  Lite_BreakIntoDe
4020: 62 75 67 67 65 72 22 20 63 6f 6e 66 69 67 75 72  bugger" configur
4030: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73  ation setting is
4040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 73  ..      /// pres
4050: 65 6e 74 20 28 65 2e 67 2e 20 76 69 61 20 74 68  ent (e.g. via th
4060: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 29 2c 20  e environment), 
4070: 67 69 76 65 20 74 68 65 20 69 6e 74 65 72 61 63  give the interac
4080: 74 69 76 65 20 75 73 65 72 20 61 6e 0d 0a 20 20  tive user an..  
4090: 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e      /// opportun
40a0: 69 74 79 20 74 6f 20 61 74 74 61 63 68 20 61 20  ity to attach a 
40b0: 64 65 62 75 67 67 65 72 20 74 6f 20 74 68 65 20  debugger to the 
40c0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 3b  current process;
40d0: 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   otherwise,..   
40e0: 20 20 20 2f 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e     /// do nothin
40f0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
4100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4110: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4120: 76 6f 69 64 20 4d 61 79 62 65 42 72 65 61 6b 49  void MaybeBreakI
4130: 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a 20  ntoDebugger().. 
4140: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4150: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
4160: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
4170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4180: 20 20 20 20 69 66 20 28 64 65 62 75 67 67 65 72      if (debugger
4190: 42 72 65 61 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Break != null)..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20    return;..     
41c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
41d0: 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61      if (UnsafeNa
41e0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53  tiveMethods.GetS
41f0: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
4210: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65  reLoadSQLite_Bre
4220: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 2c  akIntoDebugger",
4230: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
4240: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
4250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4270: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
4280: 6f 20 75 73 65 20 74 68 65 20 43 6f 6e 73 6f 6c  o use the Consol
4290: 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72  e in order to pr
42a0: 6f 6d 70 74 20 74 68 65 0d 0a 20 20 20 20 20 20  ompt the..      
42b0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
42c0: 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65   interactive use
42d0: 72 20 28 69 66 20 61 6e 79 29 2e 20 20 54 68 69  r (if any).  Thi
42e0: 73 20 6d 61 79 20 66 61 69 6c 20 66 6f 72 20 61  s may fail for a
42f0: 6e 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ny..            
4300: 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65    //       numbe
4310: 72 20 6f 66 20 72 65 61 73 6f 6e 73 2e 20 20 45  r of reasons.  E
4320: 76 65 6e 20 69 6e 20 74 68 6f 73 65 20 63 61 73  ven in those cas
4330: 65 73 2c 20 77 65 20 73 74 69 6c 6c 0d 0a 20 20  es, we still..  
4340: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4350: 20 20 20 20 20 77 61 6e 74 20 74 6f 20 69 73 73       want to iss
4360: 75 65 20 74 68 65 20 61 63 74 75 61 6c 20 72 65  ue the actual re
4370: 71 75 65 73 74 20 74 6f 20 62 72 65 61 6b 20 69  quest to break i
4380: 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
4390: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
43a0: 64 65 62 75 67 67 65 72 2e 0d 0a 20 20 20 20 20  debugger...     
43b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
43c0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
43e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
43f0: 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65     Console.Write
4400: 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61  Line(StringForma
4410: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
4420: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
4430: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
4440: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 74               "At
4460: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
4470: 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20 22  to process {0} "
4480: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
4490: 20 20 20 20 20 20 20 20 20 20 22 61 6e 64 20 70            "and p
44a0: 72 65 73 73 20 61 6e 79 20 6b 65 79 20 74 6f 20  ress any key to 
44b0: 63 6f 6e 74 69 6e 75 65 2e 22 2c 0d 0a 20 20 20  continue.",..   
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44d0: 20 20 20 47 65 74 50 72 6f 63 65 73 73 49 64 28     GetProcessId(
44e0: 29 29 29 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  )));....#if PLAT
44f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4500: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4510: 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65           Console
4520: 2e 52 65 61 64 4c 69 6e 65 28 29 3b 0d 0a 23 65  .ReadLine();..#e
4530: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
4540: 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52         Console.R
4550: 65 61 64 4b 65 79 28 29 3b 0d 0a 23 65 6e 64 69  eadKey();..#endi
4560: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4570: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
4580: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
4590: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
45a0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
45b0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
45c0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
45d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
45e0: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
45f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
4600: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
4610: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
4620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4630: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4640: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
4670: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
4680: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
4690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
46a0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
46b0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
46c0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
46d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46e0: 20 20 22 46 61 69 6c 65 64 20 74 6f 20 69 73 73    "Failed to iss
46f0: 75 65 20 64 65 62 75 67 67 65 72 20 70 72 6f 6d  ue debugger prom
4700: 70 74 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  pt, " +..       
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4720: 20 20 20 22 7b 30 7d 20 6d 61 79 20 62 65 20 75     "{0} may be u
4730: 6e 75 73 61 62 6c 65 3a 20 7b 31 7d 22 2c 0d 0a  nusable: {1}",..
4740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4750: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
4760: 28 43 6f 6e 73 6f 6c 65 29 2c 20 65 29 29 3b 20  (Console), e)); 
4770: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
47a0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
47e0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
47f0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
4800: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4810: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4820: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4830: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4840: 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62 75              Debu
4850: 67 67 65 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 0d  gger.Break();...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4870: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
4880: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
4890: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
48a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48b0: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
48c0: 61 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ak = true;..    
48d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
48e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
48f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4900: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
4910: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4920: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4930: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4960: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4970: 67 67 65 72 42 72 65 61 6b 20 3d 20 66 61 6c 73  ggerBreak = fals
4980: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
4990: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
49b0: 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow;..           
49c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
49d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
49e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  e..          {..
49f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4a10: 2f 2f 20 42 55 47 46 49 58 3a 20 54 68 65 72 65  // BUGFIX: There
4a20: 20 69 73 20 28 61 6c 6d 6f 73 74 29 20 6e 6f 20   is (almost) no 
4a30: 70 6f 69 6e 74 20 69 6e 20 63 68 65 63 6b 69 6e  point in checkin
4a40: 67 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  g for the..     
4a50: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
4a60: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
4a70: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
4a80: 74 69 6e 67 20 72 65 70 65 61 74 65 64 6c 79 2e  ting repeatedly.
4a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4aa0: 2f 2f 20 20 20 20 20 20 20 20 20 50 72 65 76 65  //         Preve
4ab0: 6e 74 20 74 68 61 74 20 68 65 72 65 20 62 79 20  nt that here by 
4ac0: 73 65 74 74 69 6e 67 20 74 68 65 20 63 61 63 68  setting the cach
4ad0: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4ae0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4af0: 20 20 20 74 6f 20 66 61 6c 73 65 2e 0d 0a 20 20     to false...  
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
4b20: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
4b30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
4b40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4b50: 20 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72          debugger
4b60: 42 72 65 61 6b 20 3d 20 66 61 6c 73 65 3b 0d 0a  Break = false;..
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
4b90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4bf0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
4c10: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
4c20: 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65  the current thre
4c30: 61 64 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66  ad.  Only used f
4c40: 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20  or debugging... 
4c50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4c60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4c70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4c80: 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68  /// The ID of th
4c90: 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64  e current thread
4ca0: 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74   -OR- zero if it
4cb0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
4cc0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
4cd0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4ce0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4cf0: 74 69 63 20 69 6e 74 20 47 65 74 54 68 72 65 61  tic int GetThrea
4d00: 64 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  dId()..      {..
4d10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4d20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
4d30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4d40: 20 41 70 70 44 6f 6d 61 69 6e 2e 47 65 74 43 75   AppDomain.GetCu
4d50: 72 72 65 6e 74 54 68 72 65 61 64 49 64 28 29 3b  rrentThreadId();
4d60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4d70: 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65     return 0;..#e
4d80: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
4d90: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
4df0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4e00: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
4e10: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
4e20: 6c 61 67 73 20 61 72 65 20 70 72 65 73 65 6e 74  lags are present
4e30: 20 77 69 74 68 69 6e 20 74 68 65 20 66 6c 61 67   within the flag
4e40: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  s..      /// ass
4e50: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
4e60: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
4e70: 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20  on object...    
4e80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4e90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
4ea0: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4ec0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
4ed0: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
4ee0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
4ef0: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
4f00: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
4f10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4f20: 68 61 73 46 6c 61 67 73 22 3e 0d 0a 20 20 20 20  hasFlags">..    
4f30: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4f40: 74 6f 20 63 68 65 63 6b 20 66 6f 72 2e 0d 0a 20  to check for... 
4f50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4f60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
4f70: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
4f80: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
4f90: 65 20 73 70 65 63 69 66 69 65 64 20 66 6c 61 67  e specified flag
4fa0: 20 6f 72 20 66 6c 61 67 73 20 77 65 72 65 20 70   or flags were p
4fb0: 72 65 73 65 6e 74 3b 20 6f 74 68 65 72 77 69 73  resent; otherwis
4fc0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
4fd0: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
4fe0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4ff0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5000: 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73 28 0d   bool HasFlags(.
5010: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
5020: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5030: 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20   flags,..       
5040: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5050: 69 6f 6e 46 6c 61 67 73 20 68 61 73 46 6c 61 67  ionFlags hasFlag
5060: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
5070: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5080: 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c 61 67     return ((flag
5090: 73 20 26 20 68 61 73 46 6c 61 67 73 29 20 3d 3d  s & hasFlags) ==
50a0: 20 68 61 73 46 6c 61 67 73 29 3b 0d 0a 20 20 20   hasFlags);..   
50b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
50c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
5110: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5120: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
5130: 69 6e 65 73 20 69 66 20 70 72 65 70 61 72 69 6e  ines if preparin
5140: 67 20 61 20 71 75 65 72 79 20 73 68 6f 75 6c 64  g a query should
5150: 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20   be logged...   
5160: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5170: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
5180: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
5190: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
51a0: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
51b0: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
51c0: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
51d0: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
51e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
51f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5200: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
5210: 6f 20 69 66 20 74 68 65 20 71 75 65 72 79 20 70  o if the query p
5220: 72 65 70 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  reparation shoul
5230: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
5240: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5250: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5260: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5270: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
5280: 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a 20 20 20  LogPrepare(..   
5290: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
52a0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
52b0: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
52c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
52d0: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
52e0: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
52f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5300: 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b 0d 0a 20  .LogPrepare);.. 
5310: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
5370: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5380: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
5390: 69 6e 65 73 20 69 66 20 70 72 65 2d 70 61 72 61  ines if pre-para
53a0: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
53b0: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
53c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
53d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
53e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
53f0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
5400: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
5410: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
5420: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
5430: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
5440: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
5450: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
5460: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
5470: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70 72 65  -zero if the pre
5480: 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  -parameter bindi
5490: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ng should be log
54a0: 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  ged; otherwise,.
54b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
54c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
54d0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
54e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
54f0: 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64 28 0d 0a  ol LogPreBind(..
5500: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5510: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5520: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
5530: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
5540: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 61         return Ha
5550: 73 46 6c 61 67 73 28 66 6c 61 67 73 2c 20 53 51  sFlags(flags, SQ
5560: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5570: 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64 29 3b  ags.LogPreBind);
5580: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5590: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
55a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
55e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
55f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
5600: 65 72 6d 69 6e 65 73 20 69 66 20 70 61 72 61 6d  ermines if param
5610: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f  eter binding sho
5620: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
5630: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5640: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5650: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
5660: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
5670: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
5680: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
5690: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
56a0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
56b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
56c0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
56d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
56e0: 7a 65 72 6f 20 69 66 20 74 68 65 20 70 61 72 61  zero if the para
56f0: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
5700: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
5710: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
5720: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
5730: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
5740: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
5750: 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a 20 20 20  ol LogBind(..   
5760: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
5770: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
5780: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
5790: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
57a0: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
57b0: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
57c0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
57d0: 2e 4c 6f 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20  .LogBind);..    
57e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
57f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5830: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
5840: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5850: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
5860: 73 20 69 66 20 61 6e 20 65 78 63 65 70 74 69 6f  s if an exceptio
5870: 6e 20 69 6e 20 61 20 6e 61 74 69 76 65 20 63 61  n in a native ca
5880: 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 62 65  llback should be
5890: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
58a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
58b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
58c0: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
58d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
58e0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
58f0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5900: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5910: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5920: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5930: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5940: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5950: 66 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20  f the exception 
5960: 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64  should be logged
5970: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
5980: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
5990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
59a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
59b0: 62 6f 6f 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b  bool LogCallback
59c0: 45 78 63 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20  Exceptions(..   
59d0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
59e0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
59f0: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
5a00: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
5a10: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
5a20: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
5a30: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5a40: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
5a50: 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ption);..      }
5a60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ab0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5ad0: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5ae0: 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72  f backup API err
5af0: 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ors should be lo
5b00: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
5b10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5b20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5b30: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
5b40: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
5b50: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5b60: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5b70: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5b80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5b90: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5ba0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5bb0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5bc0: 68 65 20 62 61 63 6b 75 70 20 41 50 49 20 65 72  he backup API er
5bd0: 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ror should be lo
5be0: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
5bf0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
5c00: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
5c10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5c20: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b  tic bool LogBack
5c30: 75 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  up(..          S
5c40: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
5c50: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
5c60: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
5c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5c80: 72 6e 20 48 61 73 46 6c 61 67 73 28 66 6c 61 67  rn HasFlags(flag
5c90: 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  s, SQLiteConnect
5ca0: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b  ionFlags.LogBack
5cb0: 75 70 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  up);..      }...
5cc0: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
5cd0: 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
5ce0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5d30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
5d50: 72 6d 69 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e  rmines if loggin
5d60: 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  g for the <see c
5d70: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
5d80: 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a  e" /> class is..
5d90: 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c        /// disabl
5da0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
5db0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5dc0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5dd0: 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20  ="flags">..     
5de0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61   /// The flags a
5df0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
5e00: 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  he parent connec
5e10: 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20  tion object...  
5e20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
5e40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
5e50: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67   Non-zero if log
5e60: 67 69 6e 67 20 66 6f 72 20 74 68 65 20 3c 73 65  ging for the <se
5e70: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
5e80: 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 69  dule" /> class i
5e90: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 73  s..      /// dis
5ea0: 61 62 6c 65 64 3b 20 6f 74 68 65 72 77 69 73 65  abled; otherwise
5eb0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
5ec0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5ed0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
5ee0: 61 74 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d  atic bool NoLogM
5ef0: 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
5f00: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
5f10: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
5f20: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
5f30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
5f40: 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28 66  eturn HasFlags(f
5f50: 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  lags, SQLiteConn
5f60: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f  ectionFlags.NoLo
5f70: 67 4d 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20  gModule);..     
5f80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fd0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5ff0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
6000: 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   if <see cref="S
6010: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
6020: 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65  errors should be
6030: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
6040: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6050: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6060: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
6070: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
6080: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
6090: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
60a0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
60b0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
60c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
60d0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
60e0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
60f0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
6100: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
6110: 3e 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62  > error should b
6120: 65 20 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20  e logged;..     
6130: 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20   /// otherwise, 
6140: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
6150: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6160: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6170: 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c  ic bool LogModul
6180: 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
6190: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
61a0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
61b0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
61c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
61d0: 72 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28  return HasFlags(
61e0: 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e  flags, SQLiteCon
61f0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
6200: 4d 6f 64 75 6c 65 45 72 72 6f 72 29 3b 0d 0a 20  ModuleError);.. 
6210: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6270: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6280: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
6290: 69 6e 65 73 20 69 66 20 3c 73 65 65 20 63 72 65  ines if <see cre
62a0: 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
62b0: 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 73 20 73   /> exceptions s
62c0: 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20  hould be..      
62d0: 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20  /// logged...   
62e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
62f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
6300: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
6310: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6320: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
6330: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
6340: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
6350: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
6360: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6370: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6380: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
6390: 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20 63 72  o if the <see cr
63a0: 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
63b0: 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 20 73  " /> exception s
63c0: 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20  hould be..      
63d0: 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65  /// logged; othe
63e0: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
63f0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6400: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
6410: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
6420: 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f  ogModuleExceptio
6430: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  n(..          SQ
6440: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
6450: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
6460: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
6470: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
6480: 6e 20 48 61 73 46 6c 61 67 73 28 66 6c 61 67 73  n HasFlags(flags
6490: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
64a0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
64b0: 65 45 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20  eException);..  
64c0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
64d0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
64e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6520: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6530: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6540: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
6550: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
6560: 73 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e  ss is running on
6570: 20 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64   one of the Wind
6580: 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b  ows..      /// [
6590: 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d  sub-]platforms..
65a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
65b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
65c0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
65d0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77    /// Non-zero w
65e0: 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57  hen running on W
65f0: 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73  indows; otherwis
6600: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
6610: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
6620: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
6630: 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e  tatic bool IsWin
6640: 64 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  dows()..      {.
6650: 0a 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66  .          Platf
6660: 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64  ormID platformId
6670: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f   = Environment.O
6680: 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72  SVersion.Platfor
6690: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  m;....          
66a0: 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20  if ((platformId 
66b0: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
66c0: 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20  n32S) ||..      
66d0: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
66e0: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
66f0: 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20  D.Win32Windows) 
6700: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
6710: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
6720: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
6730: 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  2NT) ||..       
6740: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
6750: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
6760: 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20  .WinCE))..      
6770: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6780: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
6790: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
67a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
67b0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
67c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6820: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6830: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20    /// This is a 
6840: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
6850: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
6860: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e  ee cref="String.
6870: 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72  Format(IFormatPr
6880: 6f 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62  ovider,String,Ob
6890: 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68  ject[])" /> meth
68a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f  od...      /// O
68b0: 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74  n Mono, it has t
68c0: 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f  o call the metho
68d0: 64 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f  d overload witho
68e0: 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ut the..      //
68f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f  / <see cref="IFo
6900: 72 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e  rmatProvider" />
6910: 20 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20   parameter, due 
6920: 74 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f  to a bug in Mono
6930: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6940: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6950: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6960: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
6970: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73    /// This is us
6980: 65 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73  ed for culture-s
6990: 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69  pecific formatti
69a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
69b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
69c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
69d0: 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20  format">..      
69e0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73  /// The format s
69f0: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tring...      //
6a00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6a10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6a20: 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20  e="args">..     
6a30: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68   /// An array th
6a40: 65 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72  e objects to for
6a50: 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mat...      /// 
6a60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6a70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6a80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73       /// The res
6a90: 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a  ulting string...
6aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
6ab0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
6ac0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
6ad0: 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ng StringFormat(
6ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f 72  ..          IFor
6af0: 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76  matProvider prov
6b00: 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  ider,..         
6b10: 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d   string format,.
6b20: 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d  .          param
6b30: 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d  s object[] args.
6b40: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
6b50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6b60: 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a   if (IsMono())..
6b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6b80: 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d  turn String.Form
6b90: 61 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  at(format, args)
6ba0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  ;..          els
6bb0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
6bc0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
6bd0: 6f 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20  ormat(provider, 
6be0: 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a  format, args);..
6bf0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
6c00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6c10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6c60: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
6c70: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
6c80: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
6c90: 63 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c  c string ToDispl
6ca0: 61 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ayString(..     
6cb0: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
6cc0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
6cd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6ce0: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
6cf0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6d00: 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73 70       return Disp
6d10: 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a  layNullObject;..
6d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6d30: 6e 67 20 73 74 72 69 6e 67 56 61 6c 75 65 20 3d  ng stringValue =
6d40: 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28   value.ToString(
6d50: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6d60: 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e  if (stringValue.
6d70: 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  Length == 0)..  
6d80: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6d90: 72 6e 20 44 69 73 70 6c 61 79 45 6d 70 74 79 53  rn DisplayEmptyS
6da0: 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20 20 20 20  tring;....      
6db0: 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61      if (stringVa
6dc0: 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 53  lue.IndexOfAny(S
6dd0: 70 61 63 65 43 68 61 72 73 29 20 3c 20 30 29 0d  paceChars) < 0).
6de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
6df0: 65 74 75 72 6e 20 73 74 72 69 6e 67 56 61 6c 75  eturn stringValu
6e00: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
6e10: 72 65 74 75 72 6e 20 48 65 6c 70 65 72 4d 65 74  return HelperMet
6e20: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
6e30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
6e40: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
6e50: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20  variantCulture, 
6e60: 44 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  DisplayStringFor
6e70: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
6e80: 20 20 20 20 73 74 72 69 6e 67 56 61 6c 75 65 29      stringValue)
6e90: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
6ea0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6ef0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
6f00: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
6f10: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
6f20: 20 20 20 20 20 20 20 20 41 72 72 61 79 20 61 72          Array ar
6f30: 72 61 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ray..          )
6f40: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
6f50: 20 20 20 20 20 69 66 20 28 61 72 72 61 79 20 3d       if (array =
6f60: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
6f70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69         return Di
6f80: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 3b 0d  splayNullArray;.
6f90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
6fa0: 28 61 72 72 61 79 2e 4c 65 6e 67 74 68 20 3d 3d  (array.Length ==
6fb0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
6fc0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
6fd0: 79 45 6d 70 74 79 41 72 72 61 79 3b 0d 0a 0d 0a  yEmptyArray;....
6fe0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
6ff0: 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d  Builder result =
7000: 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64   new StringBuild
7010: 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  er();....       
7020: 20 20 20 66 6f 72 65 61 63 68 20 28 6f 62 6a 65     foreach (obje
7030: 63 74 20 76 61 6c 75 65 20 69 6e 20 61 72 72 61  ct value in arra
7040: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  y)..          {.
7050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
7060: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
7070: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
7080: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
7090: 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e 74 53 65  Append(ElementSe
70a0: 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20  parator);....   
70b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
70c0: 74 2e 41 70 70 65 6e 64 28 54 6f 44 69 73 70 6c  t.Append(ToDispl
70d0: 61 79 53 74 72 69 6e 67 28 76 61 6c 75 65 29 29  ayString(value))
70e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
70f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7100: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20  result.Length > 
7110: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  0)..          {.
7120: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
7130: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7150: 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20 41  sult.Insert(0, A
7160: 72 72 61 79 4f 70 65 6e 2e 54 6f 53 74 72 69 6e  rrayOpen.ToStrin
7170: 67 28 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  g());..#else..  
7180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
7190: 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72  lt.Insert(0, Arr
71a0: 61 79 4f 70 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  ayOpen);..#endif
71b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
71c0: 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28    result.Append(
71d0: 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d 0a 20 20  ArrayClose);..  
71e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
71f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
7200: 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b  sult.ToString();
7210: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
7220: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
7230: 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
7240: 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e  /....  #region N
72a0: 61 74 69 76 65 20 4c 69 62 72 61 72 79 20 48 65  ative Library He
72b0: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f  lper Class..  //
72c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
72d0: 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63  // This static c
72e0: 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20 61 20  lass provides a 
72f0: 74 68 69 6e 20 77 72 61 70 70 65 72 20 61 72 6f  thin wrapper aro
7300: 75 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  und the native l
7310: 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f  ibrary..  /// lo
7320: 61 64 69 6e 67 20 66 65 61 74 75 72 65 73 20 6f  ading features o
7330: 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  f the underlying
7340: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f   platform...  //
7350: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7360: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7370: 63 6c 61 73 73 20 4e 61 74 69 76 65 4c 69 62 72  class NativeLibr
7380: 61 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a  aryHelper..  {..
7390: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
73a0: 69 76 61 74 65 20 44 65 6c 65 67 61 74 65 73 0d  ivate Delegates.
73b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
73c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
73d0: 54 68 69 73 20 64 65 6c 65 67 61 74 65 20 69 73  This delegate is
73e0: 20 75 73 65 64 20 74 6f 20 77 72 61 70 20 74 68   used to wrap th
73f0: 65 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61  e concept of loa
7400: 64 69 6e 67 20 61 20 6e 61 74 69 76 65 0d 0a 20  ding a native.. 
7410: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
7420: 2c 20 62 61 73 65 64 20 6f 6e 20 61 20 66 69 6c  , based on a fil
7430: 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65 74 75  e name, and retu
7440: 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64 65 64  rning the loaded
7450: 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f   module..      /
7460: 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  // handle...    
7470: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7490: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
74a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
74b0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
74c0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
74d0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
74e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
74f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
7500: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
7510: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
7520: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
7530: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
7540: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
7550: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
7560: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7570: 70 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65  private delegate
7580: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
7590: 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  aryCallback(..  
75a0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
75b0: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29  ileName..      )
75c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
7620: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7630: 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 65 6c 65     /// This dele
7640: 67 61 74 65 20 69 73 20 75 73 65 64 20 74 6f 20  gate is used to 
7650: 77 72 61 70 20 74 68 65 20 63 6f 6e 63 65 70 74  wrap the concept
7660: 20 6f 66 20 71 75 65 72 79 69 6e 67 20 74 68 65   of querying the
7670: 20 6d 61 63 68 69 6e 65 0d 0a 20 20 20 20 20 20   machine..      
7680: 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
7690: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
76a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
76b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
76c0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
76d0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69     /// The machi
76e0: 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ne name for the 
76f0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
7700: 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69  -OR- null on fai
7710: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
7720: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7730: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
7740: 61 74 65 20 73 74 72 69 6e 67 20 47 65 74 4d 61  ate string GetMa
7750: 63 68 69 6e 65 43 61 6c 6c 62 61 63 6b 28 29 3b  chineCallback();
7760: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
7770: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
77d0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
77e0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
77f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7800: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
7810: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
7820: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
7830: 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20  rary file using 
7840: 74 68 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20  the Win32..     
7850: 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20   /// API...     
7860: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7870: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
7880: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
7890: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
78a0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
78b0: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
78c0: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
78d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
78e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
78f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7900: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
7910: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
7920: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
7930: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
7940: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7950: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
7960: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
7970: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7980: 57 69 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Win32(..        
7990: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
79a0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
79b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
79c0: 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
79d0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
79e0: 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  32.LoadLibrary(f
79f0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
7a00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
7a60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7a70: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
7a80: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68   to determine th
7a90: 65 20 6d 61 63 68 69 6e 65 20 6e 61 6d 65 20 6f  e machine name o
7aa0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
7ab0: 6f 63 65 73 73 20 75 73 69 6e 67 0d 0a 20 20 20  ocess using..   
7ac0: 20 20 20 2f 2f 2f 20 74 68 65 20 57 69 6e 33 32     /// the Win32
7ad0: 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   API...      ///
7ae0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7af0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7b00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
7b10: 6d 61 63 68 69 6e 65 20 6e 61 6d 65 20 66 6f 72  machine name for
7b20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
7b30: 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f  cess -OR- null o
7b40: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
7b50: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7b60: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
7b70: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
7b80: 74 4d 61 63 68 69 6e 65 57 69 6e 33 32 28 29 0d  tMachineWin32().
7b90: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
7ba0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7bb0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20    // NOTE: When 
7bc0: 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f  running on Windo
7bd0: 77 73 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75  ws, attempt to u
7be0: 73 65 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  se the native Wi
7bf0: 6e 33 32 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n32..          /
7c00: 2f 20 20 20 20 20 20 20 41 50 49 20 66 75 6e 63  /       API func
7c10: 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f  tion (via P/Invo
7c20: 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f  ke) that can pro
7c30: 76 69 64 65 20 75 73 20 77 69 74 68 20 74 68 65  vide us with the
7c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7c50: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
7c60: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
7c70: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7c80: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
7c90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7ca0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
7cb0: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 53  veMethodsWin32.S
7cc0: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
7cd0: 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  mInfo;....      
7ce0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7cf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
7d00: 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79 73  E: Query the sys
7d10: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
7d20: 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68  via P/Invoke, th
7d30: 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  us..            
7d40: 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
7d50: 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
7d60: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7d70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
7d80: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
7d90: 65 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74 53  ethodsWin32.GetS
7da0: 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79  ystemInfo(out sy
7db0: 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20  stemInfo);....  
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7de0: 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
7df0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
7e00: 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
7e10: 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
7e20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7e40: 75 72 6e 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77  urn systemInfo.w
7e50: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
7e60: 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
7e70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
7e80: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
7e90: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7ea0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
7eb0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
7ec0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7ed0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
7ee0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
7ef0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7f40: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7f50: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7f60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
7f70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7f80: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
7f90: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
7fa0: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66 69  ative library fi
7fb0: 6c 65 20 75 73 69 6e 67 20 74 68 65 20 50 4f 53  le using the POS
7fc0: 49 58 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50  IX..      /// AP
7fd0: 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  I...      /// </
7fe0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7ff0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8000: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
8010: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
8020: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69  name of the nati
8030: 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f  ve library to lo
8040: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
8050: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
8060: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8070: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
8080: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
8090: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
80a0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
80b0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
80c0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
80d0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
80e0: 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f  static IntPtr Lo
80f0: 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78 28 0d  adLibraryPosix(.
8100: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
8110: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
8120: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
8130: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
8140: 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
8150: 65 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c 6f 70  ethodsPosix.dlop
8160: 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
8170: 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 55 6e 73     fileName, Uns
8180: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8190: 50 6f 73 69 78 2e 52 54 4c 44 5f 44 45 46 41 55  Posix.RTLD_DEFAU
81a0: 4c 54 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  LT);..      }...
81b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8200: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
8210: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8220: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64  // Attempts to d
8230: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61 63  etermine the mac
8240: 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  hine name of the
8250: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
8260: 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f   using..      //
8270: 2f 20 74 68 65 20 50 4f 53 49 58 20 41 50 49 2e  / the POSIX API.
8280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8290: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
82a0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
82b0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69     /// The machi
82c0: 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ne name for the 
82d0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
82e0: 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69  -OR- null on fai
82f0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
8300: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
8310: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
8320: 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63 68  c string GetMach
8330: 69 6e 65 50 6f 73 69 78 28 29 0d 0a 20 20 20 20  inePosix()..    
8340: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
8350: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
8360: 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69  NOTE: When runni
8370: 6e 67 20 6f 6e 20 50 4f 53 49 58 20 28 6e 6f 6e  ng on POSIX (non
8380: 2d 57 69 6e 64 6f 77 73 29 2c 20 61 74 74 65 6d  -Windows), attem
8390: 70 74 20 74 6f 20 71 75 65 72 79 20 74 68 65 0d  pt to query the.
83a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
83b0: 20 20 20 20 6d 61 63 68 69 6e 65 20 66 72 6f 6d      machine from
83c0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
83d0: 79 73 74 65 6d 20 76 69 61 20 75 6e 61 6d 65 28  ystem via uname(
83e0: 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  )...          //
83f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
8400: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
8410: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
8420: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50  feNativeMethodsP
8430: 6f 73 69 78 2e 75 74 73 6e 61 6d 65 20 75 74 73  osix.utsname uts
8440: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
8450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8460: 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65   (UnsafeNativeMe
8470: 74 68 6f 64 73 50 6f 73 69 78 2e 47 65 74 4f 73  thodsPosix.GetOs
8480: 56 65 72 73 69 6f 6e 49 6e 66 6f 28 72 65 66 20  VersionInfo(ref 
8490: 75 74 73 4e 61 6d 65 29 20 26 26 0d 0a 20 20 20  utsName) &&..   
84a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
84b0: 75 74 73 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  utsName != null)
84c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
84d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
84e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 74 73        return uts
84f0: 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 3b 0d 0a 20  Name.machine;.. 
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8510: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
8520: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
8530: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8540: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
8550: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
8560: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8570: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
8580: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
8590: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
85a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
8600: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
8610: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
8620: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8630: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
8640: 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66   load the specif
8650: 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ied native libra
8660: 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  ry file...      
8670: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8680: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
8690: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
86a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
86b0: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
86c0: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
86d0: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
86e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
86f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8700: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8710: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
8720: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
8730: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
8740: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
8750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
8760: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75  turns>..      pu
8770: 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
8780: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 0d  tr LoadLibrary(.
8790: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
87a0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
87b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
87c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f 61 64  ..          Load
87d0: 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 20  LibraryCallback 
87e0: 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c  callback = LoadL
87f0: 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a  ibraryWin32;....
8800: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8810: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8820: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 48            if (!H
8830: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57  elperMethods.IsW
8840: 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  indows())..     
8850: 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63           callbac
8860: 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 50  k = LoadLibraryP
8870: 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  osix;..#endif...
8880: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8890: 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65 4e  n callback(fileN
88a0: 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ame);..      }..
88b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
8910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8920: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
8930: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
8940: 63 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68  chine name of th
8950: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
8960: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
8970: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8980: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
8990: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63       /// The mac
89a0: 68 69 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  hine name for th
89b0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
89c0: 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66  s -OR- null on f
89d0: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
89e0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
89f0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
8a00: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63  ic string GetMac
8a10: 68 69 6e 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  hine()..      {.
8a20: 0a 20 20 20 20 20 20 20 20 20 20 47 65 74 4d 61  .          GetMa
8a30: 63 68 69 6e 65 43 61 6c 6c 62 61 63 6b 20 63 61  chineCallback ca
8a40: 6c 6c 62 61 63 6b 20 3d 20 47 65 74 4d 61 63 68  llback = GetMach
8a50: 69 6e 65 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66  ineWin32;....#if
8a60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8a70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8a80: 20 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70         if (!Help
8a90: 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
8aa0: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
8ab0: 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d        callback =
8ac0: 20 47 65 74 4d 61 63 68 69 6e 65 50 6f 73 69 78   GetMachinePosix
8ad0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
8ae0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
8af0: 6c 6c 62 61 63 6b 28 29 3b 0d 0a 20 20 20 20 20  llback();..     
8b00: 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
8b10: 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  gion..  }..  #en
8b20: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b80: 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65  #region Unmanage
8b90: 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64  d Interop Method
8ba0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28  s Static Class (
8bb0: 50 4f 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41  POSIX)..#if !PLA
8bc0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8bd0: 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73  MEWORK..  /// <s
8be0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
8bf0: 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72  his class declar
8c00: 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  es P/Invoke meth
8c10: 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69  ods to call nati
8c20: 76 65 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a  ve POSIX APIs...
8c30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8c40: 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d  ..  [SuppressUnm
8c50: 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69  anagedCodeSecuri
8c60: 74 79 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ty]..  internal 
8c70: 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73  static class Uns
8c80: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8c90: 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20  Posix..  {..    
8ca0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8cb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8cc0: 73 74 72 75 63 74 75 72 65 20 69 73 20 75 73 65  structure is use
8cd0: 64 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  d when running o
8ce0: 6e 20 50 4f 53 49 58 20 6f 70 65 72 61 74 69 6e  n POSIX operatin
8cf0: 67 20 73 79 73 74 65 6d 73 0d 0a 20 20 20 20 20  g systems..     
8d00: 20 2f 2f 2f 20 74 6f 20 73 74 6f 72 65 20 69 6e   /// to store in
8d10: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
8d20: 74 68 65 20 63 75 72 72 65 6e 74 20 6d 61 63 68  the current mach
8d30: 69 6e 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ine, including t
8d40: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 75  he..      /// hu
8d50: 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 6e 61 6d  man readable nam
8d60: 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69  e of the operati
8d70: 6e 67 20 73 79 73 74 65 6d 20 61 73 20 77 65 6c  ng system as wel
8d80: 6c 20 61 73 20 74 68 61 74 20 6f 66 0d 0a 20 20  l as that of..  
8d90: 20 20 20 20 2f 2f 2f 20 74 68 65 20 75 6e 64 65      /// the unde
8da0: 72 6c 79 69 6e 67 20 68 61 72 64 77 61 72 65 2e  rlying hardware.
8db0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8dc0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
8dd0: 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
8de0: 61 73 73 20 75 74 73 6e 61 6d 65 0d 0a 20 20 20  ass utsname..   
8df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8e00: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 73 79  public string sy
8e10: 73 6e 61 6d 65 3b 20 20 2f 2a 20 4e 61 6d 65 20  sname;  /* Name 
8e20: 6f 66 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e  of this implemen
8e30: 74 61 74 69 6f 6e 20 6f 66 0d 0a 20 20 20 20 20  tation of..     
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
8e60: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
8e70: 73 74 65 6d 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  stem. */..      
8e80: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
8e90: 67 20 6e 6f 64 65 6e 61 6d 65 3b 20 2f 2a 20 4e  g nodename; /* N
8ea0: 61 6d 65 20 6f 66 20 74 68 69 73 20 6e 6f 64 65  ame of this node
8eb0: 20 77 69 74 68 69 6e 20 74 68 65 0d 0a 20 20 20   within the..   
8ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ee0: 2a 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73  * communications
8ef0: 20 6e 65 74 77 6f 72 6b 20 74 6f 20 77 68 69 63   network to whic
8f00: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f20: 20 20 20 20 20 20 2a 20 74 68 69 73 20 6e 6f 64        * this nod
8f30: 65 20 69 73 20 61 74 74 61 63 68 65 64 2c 20 69  e is attached, i
8f40: 66 20 61 6e 79 2e 20 2a 2f 0d 0a 20 20 20 20 20  f any. */..     
8f50: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
8f60: 6e 67 20 72 65 6c 65 61 73 65 3b 20 20 2f 2a 20  ng release;  /* 
8f70: 43 75 72 72 65 6e 74 20 72 65 6c 65 61 73 65 20  Current release 
8f80: 6c 65 76 65 6c 20 6f 66 20 74 68 69 73 0d 0a 20  level of this.. 
8f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 20 20 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69    * implementati
8fc0: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
8fd0: 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
8fe0: 76 65 72 73 69 6f 6e 3b 20 20 2f 2a 20 43 75 72  version;  /* Cur
8ff0: 72 65 6e 74 20 76 65 72 73 69 6f 6e 20 6c 65 76  rent version lev
9000: 65 6c 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20  el of this..    
9010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a                 *
9030: 20 72 65 6c 65 61 73 65 2e 20 2a 2f 0d 0a 20 20   release. */..  
9040: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
9050: 74 72 69 6e 67 20 6d 61 63 68 69 6e 65 3b 20 20  tring machine;  
9060: 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 68  /* Name of the h
9070: 61 72 64 77 61 72 65 20 74 79 70 65 20 6f 6e 0d  ardware type on.
9080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90a0: 20 20 20 20 2a 20 77 68 69 63 68 20 74 68 65 20      * which the 
90b0: 73 79 73 74 65 6d 20 69 73 20 72 75 6e 6e 69 6e  system is runnin
90c0: 67 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  g. */..      }..
90d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
9130: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9140: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
9150: 72 65 20 69 73 20 70 61 73 73 65 64 20 64 69 72  re is passed dir
9160: 65 63 74 6c 79 20 74 6f 20 74 68 65 20 50 2f 49  ectly to the P/I
9170: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 6f 0d  nvoke method to.
9180: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 62 74 61 69  .      /// obtai
9190: 6e 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  n the informatio
91a0: 6e 20 61 62 6f 75 74 20 74 68 65 20 63 75 72 72  n about the curr
91b0: 65 6e 74 20 6d 61 63 68 69 6e 65 2c 20 69 6e 63  ent machine, inc
91c0: 6c 75 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  luding..      //
91d0: 2f 20 74 68 65 20 68 75 6d 61 6e 20 72 65 61 64  / the human read
91e0: 61 62 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  able name of the
91f0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
9200: 6d 20 61 73 20 77 65 6c 6c 20 61 73 0d 0a 20 20  m as well as..  
9210: 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 6f 66 20      /// that of 
9220: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 68  the underlying h
9230: 61 72 64 77 61 72 65 2e 0d 0a 20 20 20 20 20 20  ardware...      
9240: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9250: 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79        [StructLay
9260: 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
9270: 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
9280: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 75 63     private struc
9290: 74 20 75 74 73 6e 61 6d 65 5f 69 6e 74 65 72 6f  t utsname_intero
92a0: 70 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  p..      {..    
92b0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
92c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
92d0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 69 6e   following strin
92e0: 67 20 66 69 65 6c 64 73 20 73 68 6f 75 6c 64 20  g fields should 
92f0: 62 65 20 70 72 65 73 65 6e 74 20 69 6e 0d 0a 20  be present in.. 
9300: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9310: 20 20 74 68 69 73 20 62 75 66 66 65 72 2c 20 61    this buffer, a
9320: 6c 6c 20 6f 66 20 77 68 69 63 68 20 77 69 6c 6c  ll of which will
9330: 20 62 65 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61   be zero-termina
9340: 74 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ted:..          
9350: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 20 20 20 20 73 79 73 6e 61 6d 65 0d 0a 20        sysname.. 
9380: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93a0: 20 6e 6f 64 65 6e 61 6d 65 0d 0a 20 20 20 20 20   nodename..     
93b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6c               rel
93d0: 65 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  ease..          
93e0: 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  //              
93f0: 20 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e 0d          version.
9400: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9420: 20 20 20 6d 61 63 68 69 6e 65 0d 0a 20 20 20 20     machine..    
9430: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9440: 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
9450: 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 42 79 56  nmanagedType.ByV
9460: 61 6c 41 72 72 61 79 2c 20 53 69 7a 65 43 6f 6e  alArray, SizeCon
9470: 73 74 20 3d 20 34 30 39 36 29 5d 0d 0a 20 20 20  st = 4096)]..   
9480: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
9490: 74 65 5b 5d 20 62 75 66 66 65 72 3b 0d 0a 20 20  te[] buffer;..  
94a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
94b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20  ////////....    
9500: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9510: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
9520: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
9530: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
9540: 73 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69  s the native Uni
9550: 78 20 75 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f  x uname..      /
9560: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
9570: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
9580: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
9590: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
95a0: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
95b0: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
95c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
95d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
95e0: 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
95f0: 20 20 20 2f 2f 2f 20 53 74 72 75 63 74 75 72 65     /// Structure
9600: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 70 72   containing a pr
9610: 65 61 6c 6c 6f 63 61 74 65 64 20 62 79 74 65 20  eallocated byte 
9620: 62 75 66 66 65 72 20 74 6f 20 66 69 6c 6c 20 77  buffer to fill w
9630: 69 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ith the..      /
9640: 2f 2f 20 72 65 71 75 65 73 74 65 64 20 69 6e 66  // requested inf
9650: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ormation...     
9660: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9670: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9680: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5a 65  s>..      /// Ze
9690: 72 6f 20 66 6f 72 20 73 75 63 63 65 73 73 20 61  ro for success a
96a0: 6e 64 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72  nd less than zer
96b0: 6f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  o upon failure..
96c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
96d0: 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53  urns>..#if NET_S
96e0: 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20  TANDARD_20..    
96f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69    [DllImport("li
9700: 62 63 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  bc",..#else..   
9710: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
9720: 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e  _Internal",..#en
9730: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43  dif..          C
9740: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9750: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9760: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
9770: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9780: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 75 6e  ic extern int un
9790: 61 6d 65 28 6f 75 74 20 75 74 73 6e 61 6d 65 5f  ame(out utsname_
97a0: 69 6e 74 65 72 6f 70 20 6e 61 6d 65 29 3b 0d 0a  interop name);..
97b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
97c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9800: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9810: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9820: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
9830: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
9840: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
9850: 69 76 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e 0d  ive Unix dlopen.
9860: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
9870: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f  ion.  See the PO
9880: 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SIX documentatio
9890: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
98a0: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
98b0: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
98c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
98d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
98e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
98f0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
9900: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
9910: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
9920: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
9930: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
9940: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9950: 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20 20  e="mode">..     
9960: 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74 20 62   /// This must b
9970: 65 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20  e a combination 
9980: 6f 66 20 74 68 65 20 69 6e 64 69 76 69 64 75 61  of the individua
9990: 6c 20 62 69 74 20 66 6c 61 67 73 20 52 54 4c 44  l bit flags RTLD
99a0: 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f 2f  _LAZY,..      //
99b0: 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44  / RTLD_NOW, RTLD
99c0: 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72 20  _GLOBAL, and/or 
99d0: 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20  RTLD_LOCAL...   
99e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
99f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9a00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9a10: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
9a20: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
9a30: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
9a40: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
9a50: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
9a60: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45  returns>..#if NE
9a70: 54 5f 53 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20  T_STANDARD_20.. 
9a80: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
9a90: 22 6c 69 62 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d  "libdl",..#else.
9aa0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
9ab0: 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d  t("__Internal",.
9ac0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
9ad0: 20 20 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20     EntryPoint = 
9ae0: 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20  "dlopen",..     
9af0: 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76       CallingConv
9b00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9b10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9b20: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
9b30: 53 65 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20  Set.Ansi,..     
9b40: 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70       BestFitMapp
9b50: 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72  ing = false, Thr
9b60: 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68  owOnUnmappableCh
9b70: 61 72 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20  ar = true,..    
9b80: 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72        SetLastErr
9b90: 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20  or = true)]..   
9ba0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9bb0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
9bc0: 20 64 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66   dlopen(string f
9bd0: 69 6c 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64  ileName, int mod
9be0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  e);....      ///
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9c40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9c50: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
9c60: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
9c70: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
9c80: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c  e native Unix dl
9c90: 63 6c 6f 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  close..      ///
9ca0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
9cb0: 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65  the POSIX docume
9cc0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c  ntation for full
9cd0: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
9ce0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64   it..      /// d
9cf0: 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oes...      /// 
9d00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9d10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9d20: 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
9d30: 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 6e 64 6c     /// The handl
9d40: 65 20 74 6f 20 74 68 65 20 6c 6f 61 64 65 64 20  e to the loaded 
9d50: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 0d  native library..
9d60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
9d70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
9d80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9d90: 2f 2f 2f 20 5a 65 72 6f 20 75 70 6f 6e 20 73 75  /// Zero upon su
9da0: 63 63 65 73 73 20 2d 4f 52 2d 20 6e 6f 6e 2d 7a  ccess -OR- non-z
9db0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
9dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
9dd0: 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53  urns>..#if NET_S
9de0: 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20  TANDARD_20..    
9df0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69    [DllImport("li
9e00: 62 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20  bdl",..#else..  
9e10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
9e20: 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65  __Internal",..#e
9e30: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9e40: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c  EntryPoint = "dl
9e50: 63 6c 6f 73 65 22 2c 0d 0a 20 20 20 20 20 20 20  close",..       
9e60: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
9e70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9e80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
9e90: 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74  SetLastError = t
9ea0: 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  rue)]..      int
9eb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9ec0: 65 72 6e 20 69 6e 74 20 64 6c 63 6c 6f 73 65 28  ern int dlclose(
9ed0: 49 6e 74 50 74 72 20 6d 6f 64 75 6c 65 29 3b 0d  IntPtr module);.
9ee0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f30: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
9f40: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
9f50: 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  tants..      ///
9f60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9f70: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
9f80: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
9f90: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
9fa0: 20 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20   lazily...      
9fb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9fc0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
9fd0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41  onst int RTLD_LA
9fe0: 5a 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20  ZY = 0x1;....   
9ff0: 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
a040: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a050: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
a060: 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e   use with dlopen
a070: 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f  (), bind functio
a080: 6e 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74  n calls immediat
a090: 65 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ely...      /// 
a0a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a0b0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
a0c0: 20 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20   int RTLD_NOW = 
a0d0: 30 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  0x2;....      //
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a120: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a130: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a140: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
a150: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d  with dlopen(), m
a160: 61 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62  ake symbols glob
a170: 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d  ally available..
a180: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a190: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
a1a0: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20  ernal const int 
a1b0: 52 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78  RTLD_GLOBAL = 0x
a1c0: 31 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  100;....      //
a1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a220: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a230: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
a240: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f  with dlopen(), o
a250: 70 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f  pposite of RTLD_
a260: 47 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20  GLOBAL, and the 
a270: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
a280: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a290: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
a2a0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f  onst int RTLD_LO
a2b0: 43 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a  CAL = 0x000;....
a2c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a310: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a320: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a330: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
a340: 70 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75  pen(), the defau
a350: 6c 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73  lts used by this
a360: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
a370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a380: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
a390: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
a3a0: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
a3b0: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
a3c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
a3d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
a430: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
a440: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
a450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a460: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  / These are the 
a470: 63 68 61 72 61 63 74 65 72 73 20 75 73 65 64 20  characters used 
a480: 74 6f 20 73 65 70 61 72 61 74 65 20 74 68 65 20  to separate the 
a490: 73 74 72 69 6e 67 20 66 69 65 6c 64 73 20 77 69  string fields wi
a4a0: 74 68 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  thin..      /// 
a4b0: 74 68 65 20 72 61 77 20 62 75 66 66 65 72 20 72  the raw buffer r
a4c0: 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 3c  eturned by the <
a4d0: 73 65 65 20 63 72 65 66 3d 22 75 6e 61 6d 65 22  see cref="uname"
a4e0: 20 2f 3e 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74   /> P/Invoke met
a4f0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
a500: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a510: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
a520: 20 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d   readonly char[]
a530: 20 75 74 73 4e 61 6d 65 53 65 70 61 72 61 74 6f   utsNameSeparato
a540: 72 73 20 3d 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a  rs = { '\0' };..
a550: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
a560: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
a5c0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
a5d0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
a5e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a5f0: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
a600: 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
a610: 6f 75 6e 64 20 74 68 65 20 3c 73 65 65 20 63 72  ound the <see cr
a620: 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20 50 2f  ef="uname" /> P/
a630: 49 6e 76 6f 6b 65 0d 0a 20 20 20 20 20 20 2f 2f  Invoke..      //
a640: 2f 20 6d 65 74 68 6f 64 20 74 68 61 74 20 65 78  / method that ex
a650: 74 72 61 63 74 73 20 61 6e 64 20 72 65 74 75 72  tracts and retur
a660: 6e 73 20 74 68 65 20 68 75 6d 61 6e 20 72 65 61  ns the human rea
a670: 64 61 62 6c 65 20 73 74 72 69 6e 67 73 20 66 72  dable strings fr
a680: 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  om..      /// th
a690: 65 20 72 61 77 20 62 75 66 66 65 72 2e 0d 0a 20  e raw buffer... 
a6a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a6b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
a6c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 75 74 73 4e  param name="utsN
a6d0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
a6e0: 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65 2c   This structure,
a6f0: 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 20   which contains 
a700: 73 74 72 69 6e 67 73 2c 20 77 69 6c 6c 20 62 65  strings, will be
a710: 20 66 69 6c 6c 65 64 20 62 61 73 65 64 20 6f 6e   filled based on
a720: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
a730: 64 61 74 61 20 70 6c 61 63 65 64 20 69 6e 20 74  data placed in t
a740: 68 65 20 72 61 77 20 62 75 66 66 65 72 20 72 65  he raw buffer re
a750: 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 3c 73  turned by the <s
a760: 65 65 20 63 72 65 66 3d 22 75 6e 61 6d 65 22 20  ee cref="uname" 
a770: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 2f  />..      /// P/
a780: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a  Invoke method...
a790: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
a7a0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
a7b0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
a7c0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
a7d0: 20 73 75 63 63 65 73 73 3b 20 6f 74 68 65 72 77   success; otherw
a7e0: 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
a7f0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
a800: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
a810: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 47 65 74   static bool Get
a820: 4f 73 56 65 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a  OsVersionInfo(..
a830: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 75 74            ref ut
a840: 73 6e 61 6d 65 20 75 74 73 4e 61 6d 65 0d 0a 20  sname utsName.. 
a850: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a860: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
a870: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  .              u
a890: 74 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 20 75  tsname_interop u
a8a0: 74 66 4e 61 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a  tfNameInterop;..
a8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8c0: 69 66 20 28 75 6e 61 6d 65 28 6f 75 74 20 75 74  if (uname(out ut
a8d0: 66 4e 61 6d 65 49 6e 74 65 72 6f 70 29 20 3c 20  fNameInterop) < 
a8e0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
a8f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
a900: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
a910: 20 20 20 20 20 69 66 20 28 75 74 66 4e 61 6d 65       if (utfName
a920: 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 20 3d  Interop.buffer =
a930: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a940: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a950: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
a960: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a970: 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67 20   bufferAsString 
a980: 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e  = Encoding.UTF8.
a990: 47 65 74 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  GetString(..    
a9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74                ut
a9b0: 66 4e 61 6d 65 49 6e 74 65 72 6f 70 2e 62 75 66  fNameInterop.buf
a9c0: 66 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  fer);....       
a9d0: 20 20 20 20 20 20 20 69 66 20 28 28 62 75 66 66         if ((buff
a9e0: 65 72 41 73 53 74 72 69 6e 67 20 3d 3d 20 6e 75  erAsString == nu
a9f0: 6c 6c 29 20 7c 7c 20 28 75 74 73 4e 61 6d 65 53  ll) || (utsNameS
aa00: 65 70 61 72 61 74 6f 72 73 20 3d 3d 20 6e 75 6c  eparators == nul
aa10: 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
aa20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
aa30: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
aa40: 20 20 20 20 20 20 62 75 66 66 65 72 41 73 53 74        bufferAsSt
aa50: 72 69 6e 67 20 3d 20 62 75 66 66 65 72 41 73 53  ring = bufferAsS
aa60: 74 72 69 6e 67 2e 54 72 69 6d 28 75 74 73 4e 61  tring.Trim(utsNa
aa70: 6d 65 53 65 70 61 72 61 74 6f 72 73 29 3b 0d 0a  meSeparators);..
aa80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa90: 73 74 72 69 6e 67 5b 5d 20 70 61 72 74 73 20 3d  string[] parts =
aaa0: 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67 2e   bufferAsString.
aab0: 53 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20  Split(..        
aac0: 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61 6d            utsNam
aad0: 65 53 65 70 61 72 61 74 6f 72 73 2c 20 53 74 72  eSeparators, Str
aae0: 69 6e 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73 2e  ingSplitOptions.
aaf0: 52 65 6d 6f 76 65 45 6d 70 74 79 45 6e 74 72 69  RemoveEmptyEntri
ab00: 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  es);....        
ab10: 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73 20        if (parts 
ab20: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ab40: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
ab50: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
ab60: 6d 65 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 20  me localUtsName 
ab70: 3d 20 6e 65 77 20 75 74 73 6e 61 6d 65 28 29 3b  = new utsname();
ab80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ab90: 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e 67    if (parts.Leng
aba0: 74 68 20 3e 3d 20 31 29 0d 0a 20 20 20 20 20 20  th >= 1)..      
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61              loca
abc0: 6c 55 74 73 4e 61 6d 65 2e 73 79 73 6e 61 6d 65  lUtsName.sysname
abd0: 20 3d 20 70 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a   = parts[0];....
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
abf0: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
ac00: 3d 20 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2)..          
ac10: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
ac20: 4e 61 6d 65 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20  Name.nodename = 
ac30: 70 61 72 74 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20  parts[1];....   
ac40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ac50: 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 33  arts.Length >= 3
ac60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ac70: 20 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d       localUtsNam
ac80: 65 2e 72 65 6c 65 61 73 65 20 3d 20 70 61 72 74  e.release = part
ac90: 73 5b 32 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[2];....       
aca0: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
acb0: 2e 4c 65 6e 67 74 68 20 3e 3d 20 34 29 0d 0a 20  .Length >= 4).. 
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acd0: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 76 65   localUtsName.ve
ace0: 72 73 69 6f 6e 20 3d 20 70 61 72 74 73 5b 33 5d  rsion = parts[3]
acf0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ad00: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
ad10: 67 74 68 20 3e 3d 20 35 29 0d 0a 20 20 20 20 20  gth >= 5)..     
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
ad30: 61 6c 55 74 73 4e 61 6d 65 2e 6d 61 63 68 69 6e  alUtsName.machin
ad40: 65 20 3d 20 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d  e = parts[4];...
ad50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  .              u
ad60: 74 73 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 55 74  tsName = localUt
ad70: 73 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  sName;..        
ad80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
ad90: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
ada0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
adb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
adc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
add0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
ade0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
adf0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
ae00: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  se;..      }..  
ae10: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ae20: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
ae30: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ae90: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
aea0: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
aeb0: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
aec0: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
aed0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
aee0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
aef0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
af00: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
af10: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
af20: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
af30: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
af40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
af50: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
af60: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
af70: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
af80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
af90: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
afa0: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
afb0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  .  {..      ////
afc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b000: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
b010: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b020: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
b030: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
b040: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
b050: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
b060: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
b070: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
b080: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
b090: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
b0a0: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
b0b0: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
b0c0: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
b0d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b0e0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
b0f0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
b100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
b110: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
b120: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
b130: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
b140: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
b150: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
b160: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
b170: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
b180: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
b190: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
b1a0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
b1b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
b1c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b1d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b1e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
b1f0: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
b200: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
b210: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
b220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
b230: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
b240: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b250: 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20  vention.Winapi, 
b260: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
b270: 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c  t.Auto,..#if !PL
b280: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b290: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
b2a0: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
b2b0: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
b2c0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
b2d0: 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66   = true,..#endif
b2e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c  ..          SetL
b2f0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
b300: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
b310: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b320: 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61  IntPtr LoadLibra
b330: 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  ry(string fileNa
b340: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  me);....      //
b350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b390: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b3a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b3b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
b3c0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
b3d0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
b3e0: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
b3f0: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
b400: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
b410: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
b420: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
b430: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
b440: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
b450: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
b460: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b470: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
b480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
b490: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
b4a0: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
b4b0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
b4c0: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
b4d0: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
b4e0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
b4f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 23 69 66 20 21   </param>..#if !
b500: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b510: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
b520: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72   [DllImport("ker
b530: 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a  nel32",..#else..
b540: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
b550: 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e  ("coredll",..#en
b560: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43  dif..          C
b570: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b580: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b590: 74 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20  tion.Winapi)].. 
b5a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
b5b0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
b5c0: 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f   GetSystemInfo(o
b5d0: 75 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  ut SYSTEM_INFO s
b5e0: 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
b5f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b640: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b650: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
b660: 68 69 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20  his enumeration 
b670: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73  contains the pos
b680: 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72  sible values for
b690: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
b6a0: 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
b6b0: 65 63 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20  ecture field of 
b6c0: 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  the system infor
b6d0: 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65  mation structure
b6e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b6f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
b700: 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f  nternal enum Pro
b710: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b720: 72 65 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43  re : ushort /* C
b730: 4f 4d 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f  OMPAT: Win32. */
b740: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
b750: 20 20 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d       Intel = 0,.
b760: 0a 20 20 20 20 20 20 20 20 20 20 4d 49 50 53 20  .          MIPS 
b770: 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1,..          
b780: 41 6c 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20  Alpha = 2,..    
b790: 20 20 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20        PowerPC = 
b7a0: 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48  3,..          SH
b7b0: 78 20 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20  x = 4,..        
b7c0: 20 20 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20    ARM = 5,..    
b7d0: 20 20 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d        IA64 = 6,.
b7e0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
b7f0: 36 34 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20  64 = 7,..       
b800: 20 20 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20     MSIL = 8,..  
b810: 20 20 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20          AMD64 = 
b820: 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41  9,..          IA
b830: 33 32 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30  32_on_Win64 = 10
b840: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b  ,..          Unk
b850: 6e 6f 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20  nown = 0xFFFF.. 
b860: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20  /////////..     
b8c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b8d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73        /// This s
b8e0: 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e  tructure contain
b8f0: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  s information ab
b900: 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20  out the current 
b910: 63 6f 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a  computer. This..
b920: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64        /// includ
b930: 65 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  es the processor
b940: 20 74 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65   type, page size
b950: 2c 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73  , memory address
b960: 65 73 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20  es, etc...      
b970: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b980: 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79        [StructLay
b990: 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
b9a0: 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
b9b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
b9c0: 63 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a  ct SYSTEM_INFO..
b9d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b9e0: 20 20 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73     public Proces
b9f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
ba00: 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  wProcessorArchit
ba10: 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20  ecture;..       
ba20: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
ba30: 20 77 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e   wReserved; /* N
ba40: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
ba50: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
ba60: 74 20 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a  t dwPageSize; /*
ba70: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
ba80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
ba90: 6e 74 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41  ntPtr lpMinimumA
baa0: 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73  pplicationAddres
bab0: 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  s; /* NOT USED *
bac0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
bad0: 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78  lic IntPtr lpMax
bae0: 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41  imumApplicationA
baf0: 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55  ddress; /* NOT U
bb00: 53 45 44 20 2a 2f 0d 0a 23 69 66 20 50 4c 41 54  SED */..#if PLAT
bb10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
bb20: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
bb30: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41   public uint dwA
bb40: 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61  ctiveProcessorMa
bb50: 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  sk; /* NOT USED 
bb60: 2a 2f 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  */..#else..     
bb70: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
bb80: 74 72 20 64 77 41 63 74 69 76 65 50 72 6f 63 65  tr dwActiveProce
bb90: 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54  ssorMask; /* NOT
bba0: 20 55 53 45 44 20 2a 2f 0d 0a 23 65 6e 64 69 66   USED */..#endif
bbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
bbc0: 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72  ic uint dwNumber
bbd0: 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a  OfProcessors; /*
bbe0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
bbf0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
bc00: 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54  int dwProcessorT
bc10: 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ype; /* NOT USED
bc20: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
bc30: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c  ublic uint dwAll
bc40: 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69  ocationGranulari
bc50: 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ty; /* NOT USED 
bc60: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
bc70: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f  blic ushort wPro
bc80: 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20  cessorLevel; /* 
bc90: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
bca0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
bcb0: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52  hort wProcessorR
bcc0: 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20  evision; /* NOT 
bcd0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  USED */..      }
bce0: 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
bcf0: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
bd50: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
bd60: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
bd70: 61 74 69 63 20 43 6c 61 73 73 20 28 53 51 4c 69  atic Class (SQLi
bd80: 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  te)..  /// <summ
bd90: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
bda0: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
bdb0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
bdc0: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
bdd0: 53 51 4c 69 74 65 20 41 50 49 73 2e 0d 0a 20 20  SQLite APIs...  
bde0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
bdf0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
be00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
be10: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
be20: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
be30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
be40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
be50: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
be60: 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20  ethods..  {..   
be70: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
be80: 73 74 72 69 6e 67 20 45 78 63 65 70 74 69 6f 6e  string Exception
be90: 4d 65 73 73 61 67 65 46 6f 72 6d 61 74 20 3d 0d  MessageFormat =.
bea0: 0a 20 20 20 20 20 20 20 20 20 20 22 43 61 75 67  .          "Caug
beb0: 68 74 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20  ht exception in 
bec0: 5c 22 7b 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20  \"{0}\" method: 
bed0: 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  {1}";....      /
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bf30: 20 20 23 72 65 67 69 6f 6e 20 53 68 61 72 65 64    #region Shared
bf40: 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c   Native SQLite L
bf50: 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69  ibrary Pre-Loadi
bf60: 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 23  ng Code..      #
bf70: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
bf80: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
bf90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bfa0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
bfb0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64  e extension used
bfc0: 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e   for dynamic lin
bfd0: 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d 0a 20 20  k libraries...  
bfe0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bff0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
c000: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
c010: 79 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65  y string DllFile
c020: 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c  Extension = ".dl
c030: 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  l";....      ///
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 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
c090: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c0a0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
c0b0: 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66  extension used f
c0c0: 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  or the XML confi
c0d0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
c0e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c0f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
c100: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
c110: 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f 6e 66 69  nly string Confi
c120: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  gFileExtension =
c130: 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20   ".config";.... 
c140: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c190: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c1a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
c1b0: 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20  his is the name 
c1c0: 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  of the XML confi
c1d0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 73 70  guration file sp
c1e0: 65 63 69 66 69 63 20 74 6f 20 74 68 65 0d 0a 20  ecific to the.. 
c1f0: 20 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e       /// System.
c200: 44 61 74 61 2e 53 51 4c 69 74 65 20 61 73 73 65  Data.SQLite asse
c210: 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mbly...      ///
c220: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c230: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c240: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
c250: 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g XmlConfigFileN
c260: 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
c270: 20 74 79 70 65 6f 66 28 55 6e 73 61 66 65 4e 61   typeof(UnsafeNa
c280: 74 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d  tiveMethods).Nam
c290: 65 73 70 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65  espace + DllFile
c2a0: 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20  Extension +..   
c2b0: 20 20 20 20 20 20 20 43 6f 6e 66 69 67 46 69 6c         ConfigFil
c2c0: 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20  eExtension;.... 
c2d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c320: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c330: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
c340: 68 69 73 20 69 73 20 74 68 65 20 58 4d 4c 20 63  his is the XML c
c350: 6f 6e 66 69 67 75 72 61 74 72 69 6f 6e 20 66 69  onfiguratrion fi
c360: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
c370: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
c380: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
c390: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
c3a0: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
c3b0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
c3c0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
c3d0: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ion..      /// f
c3e0: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
c3f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c400: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c410: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
c420: 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74   XmlConfigDirect
c430: 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  oryToken =..    
c440: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
c450: 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66 69 67 44  QLite_XmlConfigD
c460: 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 20 20 20  irectory%";..   
c470: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c480: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
c490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4d0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
c4e0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
c4f0: 6e 74 73 20 28 44 65 73 6b 74 6f 70 20 46 72 61  nts (Desktop Fra
c500: 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69  mework Only)..#i
c510: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c520: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c540: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
c550: 73 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e  s is the environ
c560: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
c570: 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ken that will be
c580: 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a   replaced with..
c590: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75        /// the qu
c5a0: 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f 20  alified path to 
c5b0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
c5c0: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 61 73  ntaining this as
c5d0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
c5e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c5f0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
c600: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
c610: 69 6e 67 20 41 73 73 65 6d 62 6c 79 44 69 72 65  ing AssemblyDire
c620: 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20  ctoryToken =..  
c630: 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61          "%PreLoa
c640: 64 53 51 4c 69 74 65 5f 41 73 73 65 6d 62 6c 79  dSQLite_Assembly
c650: 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a  Directory%";....
c660: 20 20 20 20 20 20 2f 2f 2f 2f 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 0d  ///////////////.
c6b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c6c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c6d0: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
c6e0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
c6f0: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
c700: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
c710: 68 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h an..      /// 
c720: 61 62 62 72 65 76 69 61 74 69 6f 6e 20 6f 66 20  abbreviation of 
c730: 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65  the target frame
c740: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
c750: 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20  alue associated 
c760: 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  with..      /// 
c770: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  this assembly...
c780: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c790: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
c7a0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
c7b0: 6e 6c 79 20 73 74 72 69 6e 67 20 54 61 72 67 65  nly string Targe
c7c0: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20  tFrameworkToken 
c7d0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
c7e0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 54 61 72  reLoadSQLite_Tar
c7f0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 25 22 3b 0d  getFramework%";.
c800: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
c810: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
c820: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c870: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
c880: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
c890: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c8b0: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
c8c0: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
c8d0: 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ic _SQLiteNative
c8e0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
c8f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69  .      /// _SQLi
c900: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
c910: 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73  ndle, and proces
c920: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
c930: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e  latforms fields.
c940: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c950: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
c960: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
c970: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
c980: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
c990: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
c9a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c9f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ca00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
ca10: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
ca20: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
ca30: 67 73 20 62 65 74 77 65 65 6e 20 74 61 72 67 65  gs between targe
ca40: 74 20 66 72 61 6d 65 77 6f 72 6b 20 6e 61 6d 65  t framework name
ca50: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64  s..      /// and
ca60: 20 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65   their associate
ca70: 64 20 28 4e 75 47 65 74 29 20 61 62 62 72 65 76  d (NuGet) abbrev
ca80: 69 61 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20  iations.  These 
ca90: 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6f 6e 6c  mappings are onl
caa0: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  y..      /// use
cab0: 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  d by the <see cr
cac0: 65 66 3d 22 41 62 62 72 65 76 69 61 74 65 54 61  ef="AbbreviateTa
cad0: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 22 20 2f  rgetFramework" /
cae0: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
caf0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
cb00: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
cb10: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
cb20: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
cb30: 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
cb40: 41 62 62 72 65 76 69 61 74 69 6f 6e 73 3b 0d 0a  Abbreviations;..
cb50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
cb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cba0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
cbb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cbc0: 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72  / This dictionar
cbd0: 79 20 73 74 6f 72 65 73 20 74 68 65 20 6d 61 70  y stores the map
cbe0: 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 70 72  pings between pr
cbf0: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
cc00: 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ture..      /// 
cc10: 6e 61 6d 65 73 20 61 6e 64 20 70 6c 61 74 66 6f  names and platfo
cc20: 72 6d 20 6e 61 6d 65 73 2e 20 20 54 68 65 73 65  rm names.  These
cc30: 20 6d 61 70 70 69 6e 67 73 20 61 72 65 20 6e 6f   mappings are no
cc40: 77 20 75 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a  w used for two..
cc50: 20 20 20 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73        /// purpos
cc60: 65 73 2e 20 20 46 69 72 73 74 2c 20 74 68 65 79  es.  First, they
cc70: 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 74   are used to det
cc80: 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 61 73  ermine if the as
cc90: 73 65 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20  sembly code..   
cca0: 20 20 20 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75     /// base shou
ccb0: 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  ld be used inste
ccc0: 61 64 20 6f 66 20 74 68 65 20 6c 6f 63 61 74 69  ad of the locati
ccd0: 6f 6e 2c 20 62 61 73 65 64 20 75 70 6f 6e 20 77  on, based upon w
cce0: 68 65 74 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20  hether one..    
ccf0: 20 20 2f 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66    /// or more of
cd00: 20 74 68 65 20 6e 61 6d 65 64 20 73 75 62 2d 64   the named sub-d
cd10: 69 72 65 63 74 6f 72 69 65 73 20 65 78 69 73 74  irectories exist
cd20: 20 77 69 74 68 69 6e 20 74 68 65 20 61 73 73 65   within the asse
cd30: 6d 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20  mbly code..     
cd40: 20 2f 2f 2f 20 62 61 73 65 2e 20 20 53 65 63 6f   /// base.  Seco
cd50: 6e 64 2c 20 74 68 65 79 20 61 72 65 20 75 73 65  nd, they are use
cd60: 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20 6c  d to assist in l
cd70: 6f 61 64 69 6e 67 20 74 68 65 20 61 70 70 72 6f  oading the appro
cd80: 70 72 69 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f  priate..      //
cd90: 2f 20 53 51 4c 69 74 65 20 69 6e 74 65 72 6f 70  / SQLite interop
cda0: 20 61 73 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74   assembly into t
cdb0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
cdc0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
cdd0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
cde0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
cdf0: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
ce00: 67 2c 20 73 74 72 69 6e 67 3e 20 70 72 6f 63 65  g, string> proce
ce10: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
ce20: 50 6c 61 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20  Platforms;....  
ce30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ce40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
ce80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
ce90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
cea0: 69 73 20 69 73 20 74 68 65 20 63 61 63 68 65 64  is is the cached
ceb0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72   return value fr
cec0: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  om the..      //
ced0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  / <see cref="Get
cee0: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
cef0: 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52  y" /> method -OR
cf00: 2d 20 6e 75 6c 6c 20 69 66 20 74 68 61 74 20 6d  - null if that m
cf10: 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  ethod..      ///
cf20: 20 68 61 73 20 6e 65 76 65 72 20 72 65 74 75 72   has never retur
cf30: 6e 65 64 20 61 20 76 61 6c 69 64 20 76 61 6c 75  ned a valid valu
cf40: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
cf50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cf60: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
cf70: 74 72 69 6e 67 20 63 61 63 68 65 64 41 73 73 65  tring cachedAsse
cf80: 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a  mblyDirectory;..
cf90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfe0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
cff0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d000: 2f 20 57 68 65 6e 20 74 68 69 73 20 66 69 65 6c  / When this fiel
d010: 64 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69  d is non-zero, i
d020: 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 0d  t indicates the.
d030: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
d040: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
d050: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
d060: 65 74 68 6f 64 20 77 61 73 20 6e 6f 74 20 61 62  ethod was not ab
d070: 6c 65 20 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a  le to locate a..
d080: 20 20 20 20 20 20 2f 2f 2f 20 73 75 69 74 61 62        /// suitab
d090: 6c 65 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65  le assembly dire
d0a0: 63 74 6f 72 79 2e 20 20 54 68 65 0d 0a 20 20 20  ctory.  The..   
d0b0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
d0c0: 3d 22 47 65 74 43 61 63 68 65 64 41 73 73 65 6d  ="GetCachedAssem
d0d0: 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e  blyDirectory" />
d0e0: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65   method will che
d0f0: 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f  ck this..      /
d100: 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69  // field and ski
d110: 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68  ps calls into th
d120: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  e <see cref="Get
d130: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
d140: 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  y" />..      ///
d150: 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72   method whenever
d160: 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e   it is non-zero.
d170: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
d180: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
d190: 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
d1a0: 6c 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65  l noAssemblyDire
d1b0: 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
d1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d210: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d220: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
d230: 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65 74  s the cached ret
d240: 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74  urn value from t
d250: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
d260: 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43  ee cref="GetXmlC
d270: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f  onfigFileName" /
d280: 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75  > method -OR- nu
d290: 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  ll if that metho
d2a0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 73  d..      /// has
d2b0: 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64 20   never returned 
d2c0: 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a  a valid value...
d2d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d2e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
d2f0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
d300: 67 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  g cachedXmlConfi
d310: 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  gFileName;....  
d320: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
d370: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d380: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
d390: 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69 73  en this field is
d3a0: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e   non-zero, it in
d3b0: 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20 20  dicates the..   
d3c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
d3d0: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
d3e0: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
d3f0: 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20 74  d was not able t
d400: 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20 20  o locate a..    
d410: 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20 58    /// suitable X
d420: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
d430: 20 66 69 6c 65 20 6e 61 6d 65 2e 20 20 54 68 65   file name.  The
d440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
d450: 20 63 72 65 66 3d 22 47 65 74 43 61 63 68 65 64   cref="GetCached
d460: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
d470: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  e" /> method wil
d480: 6c 20 63 68 65 63 6b 20 74 68 69 73 0d 0a 20 20  l check this..  
d490: 20 20 20 20 2f 2f 2f 20 66 69 65 6c 64 20 61 6e      /// field an
d4a0: 64 20 73 6b 69 70 73 20 63 61 6c 6c 73 20 69 6e  d skips calls in
d4b0: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
d4c0: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
d4d0: 6c 65 4e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20  leName" />..    
d4e0: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 68 65    /// method whe
d4f0: 6e 65 76 65 72 20 69 74 20 69 73 20 6e 6f 6e 2d  never it is non-
d500: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
d510: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d520: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
d530: 63 20 62 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66  c bool noXmlConf
d540: 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  igFileName;..   
d550: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
d560: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
d570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
d5c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d5d0: 20 46 6f 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d   For now, this m
d5e0: 65 74 68 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c  ethod simply cal
d5f0: 6c 73 20 74 68 65 20 49 6e 69 74 69 61 6c 69 7a  ls the Initializ
d600: 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  e method...     
d610: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d620: 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 55 6e  .      static Un
d630: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d640: 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  s()..      {..  
d650: 20 20 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69          Initiali
d660: 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ze();..      }..
d670: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6c0: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
d6d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d6e0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e  / Attempts to in
d6f0: 69 74 69 61 6c 69 7a 65 20 74 68 69 73 20 63 6c  itialize this cl
d700: 61 73 73 20 62 79 20 70 72 65 2d 6c 6f 61 64 69  ass by pre-loadi
d710: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  ng the native SQ
d720: 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Lite..      /// 
d730: 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 65 20  library for the 
d740: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
d750: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 63 75  ecture of the cu
d760: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
d770: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ary>..      inte
d790: 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64  rnal static void
d7a0: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20   Initialize().. 
d7b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d7c0: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
d7d0: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
d7e0: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
d7f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
d800: 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74  / NOTE: Create t
d810: 68 65 20 6c 69 73 74 73 20 6f 66 20 73 74 61 74  he lists of stat
d820: 69 73 74 69 63 73 20 74 68 61 74 20 77 69 6c 6c  istics that will
d830: 20 63 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20   contain..      
d840: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 72      //       var
d850: 69 6f 75 73 20 63 6f 75 6e 74 73 20 75 73 65 64  ious counts used
d860: 20 69 6e 20 64 65 62 75 67 67 69 6e 67 2c 20 69   in debugging, i
d870: 6e 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a 20 20  ncluding the..  
d880: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
d890: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
d8a0: 20 65 61 63 68 20 73 65 74 74 69 6e 67 20 76 61   each setting va
d8b0: 6c 75 65 20 68 61 73 20 62 65 65 6e 20 72 65 61  lue has been rea
d8c0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  d...          //
d8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62 75  ..          Debu
d8e0: 67 44 61 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65  gData.Initialize
d8f0: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
d900: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d910: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n....          /
d920: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
d930: 4e 4f 54 45 3a 20 43 68 65 63 6b 20 69 66 20 61  NOTE: Check if a
d940: 20 64 65 62 75 67 67 65 72 20 6e 65 65 64 73 20   debugger needs 
d950: 74 6f 20 62 65 20 61 74 74 61 63 68 65 64 20 62  to be attached b
d960: 65 66 6f 72 65 20 64 6f 69 6e 67 20 61 6e 79 0d  efore doing any.
d970: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
d980: 20 20 20 20 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a      real work...
d990: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d9a0: 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
d9b0: 74 68 6f 64 73 2e 4d 61 79 62 65 42 72 65 61 6b  thods.MaybeBreak
d9c0: 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 3b 0d  IntoDebugger();.
d9d0: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
d9e0: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
d9f0: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
da00: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
da10: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
da20: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
da30: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RY..          //
da40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
da50: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f  OTE: If the "No_
da60: 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 20 65  PreLoadSQLite" e
da70: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
da80: 62 6c 65 20 69 73 20 73 65 74 20 28 74 6f 0d 0a  ble is set (to..
da90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
daa0: 20 20 20 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b     anything), sk
dab0: 69 70 20 61 6c 6c 20 6f 66 20 6f 75 72 20 73 70  ip all of our sp
dac0: 65 63 69 61 6c 20 63 6f 64 65 20 61 6e 64 20 73  ecial code and s
dad0: 69 6d 70 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20  imply return... 
dae0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
daf0: 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
db00: 74 74 69 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50  ttingValue("No_P
db10: 72 65 4c 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e  reLoadSQLite", n
db20: 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ull) != null).. 
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
db40: 75 72 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65  urn;..#endif..#e
db50: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
db60: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
db70: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
db80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
db90: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
dba0: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d        // TODO: M
dbb0: 61 6b 65 20 73 75 72 65 20 74 6f 20 6b 65 65 70  ake sure to keep
dbc0: 20 74 68 65 73 65 20 6c 69 73 74 73 20 75 70 64   these lists upd
dbd0: 61 74 65 64 20 77 68 65 6e 20 74 68 65 0d 0a 20  ated when the.. 
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dbf0: 20 20 20 20 20 20 74 61 72 67 65 74 20 66 72 61        target fra
dc00: 6d 65 77 6f 72 6b 20 6e 61 6d 65 73 20 28 6f 72  mework names (or
dc10: 20 74 68 65 69 72 20 61 62 62 72 65 76 69 61 74   their abbreviat
dc20: 69 6f 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ions)..         
dc30: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2d 4f       //       -O
dc40: 52 2d 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  R- the processor
dc50: 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
dc60: 6d 65 73 20 28 6f 72 20 74 68 65 69 72 0d 0a 20  mes (or their.. 
dc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dc80: 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e        platform n
dc90: 61 6d 65 73 29 20 63 68 61 6e 67 65 2e 0d 0a 20  ames) change... 
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
dcb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
dcc0: 66 20 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f  f (targetFramewo
dcd0: 72 6b 41 62 62 72 65 76 69 61 74 69 6f 6e 73 20  rkAbbreviations 
dce0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
dcf0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72               tar
dd10: 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72  getFrameworkAbbr
dd20: 65 76 69 61 74 69 6f 6e 73 20 3d 0d 0a 20 20 20  eviations =..   
dd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd40: 20 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72     new Dictionar
dd50: 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  y<string, string
dd60: 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >(..            
dd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
dd80: 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64  ringComparer.Ord
dd90: 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b  inalIgnoreCase);
dda0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ddb0: 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61 6d        targetFram
ddc0: 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f  eworkAbbreviatio
ddd0: 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20 20  ns.Add(..       
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
ddf0: 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
de00: 72 73 69 6f 6e 3d 76 32 2e 30 22 2c 20 22 6e 65  rsion=v2.0", "ne
de10: 74 32 30 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  t20");....      
de20: 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67              targ
de30: 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65  etFrameworkAbbre
de40: 76 69 61 74 69 6f 6e 73 2e 41 64 64 28 0d 0a 20  viations.Add(.. 
de50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de60: 20 20 20 20 20 22 2e 4e 45 54 46 72 61 6d 65 77       ".NETFramew
de70: 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 33 2e 35  ork,Version=v3.5
de80: 22 2c 20 22 6e 65 74 33 35 22 29 3b 0d 0a 0d 0a  ", "net35");....
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dea0: 20 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72    targetFramewor
deb0: 6b 41 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41  kAbbreviations.A
dec0: 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dd(..           
ded0: 20 20 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54             ".NET
dee0: 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
def0: 6e 3d 76 34 2e 30 22 2c 20 22 6e 65 74 34 30 22  n=v4.0", "net40"
df00: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
df10: 20 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72          targetFr
df20: 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74  ameworkAbbreviat
df30: 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20  ions.Add(..     
df40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df50: 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c   ".NETFramework,
df60: 56 65 72 73 69 6f 6e 3d 76 34 2e 35 22 2c 20 22  Version=v4.5", "
df70: 6e 65 74 34 35 22 29 3b 0d 0a 0d 0a 20 20 20 20  net45");....    
df80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
df90: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62  rgetFrameworkAbb
dfa0: 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28 0d  reviations.Add(.
dfb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfc0: 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61 6d         ".NETFram
dfd0: 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 34  ework,Version=v4
dfe0: 2e 35 2e 31 22 2c 20 22 6e 65 74 34 35 31 22 29  .5.1", "net451")
dff0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e000: 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61         targetFra
e010: 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69  meworkAbbreviati
e020: 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20  ons.Add(..      
e030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e040: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
e050: 65 72 73 69 6f 6e 3d 76 34 2e 35 2e 32 22 2c 20  ersion=v4.5.2", 
e060: 22 6e 65 74 34 35 32 22 29 3b 0d 0a 0d 0a 20 20  "net452");....  
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e080: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  targetFrameworkA
e090: 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64  bbreviations.Add
e0a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e0b0: 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72           ".NETFr
e0c0: 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
e0d0: 76 34 2e 36 22 2c 20 22 6e 65 74 34 36 22 29 3b  v4.6", "net46");
e0e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e0f0: 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61 6d        targetFram
e100: 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f  eworkAbbreviatio
e110: 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20 20  ns.Add(..       
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
e130: 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
e140: 72 73 69 6f 6e 3d 76 34 2e 36 2e 31 22 2c 20 22  rsion=v4.6.1", "
e150: 6e 65 74 34 36 31 22 29 3b 0d 0a 0d 0a 20 20 20  net461");....   
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
e170: 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62  argetFrameworkAb
e180: 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28  breviations.Add(
e190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1a0: 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61          ".NETFra
e1b0: 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76  mework,Version=v
e1c0: 34 2e 36 2e 32 22 2c 20 22 6e 65 74 34 36 32 22  4.6.2", "net462"
e1d0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e1e0: 20 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72          targetFr
e1f0: 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74  ameworkAbbreviat
e200: 69 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20  ions.Add(..     
e210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e220: 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c   ".NETFramework,
e230: 56 65 72 73 69 6f 6e 3d 76 34 2e 37 22 2c 20 22  Version=v4.7", "
e240: 6e 65 74 34 37 22 29 3b 0d 0a 0d 0a 20 20 20 20  net47");....    
e250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
e260: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 62 62  rgetFrameworkAbb
e270: 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64 28 0d  reviations.Add(.
e280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e290: 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61 6d         ".NETFram
e2a0: 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 34  ework,Version=v4
e2b0: 2e 37 2e 31 22 2c 20 22 6e 65 74 34 37 31 22 29  .7.1", "net471")
e2c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e2d0: 20 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61         targetFra
e2e0: 6d 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69  meworkAbbreviati
e2f0: 6f 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20  ons.Add(..      
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e310: 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
e320: 65 72 73 69 6f 6e 3d 76 34 2e 37 2e 32 22 2c 20  ersion=v4.7.2", 
e330: 22 6e 65 74 34 37 32 22 29 3b 0d 0a 0d 0a 20 20  "net472");....  
e340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e350: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  targetFrameworkA
e360: 62 62 72 65 76 69 61 74 69 6f 6e 73 2e 41 64 64  bbreviations.Add
e370: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e380: 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72           ".NETFr
e390: 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
e3a0: 76 34 2e 38 22 2c 20 22 6e 65 74 34 38 22 29 3b  v4.8", "net48");
e3b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e3c0: 20 20 20 20 20 20 74 61 72 67 65 74 46 72 61 6d        targetFram
e3d0: 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f  eworkAbbreviatio
e3e0: 6e 73 2e 41 64 64 28 0d 0a 20 20 20 20 20 20 20  ns.Add(..       
e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
e400: 2e 4e 45 54 53 74 61 6e 64 61 72 64 2c 56 65 72  .NETStandard,Ver
e410: 73 69 6f 6e 3d 76 32 2e 30 22 2c 20 22 6e 65 74  sion=v2.0", "net
e420: 73 74 61 6e 64 61 72 64 32 2e 30 22 29 3b 0d 0a  standard2.0");..
e430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e440: 20 20 20 20 74 61 72 67 65 74 46 72 61 6d 65 77      targetFramew
e450: 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f 6e 73  orkAbbreviations
e460: 2e 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20  .Add(..         
e470: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2e 4e               ".N
e480: 45 54 53 74 61 6e 64 61 72 64 2c 56 65 72 73 69  ETStandard,Versi
e490: 6f 6e 3d 76 32 2e 31 22 2c 20 22 6e 65 74 73 74  on=v2.1", "netst
e4a0: 61 6e 64 61 72 64 32 2e 31 22 29 3b 0d 0a 20 20  andard2.1");..  
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e4c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
e4d0: 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  f (processorArch
e4e0: 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
e4f0: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
e500: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e520: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
e530: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 72       // NOTE: Cr
e540: 65 61 74 65 20 74 68 65 20 6d 61 70 20 6f 66 20  eate the map of 
e550: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
e560: 65 63 74 75 72 65 20 6e 61 6d 65 73 0d 0a 20 20  ecture names..  
e570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e580: 2f 2f 20 20 20 20 20 20 20 74 6f 20 70 6c 61 74  //       to plat
e590: 66 6f 72 6d 20 6e 61 6d 65 73 20 75 73 69 6e 67  form names using
e5a0: 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74   a case-insensit
e5b0: 69 76 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  ive string..    
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
e5d0: 20 20 20 20 20 20 20 63 6f 6d 70 61 72 65 72 2e         comparer.
e5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e5f0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
e600: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
e610: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
e620: 6c 61 74 66 6f 72 6d 73 20 3d 0d 0a 20 20 20 20  latforms =..    
e630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e640: 20 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79    new Dictionary
e650: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
e660: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e670: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
e680: 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69  ingComparer.Ordi
e690: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
e6a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e6b0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
e6c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
e6d0: 54 45 3a 20 53 65 74 75 70 20 74 68 65 20 6c 69  TE: Setup the li
e6e0: 73 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 20 6e  st of platform n
e6f0: 61 6d 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ames associated 
e700: 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  with..          
e710: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
e720: 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 70   the supported p
e730: 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
e740: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
e750: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e770: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
e780: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
e790: 41 64 64 28 22 78 38 36 22 2c 20 22 57 69 6e 33  Add("x86", "Win3
e7a0: 32 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  2");..          
e7b0: 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
e7c0: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
e7d0: 74 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 5f  tforms.Add("x86_
e7e0: 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20  64", "x64");..  
e7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e800: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
e810: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41  cturePlatforms.A
e820: 64 64 28 22 41 4d 44 36 34 22 2c 20 22 78 36 34  dd("AMD64", "x64
e830: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
e840: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
e850: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
e860: 66 6f 72 6d 73 2e 41 64 64 28 22 49 41 36 34 22  forms.Add("IA64"
e870: 2c 20 22 49 74 61 6e 69 75 6d 22 29 3b 0d 0a 20  , "Itanium");.. 
e880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e890: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
e8a0: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
e8b0: 41 64 64 28 22 41 52 4d 22 2c 20 22 57 69 6e 43  Add("ARM", "WinC
e8c0: 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  E");..          
e8d0: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 53 51 4c      }....#if SQL
e8e0: 49 54 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20  ITE_STANDARD || 
e8f0: 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20  USE_INTEROP_DLL 
e900: 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  || PLATFORM_COMP
e910: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 23 69  ACTFRAMEWORK..#i
e920: 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54 49 56 45  f PRELOAD_NATIVE
e930: 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20  _LIBRARY..      
e940: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
e950: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
e960: 42 55 47 3a 20 57 68 61 74 20 61 62 6f 75 74 20  BUG: What about 
e970: 6f 74 68 65 72 20 61 70 70 6c 69 63 61 74 69 6f  other applicatio
e980: 6e 20 64 6f 6d 61 69 6e 73 3f 0d 0a 20 20 20 20  n domains?..    
e990: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
e9a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e9b0: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
e9c0: 75 6c 65 48 61 6e 64 6c 65 20 3d 3d 20 49 6e 74  uleHandle == Int
e9d0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
e9e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
ea00: 72 69 6e 67 20 62 61 73 65 44 69 72 65 63 74 6f  ring baseDirecto
ea10: 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ry = null;..    
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
ea30: 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
ea40: 63 68 69 74 65 63 74 75 72 65 20 3d 20 6e 75 6c  chitecture = nul
ea50: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
ea60: 20 20 20 20 20 20 62 6f 6f 6c 20 61 6c 6c 6f 77        bool allow
ea70: 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
ea80: 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  y = false;....  
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaa0: 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20  /* IGNORED */.. 
eab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eac0: 20 53 65 61 72 63 68 46 6f 72 44 69 72 65 63 74   SearchForDirect
ead0: 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
eae0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
eaf0: 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 72  baseDirectory, r
eb00: 65 66 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  ef processorArch
eb10: 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20 20  itecture,..     
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb30: 20 72 65 66 20 61 6c 6c 6f 77 42 61 73 65 44 69   ref allowBaseDi
eb40: 72 65 63 74 6f 72 79 4f 6e 6c 79 29 3b 0d 0a 0d  rectoryOnly);...
eb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb60: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
eb70: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
eb80: 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 70 72 65  : Attempt to pre
eb90: 2d 6c 6f 61 64 20 74 68 65 20 53 51 4c 69 74 65  -load the SQLite
eba0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f   core library (o
ebb0: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
ebc0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
ebd0: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 29 20  terop assembly) 
ebe0: 61 6e 64 20 73 74 6f 72 65 20 62 6f 74 68 20 74  and store both t
ebf0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 0d 0a 20 20  he file name..  
ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec10: 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6e 61 74  //       and nat
ec20: 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
ec30: 65 20 66 6f 72 20 6c 61 74 65 72 20 75 73 61 67  e for later usag
ec40: 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
ec50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49              /* I
ec70: 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20  GNORED */..     
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
ec90: 4c 6f 61 64 53 51 4c 69 74 65 44 6c 6c 28 62 61  LoadSQLiteDll(ba
eca0: 73 65 44 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  seDirectory,..  
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
ecd0: 68 69 74 65 63 74 75 72 65 2c 20 61 6c 6c 6f 77  hitecture, allow
ece0: 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
ecf0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
ed00: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 5f 53            ref _S
ed10: 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
ed20: 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  eFileName,..    
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74    ref _SQLiteNat
ed50: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 29  iveModuleHandle)
ed60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ed70: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64   }..#endif..#end
ed80: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  if..          }.
ed90: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
eda0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
edf0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ee00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 62  ..      /// Comb
ee10: 69 6e 65 73 20 74 77 6f 20 70 61 74 68 20 73 74  ines two path st
ee20: 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  rings...      //
ee30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ee40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
ee50: 61 6d 65 3d 22 70 61 74 68 31 22 3e 0d 0a 20 20  ame="path1">..  
ee60: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73      /// The firs
ee70: 74 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c  t path -OR- null
ee80: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
ee90: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
eea0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61   <param name="pa
eeb0: 74 68 32 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  th2">..      ///
eec0: 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 74 68   The second path
eed0: 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20   -OR- null...   
eee0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
eef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
ef00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
ef10: 54 68 65 20 63 6f 6d 62 69 6e 65 64 20 70 61 74  The combined pat
ef20: 68 20 73 74 72 69 6e 67 20 2d 4f 52 2d 20 6e 75  h string -OR- nu
ef30: 6c 6c 20 69 66 20 62 6f 74 68 20 6f 66 20 74 68  ll if both of th
ef40: 65 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 0d  e original path.
ef50: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  .      /// strin
ef60: 67 73 20 61 72 65 20 6e 75 6c 6c 2e 0d 0a 20 20  gs are null...  
ef70: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
ef80: 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
ef90: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
efa0: 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
efb0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  (..          str
efc0: 69 6e 67 20 70 61 74 68 31 2c 0d 0a 20 20 20 20  ing path1,..    
efd0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 74        string pat
efe0: 68 32 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  h2..          ).
eff0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
f000: 20 20 20 20 69 66 20 28 70 61 74 68 31 20 21 3d      if (path1 !=
f010: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f020: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f030: 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d 20     if (path2 != 
f040: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
f050: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f060: 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 70 61 74  Path.Combine(pat
f070: 68 31 2c 20 70 61 74 68 32 29 3b 0d 0a 20 20 20  h1, path2);..   
f080: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
f090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f0a0: 20 20 20 72 65 74 75 72 6e 20 70 61 74 68 31 3b     return path1;
f0b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
f0c0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
f0d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f0e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
f0f0: 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th2 != null)..  
f100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f110: 72 65 74 75 72 6e 20 70 61 74 68 32 3b 0d 0a 20  return path2;.. 
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
f130: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
f140: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
f150: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
f160: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
f1c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f1d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74  .      /// Reset
f1e0: 73 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c  s the cached XML
f1f0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
f200: 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 2c 20  ile name value, 
f210: 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65  thus forcing the
f220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74  ..      /// next
f230: 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72   call to <see cr
f240: 65 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c  ef="GetCachedXml
f250: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
f260: 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c  /> method to rel
f270: 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f  y..      /// upo
f280: 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  n the <see cref=
f290: 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  "GetXmlConfigFil
f2a0: 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  eName" /> method
f2b0: 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20   to fetch the.. 
f2c0: 20 20 20 20 20 2f 2f 2f 20 58 4d 4c 20 63 6f 6e       /// XML con
f2d0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
f2e0: 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
f2f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f300: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
f310: 63 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68  c void ResetCach
f320: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f330: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
f340: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
f350: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
f360: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
f370: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
f380: 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
f390: 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52  rCount("Method_R
f3a0: 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e  esetCachedXmlCon
f3b0: 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a  figFileName");..
f3c0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
f3d0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
f3e0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
f3f0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
f400: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
f410: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
f420: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f430: 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ame = null;..   
f440: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d 6c             noXml
f450: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d  ConfigFileName =
f460: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
f470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
f480: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
f4e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
f4f0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
f500: 75 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20  urns the cached 
f510: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
f520: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  n file name for 
f530: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  the..      /// a
f540: 73 73 65 6d 62 6c 79 20 63 6f 6e 74 61 69 6e 69  ssembly containi
f550: 6e 67 20 74 68 65 20 6d 61 6e 61 67 65 64 20 53  ng the managed S
f560: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
f570: 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2c 20 69 66  e components, if
f580: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69  ..      /// avai
f590: 6c 61 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63  lable.  If the c
f5a0: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
f5b0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
f5c0: 65 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 0d 0a  e value is not..
f5d0: 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61        /// availa
f5e0: 62 6c 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ble, the <see cr
f5f0: 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67  ef="GetXmlConfig
f600: 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74  FileName" /> met
f610: 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
f620: 2f 2f 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f  /// be used to o
f630: 62 74 61 69 6e 20 74 68 65 20 58 4d 4c 20 63 6f  btain the XML co
f640: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
f650: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
f660: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f670: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
f680: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
f690: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
f6a0: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52  on file name -OR
f6b0: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
f6c0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
f6d0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  d..      /// or 
f6e0: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d  does not exist..
f6f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
f700: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
f710: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
f720: 6e 67 20 47 65 74 43 61 63 68 65 64 58 6d 6c 43  ng GetCachedXmlC
f730: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d  onfigFileName().
f740: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
f750: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
f760: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
f770: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
f780: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
f790: 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74  rementOtherCount
f7a0: 28 22 4d 65 74 68 6f 64 5f 47 65 74 43 61 63 68  ("Method_GetCach
f7b0: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f7c0: 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ame");..#endif..
f7d0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
f7e0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
f7f0: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
f800: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
f810: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f820: 20 20 20 20 69 66 20 28 63 61 63 68 65 64 58 6d      if (cachedXm
f830: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
f840: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
f850: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f860: 72 6e 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66  rn cachedXmlConf
f870: 69 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  igFileName;.... 
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f890: 28 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  (noXmlConfigFile
f8a0: 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20  Name)..         
f8b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f8c0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
f8d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f8e0: 72 65 74 75 72 6e 20 47 65 74 58 6d 6c 43 6f 6e  return GetXmlCon
f8f0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a  figFileName();..
f900: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f910: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
f960: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f970: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
f980: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
f990: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f9a0: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 66  tion file name f
f9b0: 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 0d  or the assembly.
f9c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61  .      /// conta
f9d0: 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e 61 67 65  ining the manage
f9e0: 64 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  d System.Data.SQ
f9f0: 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e  Lite components.
fa00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
fa10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
fa20: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
fa30: 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63     /// The XML c
fa40: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
fa50: 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c  e name -OR- null
fa60: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
fa70: 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20   determined..   
fa80: 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e     /// or does n
fa90: 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20  ot exist...     
faa0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
fab0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
fac0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
fad0: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
fae0: 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  e()..      {..  
faf0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
fb00: 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
fb10: 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
fb20: 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74 61         DebugData
fb30: 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43  .IncrementOtherC
fb40: 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74  ount("Method_Get
fb50: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
fb60: 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  e");..#endif..  
fb70: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
fb80: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
fb90: 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
fba0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ;..          str
fbb0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  ing fileName;...
fbc0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
fbd0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
fbe0: 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63  .          direc
fbf0: 74 6f 72 79 20 3d 20 41 70 70 44 6f 6d 61 69 6e  tory = AppDomain
fc00: 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42  .CurrentDomain.B
fc10: 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  aseDirectory;.. 
fc20: 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
fc30: 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65  e = MaybeCombine
fc40: 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
fc50: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
fc60: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
fc70: 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74 73   if (File.Exists
fc80: 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
fc90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
fca0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
fcb0: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
fcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
fcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fce0: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
fcf0: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65  gFileName = file
fd00: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
fd10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
fd20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
fd30: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
fd40: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
fd50: 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63  .          direc
fd60: 74 6f 72 79 20 3d 20 47 65 74 43 61 63 68 65 64  tory = GetCached
fd70: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
fd80: 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  y();..          
fd90: 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65  fileName = Maybe
fda0: 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
fdb0: 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67  ctory, XmlConfig
fdc0: 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
fdd0: 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65          if (File
fde0: 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65  .Exists(fileName
fdf0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ))..          {.
fe00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
fe10: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
fe20: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
fe30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fe40: 20 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58           cachedX
fe50: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
fe60: 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20   = fileName;..  
fe70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
fe80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
fe90: 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d  eturn fileName;.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
feb0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
fec0: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
fed0: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
fee0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 58 6d              noXm
fef0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
ff00: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
ff10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ff20: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ff30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ff40: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ff50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ff90: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ffa0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  >..      /// If 
ffb0: 6e 65 63 65 73 73 61 72 79 2c 20 72 65 70 6c 61  necessary, repla
ffc0: 63 65 73 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ces all supporte
ffd0: 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  d XML configurat
ffe0: 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 0d  ion file tokens.
fff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20  .      /// with 
10000 74 68 65 69 72 20 61 73 73 6f 63 69 61 74 65 64  their associated
10010 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20   values...      
10020 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10030 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10040 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
10050 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10060 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c   name of the XML
10070 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
10080 69 6c 65 20 62 65 69 6e 67 20 72 65 61 64 2e 0d  ile being read..
10090 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
100a0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
100b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
100c0 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  e">..      /// A
100d0 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72   setting value r
100e0 65 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c  ead from the XML
100f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
10100 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
10110 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
10120 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
10130 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
10140 75 65 20 6f 66 20 74 68 65 20 3c 70 61 72 61 6d  ue of the <param
10150 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ref name="value"
10160 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73 75 70   /> will all sup
10170 70 6f 72 74 65 64 20 58 4d 4c 0d 0a 20 20 20 20  ported XML..    
10180 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
10190 69 6f 6e 20 66 69 6c 65 20 74 6f 6b 65 6e 73 20  ion file tokens 
101a0 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65  replaced.  No re
101b0 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65  turn value is re
101c0 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f  served..      //
101d0 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e  / to indicate an
101e0 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65   error.  This me
101f0 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c  thod cannot fail
10200 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
10210 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
10220 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
10230 72 69 6e 67 20 52 65 70 6c 61 63 65 58 6d 6c 43  ring ReplaceXmlC
10240 6f 6e 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28  onfigFileTokens(
10250 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
10260 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  ng fileName,..  
10270 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
10280 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
10290 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
102a0 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
102b0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
102c0 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
102d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
102e0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
102f0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69  IsNullOrEmpty(fi
10300 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
10310 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
10330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10340 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10350 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
10360 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
10370 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
10380 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
10390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
103a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
103b0 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
103c0 70 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d  pty(directory)).
103d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
103f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10400 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75      value = valu
10410 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20  e.Replace(..    
10420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10430 20 20 20 20 20 20 20 20 20 20 58 6d 6c 43 6f 6e            XmlCon
10440 66 69 67 44 69 72 65 63 74 6f 72 79 54 6f 6b 65  figDirectoryToke
10450 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d 0a  n, directory);..
10460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10470 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10480 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
10490 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
104a0 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
104b0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
104c0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
104d0 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
104e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
104f0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
10500 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
10510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10520 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
10530 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
10540 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
10550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
10560 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
10570 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10590 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
105a0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
105b0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
105c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105e0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
105f0 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61  rentCulture, "Na
10600 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b  tive library " +
10610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10630 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
10640 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 58 4d  ed to replace XM
10650 4c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  L " +..         
10660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10670 20 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74       "configurat
10680 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 30 7d 5c 22  ion file \"{0}\"
10690 20 74 6f 6b 65 6e 73 3a 20 7b 31 7d 22 2c 0d 0a   tokens: {1}",..
106a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
106c0 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20  leName, e)); /* 
106d0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
10700 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
10750 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10760 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
10770 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
10780 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10790 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
107a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
107b0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
107c0 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
107d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
107e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10820 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
10830 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
10840 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
10850 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
10860 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
10870 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65  tting, using the
10880 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63  ..      /// spec
10890 69 66 69 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ified XML config
108a0 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
108b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
108c0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
108d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65  param name="file
108e0 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Name">..      //
108f0 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
10900 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
10910 69 6f 6e 20 66 69 6c 65 20 74 6f 20 72 65 61 64  ion file to read
10920 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
10930 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
10940 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
10950 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
10960 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
10970 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  setting...      
10980 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10990 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
109a0 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a  ame="default">..
109b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
109c0 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
109d0 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e  ed if the settin
109e0 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  g has not been s
109f0 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20  et explicitly.. 
10a00 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e       /// or cann
10a10 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
10a20 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
10a30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
10a40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 78   <param name="ex
10a50 70 61 6e 64 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  pand">..      //
10a60 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65 78  / Non-zero to ex
10a70 70 61 6e 64 20 61 6e 79 20 65 6e 76 69 72 6f 6e  pand any environ
10a80 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 72 65  ment variable re
10a90 66 65 72 65 6e 63 65 73 20 63 6f 6e 74 61 69 6e  ferences contain
10aa0 65 64 20 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ed in..      ///
10ab0 20 74 68 65 20 73 65 74 74 69 6e 67 20 76 61 6c   the setting val
10ac0 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
10ad0 64 2e 20 20 54 68 69 73 20 68 61 73 20 6e 6f 20  d.  This has no 
10ae0 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e  effect on the .N
10af0 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ET..      /// Co
10b00 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
10b10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
10b20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
10b30 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
10b40 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
10b50 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d 4f  f the setting -O
10b60 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  R- the default v
10b70 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62  alue specified b
10b80 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  y..      /// <pa
10b90 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66  ramref name="def
10ba0 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20 68  ault" /> if it h
10bb0 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
10bc0 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a 20  explicitly or.. 
10bd0 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20       /// cannot 
10be0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
10bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
10c00 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
10c10 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
10c20 67 20 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  g GetSettingValu
10c30 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  eViaXmlConfigFil
10c40 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
10c50 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 2f  ring fileName, /
10c60 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
10c70 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
10c80 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
10c90 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
10ca0 64 65 66 61 75 6c 74 2c 20 2f 2a 20 69 6e 20 2a  default, /* in *
10cb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f  /..          boo
10cc0 6c 20 65 78 70 61 6e 64 20 20 20 20 20 20 2f 2a  l expand      /*
10cd0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
10ce0 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
10cf0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10d10 20 20 20 20 20 20 20 20 69 66 20 28 28 66 69 6c          if ((fil
10d20 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c  eName == null) |
10d30 7c 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  | (name == null)
10d40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10d50 20 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66       return @def
10d60 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ault;....       
10d70 20 20 20 20 20 20 20 58 6d 6c 44 6f 63 75 6d 65         XmlDocume
10d80 6e 74 20 64 6f 63 75 6d 65 6e 74 20 3d 20 6e 65  nt document = ne
10d90 77 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 28 29 3b  w XmlDocument();
10da0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10db0 20 20 64 6f 63 75 6d 65 6e 74 2e 4c 6f 61 64 28    document.Load(
10dc0 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  fileName); /* th
10dd0 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  row */....      
10de0 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
10df0 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 64 6f 63  nt element = doc
10e00 75 6d 65 6e 74 2e 53 65 6c 65 63 74 53 69 6e 67  ument.SelectSing
10e10 6c 65 4e 6f 64 65 28 0d 0a 20 20 20 20 20 20 20  leNode(..       
10e20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
10e30 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
10e40 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
10e50 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
10e60 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
10e70 20 20 20 20 20 20 20 22 2f 63 6f 6e 66 69 67 75         "/configu
10e80 72 61 74 69 6f 6e 2f 61 70 70 53 65 74 74 69 6e  ration/appSettin
10e90 67 73 2f 61 64 64 5b 40 6b 65 79 3d 27 7b 30 7d  gs/add[@key='{0}
10ea0 27 5d 22 2c 20 6e 61 6d 65 29 29 20 61 73 0d 0a  ']", name)) as..
10eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ec0 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 3b 20 2f 2a    XmlElement; /*
10ed0 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
10ee0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
10ef0 6c 65 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  lement != null).
10f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
10f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
10f30 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
10f50 20 28 65 6c 65 6d 65 6e 74 2e 48 61 73 41 74 74   (element.HasAtt
10f60 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 29  ribute("value"))
10f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10f80 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
10f90 65 6c 65 6d 65 6e 74 2e 47 65 74 41 74 74 72 69  element.GetAttri
10fa0 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 0d 0a  bute("value");..
10fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10fc0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
10fd0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
10fe0 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
10ff0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
11000 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11010 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11030 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a 20    if (expand).. 
11040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11050 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11060 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 70   Environment.Exp
11070 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  andEnvironmentVa
11080 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b 0d  riables(value);.
11090 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
110a0 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
110b0 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d   ReplaceEnvironm
110c0 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e  entVariableToken
110d0 73 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  s(value);..#endi
110e0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
110f0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
11100 20 3d 20 52 65 70 6c 61 63 65 58 6d 6c 43 6f 6e   = ReplaceXmlCon
11110 66 69 67 46 69 6c 65 54 6f 6b 65 6e 73 28 66 69  figFileTokens(fi
11120 6c 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  leName, value);.
11130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11140 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11150 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
11160 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue != null)..  
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11180 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
11190 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
111a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
111b0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
111c0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48  T_20 && TRACE_SH
111d0 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  ARED..          
111e0 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
111f0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
11200 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
11210 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
11220 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  .          {..#i
11230 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
11240 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
11250 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
11260 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
11270 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11280 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
11290 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
112a0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
112b0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
112c0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
112d0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
112e0 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20  ulture, "Native 
112f0 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20  library " +..   
11300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11310 20 20 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66     "pre-loader f
11320 61 69 6c 65 64 20 74 6f 20 67 65 74 20 73 65 74  ailed to get set
11330 74 69 6e 67 20 5c 22 7b 30 7d 5c 22 20 76 61 6c  ting \"{0}\" val
11340 75 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ue " +..        
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
11360 72 6f 6d 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  rom XML configur
11370 61 74 69 6f 6e 20 66 69 6c 65 20 5c 22 7b 31 7d  ation file \"{1}
11380 5c 22 3a 20 7b 32 7d 22 2c 20 6e 61 6d 65 2c 0d  \": {2}", name,.
11390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
113a0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c         fileName,
113b0 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
113c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
113d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
113e0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
113f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11400 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
11410 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
11420 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
11430 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  dif..          }
11440 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
11450 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a  turn @default;..
11460 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11470 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
114c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
114d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
114e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
114f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  >..      /// Att
11500 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72 6d 69  empts to determi
11510 6e 65 20 74 68 65 20 74 61 72 67 65 74 20 66 72  ne the target fr
11520 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74  amework attribut
11530 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 0d  e value that is.
11540 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63  .      /// assoc
11550 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
11560 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64  pecified managed
11570 20 61 73 73 65 6d 62 6c 79 2c 20 69 66 20 61 70   assembly, if ap
11580 70 6c 69 63 61 62 6c 65 2e 0d 0a 20 20 20 20 20  plicable...     
11590 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
115a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
115b0 6d 20 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79  m name="assembly
115c0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
115d0 65 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  e managed assemb
115e0 6c 79 20 74 6f 20 72 65 61 64 20 74 68 65 20 74  ly to read the t
115f0 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
11600 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 0d  attribute value.
11610 0a 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 2e  .      /// from.
11620 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
11630 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
11640 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
11650 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
11660 66 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61  f the target fra
11670 6d 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65  mework attribute
11680 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 73   value for the s
11690 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20  pecified..      
116a0 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 61 73 73 65  /// managed asse
116b0 6d 62 6c 79 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  mbly -OR- null i
116c0 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
116d0 65 74 65 72 6d 69 6e 65 64 2e 20 20 49 66 20 74  etermined.  If t
116e0 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  his..      /// a
116f0 73 73 65 6d 62 6c 79 20 77 61 73 20 63 6f 6d 70  ssembly was comp
11700 69 6c 65 64 20 77 69 74 68 20 61 20 76 65 72 73  iled with a vers
11710 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e 45 54 20  ion of the .NET 
11720 46 72 61 6d 65 77 6f 72 6b 20 70 72 69 6f 72 20  Framework prior 
11730 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 65  to..      /// ve
11740 72 73 69 6f 6e 20 34 2e 30 2c 20 74 68 65 20 76  rsion 4.0, the v
11750 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 4d 41  alue returned MA
11760 59 20 72 65 66 6c 65 63 74 20 74 68 61 74 20 76  Y reflect that v
11770 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 2e 4e  ersion of the .N
11780 45 54 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 72  ET..      /// Fr
11790 61 6d 65 77 6f 72 6b 20 69 6e 73 74 65 61 64 20  amework instead 
117a0 6f 66 20 74 68 65 20 6f 6e 65 20 61 73 73 6f 63  of the one assoc
117b0 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
117c0 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64  pecified managed
117d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 65  ..      /// asse
117e0 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mbly...      ///
117f0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
11800 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
11810 63 20 73 74 72 69 6e 67 20 47 65 74 41 73 73 65  c string GetAsse
11820 6d 62 6c 79 54 61 72 67 65 74 46 72 61 6d 65 77  mblyTargetFramew
11830 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ork(..          
11840 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
11850 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  y..          )..
11860 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11870 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20     if (assembly 
11880 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
11890 20 20 20 20 7b 0d 0a 23 69 66 20 4e 45 54 5f 34      {..#if NET_4
118a0 30 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e  0 || NET_45 || N
118b0 45 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35  ET_451 || NET_45
118c0 32 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e  2 || NET_46 || N
118d0 45 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36  ET_461 || NET_46
118e0 32 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e  2 || NET_47 || N
118f0 45 54 5f 34 37 31 20 7c 7c 20 4e 45 54 5f 34 37  ET_471 || NET_47
11900 32 20 7c 7c 20 4e 45 54 5f 53 54 41 4e 44 41 52  2 || NET_STANDAR
11910 44 5f 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20  D_20..          
11920 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
11930 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11950 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69 6e  assembly.IsDefin
11960 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed(..           
11970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
11980 79 70 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d  ypeof(TargetFram
11990 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c  eworkAttribute),
119a0 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20   false))..      
119b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
119c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119d0 20 20 20 20 20 54 61 72 67 65 74 46 72 61 6d 65       TargetFrame
119e0 77 6f 72 6b 41 74 74 72 69 62 75 74 65 20 74 61  workAttribute ta
119f0 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d 0d  rgetFramework =.
11a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11a10 20 20 20 20 20 20 20 20 20 20 20 28 54 61 72 67             (Targ
11a20 65 74 46 72 61 6d 65 77 6f 72 6b 41 74 74 72 69  etFrameworkAttri
11a30 62 75 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bute)..         
11a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a50 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73   assembly.GetCus
11a60 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a  tomAttributes(..
11a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
11a90 70 65 6f 66 28 54 61 72 67 65 74 46 72 61 6d 65  peof(TargetFrame
11aa0 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 2c 20  workAttribute), 
11ab0 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20  false)[0];....  
11ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ad0 20 20 20 20 72 65 74 75 72 6e 20 74 61 72 67 65      return targe
11ae0 74 46 72 61 6d 65 77 6f 72 6b 2e 46 72 61 6d 65  tFramework.Frame
11af0 77 6f 72 6b 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  workName;..     
11b00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
11b30 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
11b40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11b50 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
11b60 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
11b70 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 69 66 20         }..#elif 
11b80 4e 45 54 5f 33 35 0d 0a 20 20 20 20 20 20 20 20  NET_35..        
11b90 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 2e 4e        return ".N
11ba0 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73  ETFramework,Vers
11bb0 69 6f 6e 3d 76 33 2e 35 22 3b 0d 0a 23 65 6c 69  ion=v3.5";..#eli
11bc0 66 20 4e 45 54 5f 32 30 0d 0a 20 20 20 20 20 20  f NET_20..      
11bd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
11be0 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
11bf0 72 73 69 6f 6e 3d 76 32 2e 30 22 3b 0d 0a 23 65  rsion=v2.0";..#e
11c00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
11c10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
11c20 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
11c30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11ca0 20 20 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74        /// Accept
11cb0 73 20 61 20 6c 6f 6e 67 20 74 61 72 67 65 74 20  s a long target 
11cc0 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
11cd0 75 74 65 20 76 61 6c 75 65 20 61 6e 64 20 6d 61  ute value and ma
11ce0 6b 65 73 20 69 74 20 69 6e 74 6f 20 61 0d 0a 20  kes it into a.. 
11cf0 20 20 20 20 20 2f 2f 2f 20 6d 75 63 68 20 73 68       /// much sh
11d00 6f 72 74 65 72 20 76 65 72 73 69 6f 6e 2c 20 73  orter version, s
11d10 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73 65 20  uitable for use 
11d20 77 69 74 68 20 4e 75 47 65 74 20 70 61 63 6b 61  with NuGet packa
11d30 67 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ges...      /// 
11d40 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11d50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11d60 65 3d 22 74 61 72 67 65 74 46 72 61 6d 65 77 6f  e="targetFramewo
11d70 72 6b 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rk">..      /// 
11d80 54 68 65 20 6c 6f 6e 67 20 74 61 72 67 65 74 20  The long target 
11d90 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
11da0 75 74 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  ute value to con
11db0 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  vert...      ///
11dc0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
11dd0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
11de0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 68        /// The sh
11df0 6f 72 74 20 74 61 72 67 65 74 20 66 72 61 6d 65  ort target frame
11e00 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
11e10 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  alue -OR- null i
11e20 66 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20  f it cannot..   
11e30 20 20 20 2f 2f 2f 20 62 65 20 64 65 74 65 72 6d     /// be determ
11e40 69 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72 74 65  ined or converte
11e50 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
11e60 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11e70 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
11e80 74 72 69 6e 67 20 41 62 62 72 65 76 69 61 74 65  tring Abbreviate
11e90 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28  TargetFramework(
11ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
11eb0 6e 67 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  ng targetFramewo
11ec0 72 6b 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  rk..          ).
11ed0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
11ee0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
11ef0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 61  IsNullOrEmpty(ta
11f00 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 29 0d  rgetFramework)).
11f10 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
11f20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
11f30 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
11f40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11f50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11f60 20 20 20 20 20 20 73 74 72 69 6e 67 20 61 62 62        string abb
11f70 72 65 76 69 61 74 69 6f 6e 3b 0d 0a 0d 0a 20 20  reviation;....  
11f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f90 69 66 20 28 74 61 72 67 65 74 46 72 61 6d 65 77  if (targetFramew
11fa0 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f 6e 73  orkAbbreviations
11fb0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
11fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 20 20 20 20 69 66 20 28 74 61 72 67 65 74        if (target
11ff0 46 72 61 6d 65 77 6f 72 6b 41 62 62 72 65 76 69  FrameworkAbbrevi
12000 61 74 69 6f 6e 73 2e 54 72 79 47 65 74 56 61 6c  ations.TryGetVal
12010 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12030 20 20 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f     targetFramewo
12040 72 6b 2c 20 6f 75 74 20 61 62 62 72 65 76 69 61  rk, out abbrevia
12050 74 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20  tion))..        
12060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12090 6e 20 61 62 62 72 65 76 69 61 74 69 6f 6e 3b 0d  n abbreviation;.
120a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
120c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
120d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120e0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
120f0 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b           // HACK
12100 3a 20 2a 4c 45 47 41 43 59 2a 20 46 61 6c 6c 62  : *LEGACY* Fallb
12110 61 63 6b 20 74 6f 20 74 68 65 20 6f 6c 64 20 6d  ack to the old m
12120 65 74 68 6f 64 20 6f 66 0d 0a 20 20 20 20 20 20  ethod of..      
12130 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
12140 20 20 20 20 20 61 62 62 72 65 76 69 61 74 69 6e       abbreviatin
12150 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f  g target framewo
12160 72 6b 20 6e 61 6d 65 73 2e 0d 0a 20 20 20 20 20  rk names...     
12170 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
12180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12190 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74     int index = t
121a0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e 49  argetFramework.I
121b0 6e 64 65 78 4f 66 28 0d 0a 20 20 20 20 20 20 20  ndexOf(..       
121c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
121d0 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56 65  .NETFramework,Ve
121e0 72 73 69 6f 6e 3d 76 22 29 3b 0d 0a 0d 0a 20 20  rsion=v");....  
121f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12200 69 66 20 28 69 6e 64 65 78 20 21 3d 20 2d 31 29  if (index != -1)
12210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12220 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12230 20 20 20 20 20 20 20 20 20 20 20 20 20 61 62 62               abb
12240 72 65 76 69 61 74 69 6f 6e 20 3d 20 74 61 72 67  reviation = targ
12250 65 74 46 72 61 6d 65 77 6f 72 6b 3b 0d 0a 0d 0a  etFramework;....
12260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12270 20 20 20 20 20 20 61 62 62 72 65 76 69 61 74 69        abbreviati
12280 6f 6e 20 3d 20 61 62 62 72 65 76 69 61 74 69 6f  on = abbreviatio
12290 6e 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20  n.Replace(..    
122a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122b0 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61 6d 65        ".NETFrame
122c0 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c  work,Version=v",
122d0 20 22 6e 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20   "net");....    
122e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122f0 20 20 61 62 62 72 65 76 69 61 74 69 6f 6e 20 3d    abbreviation =
12300 20 61 62 62 72 65 76 69 61 74 69 6f 6e 2e 52 65   abbreviation.Re
12310 70 6c 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  place(..        
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12330 20 20 22 2e 22 2c 20 53 74 72 69 6e 67 2e 45 6d    ".", String.Em
12340 70 74 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pty);....       
12350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12360 6e 64 65 78 20 3d 20 61 62 62 72 65 76 69 61 74  ndex = abbreviat
12370 69 6f 6e 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29  ion.IndexOf(',')
12380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
123a0 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a 20 20 20  ndex != -1)..   
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 62         return ab
123d0 62 72 65 76 69 61 74 69 6f 6e 2e 53 75 62 73 74  breviation.Subst
123e0 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 3b 0d  ring(0, index);.
123f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12400 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
12410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12420 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 62         return ab
12430 62 72 65 76 69 61 74 69 6f 6e 3b 0d 0a 20 20 20  breviation;..   
12440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12460 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
12470 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
12480 72 6e 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  rn targetFramewo
12490 72 6b 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  rk;..      }....
124a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
124b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
124f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
12500 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
12510 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20  / If necessary, 
12520 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70  replaces all sup
12530 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65  ported environme
12540 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65  nt variable toke
12550 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  ns..      /// wi
12560 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69 61  th their associa
12570 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  ted values...   
12580 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12590 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
125a0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
125b0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  >..      /// A s
125c0 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61  etting value rea
125d0 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72 6f  d from an enviro
125e0 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d  nment variable..
125f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
12600 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
12610 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
12620 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
12630 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e   the <paramref n
12640 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77  ame="value" /> w
12650 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ill all supporte
12660 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  d..      /// env
12670 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
12680 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
12690 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
126a0 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
126b0 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
126c0 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
126d0 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
126e0 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
126f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
12700 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
12710 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
12720 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74  placeEnvironment
12730 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 0d  VariableTokens(.
12740 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
12750 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
12760 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
12770 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
12780 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12790 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
127a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
127b0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
127c0 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63  rectory = GetCac
127d0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
127e0 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
127f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
12800 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12810 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
12820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12840 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
12850 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12870 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
12880 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
12890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128a0 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72       AssemblyDir
128b0 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72  ectoryToken, dir
128c0 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  ectory);..      
128d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
128e0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
128f0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
12900 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
12910 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
12920 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
12930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12940 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
12950 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12970 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
12980 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
12990 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
129a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
129b0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
129c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
129f0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
12a00 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
12a10 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a30 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
12a40 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
12a50 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
12a60 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
12a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a80 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
12a90 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61  led to replace a
12aa0 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20  ssembly " +..   
12ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ac0 20 20 20 20 20 20 20 20 20 20 20 22 64 69 72 65             "dire
12ad0 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d  ctory token: {0}
12ae0 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
12af0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
12b00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
12b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12b60 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b80 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
12b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12bb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12bc0 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
12bd0 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  sembly = null;..
12be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bf0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
12c00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12c10 20 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79          assembly
12c20 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
12c30 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
12c40 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
12c50 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
12c60 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
12c70 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
12c80 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
12c90 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
12ca0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
12cb0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
12cc0 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
12cd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
12ce0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
12cf0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
12d00 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
12d10 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12d20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d40 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
12d50 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
12d60 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
12d70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
12d90 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
12da0 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
12db0 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12dd0 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
12de0 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62  der failed to ob
12df0 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22  tain executing "
12e00 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
12e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61                "a
12e20 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
12e30 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
12e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12e50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12e60 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12e90 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
12ea0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
12eb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
12ec0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
12ed0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12ee0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
12ef0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d  argetFramework =
12f00 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
12f10 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
12f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
12f30 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74  etAssemblyTarget
12f40 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62  Framework(assemb
12f50 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
12f60 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
12f70 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
12f80 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (targetFramework
12f90 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12fa0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12fb0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12fe0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
12ff0 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20  alue.Replace(.. 
13000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13010 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46           TargetF
13020 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74  rameworkToken, t
13030 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b  argetFramework);
13040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13050 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
13060 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
13070 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
13090 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
130a0 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
130b0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
130c0 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
130d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
130e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
130f0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
13100 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
13110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13120 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13140 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
13160 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
13170 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
13180 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
13190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131a0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
131b0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
131c0 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
131d0 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
131e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131f0 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
13200 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
13210 65 70 6c 61 63 65 20 74 61 72 67 65 74 20 22 20  eplace target " 
13220 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
13230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13240 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65   "framework toke
13250 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  n: {0}", e)); /*
13260 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13280 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13290 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
132a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
132b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132d0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
132e0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
132f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13300 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
13310 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13320 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13330 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13340 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
13350 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
13360 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
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 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
133c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
133d0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
133e0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  d returns the va
133f0 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  lue of the speci
13400 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73  fied setting, us
13410 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  ing the XML..   
13420 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
13430 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72  tion file and/or
13440 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
13450 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74   variables for t
13460 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
13470 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e    /// process an
13480 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  d/or the current
13490 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76   system, when av
134a0 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
134b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
134c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
134d0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
134e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
134f0 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
13500 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
13510 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
13520 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
13530 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
13540 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
13550 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
13560 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
13570 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
13580 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
13590 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
135a0 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
135b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
135c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
135d0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
135e0 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
135f0 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65  setting -OR- the
13600 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73   default value s
13610 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20  pecified by..   
13620 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
13630 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20   name="default" 
13640 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74  /> if it has not
13650 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
13660 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f  itly or..      /
13670 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
13680 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66  ermined.  By def
13690 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65  ault, all refere
136a0 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67  nces to existing
136b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69  ..      /// envi
136c0 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
136d0 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64  s will be expand
136e0 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72  ed to their corr
136f0 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73  esponding values
13700 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
13710 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20  in the value to 
13720 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65  be returned unle
13730 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e  ss either the "N
13740 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20  o_Expand" or..  
13750 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61      /// "No_Expa
13760 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  nd_<paramref nam
13770 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76  e="name" />" env
13780 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
13790 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20  e is set [to..  
137a0 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67      /// anything
137b0 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ]...      /// </
137c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
137d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
137e0 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e  string GetSettin
137f0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
13800 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
13810 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
13820 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
13830 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d  efault /* in */.
13840 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
13850 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
13860 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13870 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
13880 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
13890 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
138a0 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74  pecial "No_SQLit
138b0 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
138c0 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
138d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
138e0 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
138f0 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c  t [to anything],
13900 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
13910 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20  l always..      
13920 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
13930 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  urn the default 
13940 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
13950 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13960 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
13970 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
13980 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
13990 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c           "No_SQL
139a0 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
139b0 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ue") != null).. 
139c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
139d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
139e0 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
139f0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
13a00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
13a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
13a60 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
13a70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13a80 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
13a90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
13aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ae0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13af0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
13b00 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
13b10 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
13b20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
13b30 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61  / NOTE: We are a
13b40 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73  bout to read a s
13b50 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f  etting value fro
13b60 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  m the environmen
13b70 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
13b80 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c        or possibl
13b90 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63  y from the XML c
13ba0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
13bb0 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20  e; create or..  
13bc0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
13bd0 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61   increment the a
13be0 70 70 72 6f 70 72 69 61 74 65 20 73 74 61 74 69  ppropriate stati
13bf0 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stic now...     
13c00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13c10 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
13c20 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
13c30 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c  dCount(name, fal
13c40 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  se);..#endif..  
13c50 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13c60 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
13c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cb0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13cc0 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d     bool expand =
13cd0 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44   true; /* SHARED
13ce0 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41  : Environment -A
13cf0 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66  ND- XML config f
13d00 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  ile. */....     
13d10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
13d60 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13d70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13d80 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
13d90 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
13da0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
13db0 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
13dc0 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
13dd0 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d  ("No_Expand") !=
13de0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13df0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13e00 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73     expand = fals
13e10 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
13e20 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20  .          else 
13e30 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
13e40 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
13e50 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
13e60 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
13e70 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
13e80 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
13e90 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
13ea0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
13eb0 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e         "No_Expan
13ec0 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21  d_{0}", name)) !
13ed0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13ee0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13ef0 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
13f00 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
13f10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
13f20 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
13f30 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
13f40 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d  Variable(name);.
13f50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
13f60 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
13f70 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
13f80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13f90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
13fa0 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
13fb0 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
13fc0 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
13fd0 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
13fe0 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
13ff0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14000 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
14010 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
14020 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
14030 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
14040 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
14050 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
14060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
14070 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a  eturn value;....
14080 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14090 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
140a0 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69   If the "No_SQLi
140b0 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22  teXmlConfigFile"
140c0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
140d0 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20  iable is..      
140e0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74      //       set
140f0 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
14100 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
14110 20 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d   NEVER read from
14120 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
14130 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e  //       XML con
14140 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
14150 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
14160 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
14170 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
14180 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
14190 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
141a0 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c     "No_SQLiteXml
141b0 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20  ConfigFile") != 
141c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
141d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
141e0 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
141f0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
14200 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
14210 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14260 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14270 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
14280 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
14290 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
142a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
142b0 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65   are about to re
142c0 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c  ad a setting val
142d0 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ue from the XML.
142e0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
142f0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
14300 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f  n file; create o
14310 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20  r increment the 
14320 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20  appropriate..   
14330 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
14340 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a  statistic now...
14350 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14360 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
14370 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  a.IncrementSetti
14380 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65  ngReadCount(name
14390 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66  , true);..#endif
143a0 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
143b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
143c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
143d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14400 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14410 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
14420 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61  tSettingValueVia
14430 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a  XmlConfigFile(..
14440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
14450 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  tCachedXmlConfig
14460 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d 65  FileName(), name
14470 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78 70 61  , @default, expa
14480 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  nd);..      }...
14490 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
144f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
14500 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  RK..      privat
14510 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
14520 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69  ListToString(ILi
14530 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29  st<string> list)
14540 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
14550 20 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d       if (list ==
14560 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14570 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
14580 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
14590 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65  StringBuilder re
145a0 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e  sult = new Strin
145b0 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20  gBuilder();.... 
145c0 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
145d0 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74   (string element
145e0 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20   in list)..     
145f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14600 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
14610 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
14620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
14630 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
14640 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
14650 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
14660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14670 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
14680 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (' ');....      
14690 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
146a0 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d  ppend(element);.
146b0 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
146c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
146d0 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
146e0 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ();..      }....
146f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14740 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
14750 20 73 74 61 74 69 63 20 69 6e 74 20 43 68 65 63   static int Chec
14760 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
14770 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a  sAndPlatforms(..
14780 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14790 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
147a0 20 20 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c         ref List<
147b0 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d  string> matches.
147c0 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
147d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
147e0 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b   int result = 0;
147f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
14800 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c   (matches == nul
14810 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14820 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20    matches = new 
14830 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
14840 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
14850 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
14860 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
14870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
14880 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
14890 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
148a0 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ry) &&..        
148b0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65            (proce
148c0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
148d0 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c  Platforms != nul
148e0 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
148f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14900 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
14910 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74  (KeyValuePair<st
14920 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61  ring, string> pa
14930 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
14940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14950 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  in processorArch
14960 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
14970 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
14980 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
149a0 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69  f (Directory.Exi
149b0 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  sts(MaybeCombine
149c0 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
149d0 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
149e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a10 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
14a20 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
14a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a40 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
14a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
14a80 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
14a90 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ab0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
14ac0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ae0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
14af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b00 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
14b10 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
14b20 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
14b30 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20  ry, value)))..  
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b70 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c   matches.Add(val
14b80 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
14b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ba0 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
14bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14bd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14be0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14bf0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14c00 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
14c10 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
14c20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14c70 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
14c80 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b  tatic bool Check
14c90 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
14ca0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  (..          Ass
14cb0 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d  embly assembly,.
14cc0 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
14cd0 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
14ce0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
14cf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14d00 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
14d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20  if (assembly == 
14d30 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14d40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14d50 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
14d60 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
14d70 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62  odeBase = assemb
14d80 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a  ly.CodeBase;....
14d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14da0 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
14db0 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29  rEmpty(codeBase)
14dc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14dd0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
14de0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
14df0 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65      Uri uri = ne
14e00 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b  w Uri(codeBase);
14e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14e20 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65  string localFile
14e30 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c  Name = uri.Local
14e40 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Path;....       
14e50 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
14e60 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c  .Exists(localFil
14e70 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
14e80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14e90 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
14ea0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14eb0 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
14ec0 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
14ed0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
14ee0 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65         localFile
14ef0 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
14f00 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
14f10 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f      string xmlCo
14f20 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d  nfigFileName = M
14f30 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
14f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f50 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58      directory, X
14f60 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
14f70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14f80 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
14f90 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  sts(xmlConfigFil
14fa0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
14fb0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
14fc0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
14fd0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
14fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14ff0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
15000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15020 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
15030 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
15040 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
15050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15060 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
15070 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
15080 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
15090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150a0 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
150b0 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
150c0 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  nd XML configura
150d0 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20  tion file " +.. 
150e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150f0 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
15100 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
15110 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
15120 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
15130 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
15140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
15150 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
15160 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
15170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15180 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15190 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
151c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
151d0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
151e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
151f0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
15200 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
15210 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e  ame = localFileN
15220 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
15230 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
15240 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
15250 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15260 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69         List<stri
15270 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75  ng> matches = nu
15280 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
15290 20 20 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f       if (CheckFo
152a0 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e  rArchitecturesAn
152b0 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63  dPlatforms(direc
152c0 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65  tory, ref matche
152d0 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  s) > 0)..       
152e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
152f0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
15300 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
15310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15320 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
15330 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15350 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
15360 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
15370 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
15380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15390 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
153a0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
153b0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153d0 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
153e0 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
153f0 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69  nd native sub-di
15400 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20  rectories " +.. 
15410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15420 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
15430 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
15440 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
15450 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
15460 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
15470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c                 L
15480 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63  istToString(matc
15490 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77  hes))); /* throw
154a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
154b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
154c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
154d0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
154e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
154f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15500 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
15510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15520 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
15530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
15540 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46  ileName = localF
15550 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
15560 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15570 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
15580 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15590 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
155a0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
155b0 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
155c0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
155d0 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
155e0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
155f0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
15600 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
15610 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
15620 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
15630 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
15640 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
15650 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
15660 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
15670 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15690 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
156a0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
156b0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
156c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156d0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
156e0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
15710 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
15720 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20  failed to check 
15730 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20  code base " +.. 
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15750 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e       "for curren
15760 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
15770 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29  sembly: {0}", e)
15780 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
15790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
157a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
157b0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
157c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
157d0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
157e0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
157f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
15800 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
15810 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
15820 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
15830 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
15840 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15890 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
158a0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65 73  >..      /// Res
158b0 65 74 73 20 74 68 65 20 63 61 63 68 65 64 20 61  ets the cached a
158c0 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
158d0 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  y value, thus fo
158e0 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74 0d 0a  rcing the next..
158f0 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20 74        /// call t
15900 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
15910 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
15920 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
15930 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
15940 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
15950 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
15960 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
15970 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
15980 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
15990 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63  / assembly direc
159a0 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tory...      ///
159b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
159c0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
159d0 63 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68  c void ResetCach
159e0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
159f0 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
15a00 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
15a10 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
15a20 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
15a30 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
15a40 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
15a50 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52  rCount("Method_R
15a60 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
15a70 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a  lyDirectory");..
15a80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
15a90 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15aa0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
15ab0 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
15ac0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
15ad0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
15ae0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
15af0 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
15b00 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
15b10 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
15b20 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
15b30 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
15b40 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
15b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15ba0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15bb0 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
15bc0 75 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20  urns the cached 
15bd0 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
15be0 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
15bf0 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ntly..      /// 
15c00 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20  being executed, 
15c10 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49  if available.  I
15c20 66 20 74 68 65 20 63 61 63 68 65 64 20 61 73 73  f the cached ass
15c30 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20  embly directory 
15c40 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
15c50 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
15c60 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
15c70 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
15c80 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
15c90 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  d will..      //
15ca0 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74  / be used to obt
15cb0 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79  ain the assembly
15cc0 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
15cd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15ce0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
15cf0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
15d00 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20  / The directory 
15d10 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
15d20 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
15d30 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e   executed -OR- n
15d40 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ull if..      //
15d50 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
15d60 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
15d70 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
15d80 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
15d90 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
15da0 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
15db0 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
15dc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
15dd0 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
15de0 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
15df0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  UG..          De
15e00 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
15e10 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74  tOtherCount("Met
15e20 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41 73 73  hod_GetCachedAss
15e30 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29  emblyDirectory")
15e40 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
15e50 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
15e60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
15e70 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
15e80 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
15e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
15ea0 66 20 28 63 61 63 68 65 64 41 73 73 65 6d 62 6c  f (cachedAssembl
15eb0 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  yDirectory != nu
15ec0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
15ed0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
15ee0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
15ef0 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
15f00 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 41 73          if (noAs
15f10 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 29  semblyDirectory)
15f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f30 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15f40 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
15f50 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
15f60 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  n GetAssemblyDir
15f70 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20  ectory();..     
15f80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fd0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
15fe0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15ff0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
16000 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 69  d returns the di
16010 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
16020 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
16030 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  ly being..      
16040 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20  /// executed... 
16050 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16060 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
16070 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
16080 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
16090 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
160a0 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
160b0 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
160c0 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
160d0 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
160e0 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
160f0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
16100 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
16110 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
16120 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
16130 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
16140 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
16150 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
16160 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
16170 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
16180 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
16190 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
161a0 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
161b0 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory");..#endif.
161c0 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
161d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
161e0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
161f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16200 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
16210 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e  mbly = Assembly.
16220 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65  GetExecutingAsse
16230 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly();....     
16240 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
16250 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
16260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16280 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
16290 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
162a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
162b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
162c0 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
162d0 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
162e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
162f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
16300 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16310 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
16320 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16330 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
16340 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c   fileName = null
16350 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ;....#if PLATFOR
16360 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16370 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
16380 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61    AssemblyName a
16390 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73  ssemblyName = as
163a0 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29  sembly.GetName()
163b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
163c0 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e     if (assemblyN
163d0 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
163e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
163f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16400 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
16410 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
16420 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16440 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
16450 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
16460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16470 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16480 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
16490 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
164a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
164b0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
164c0 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e   = assemblyName.
164d0 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65  CodeBase;..#else
164e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
164f0 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62  if (!CheckAssemb
16500 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d  lyCodeBase(assem
16510 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d  bly, ref fileNam
16520 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
16530 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
16540 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74  = assembly.Locat
16550 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
16560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
16570 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
16580 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
16590 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
165a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
165b0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
165c0 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
165d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
165e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
165f0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
16600 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
16610 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
16620 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
16640 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
16650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16660 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
16670 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
16680 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
16690 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
166a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
166b0 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
166c0 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
166d0 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
166e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
166f0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
16700 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
16710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16720 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16730 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
16740 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
16750 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
16760 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
16770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16780 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
16790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
167a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
167b0 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
167c0 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
167d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
167e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
167f0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
16800 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
16810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16820 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
16830 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
16840 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
16850 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
16860 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
16870 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
16880 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
16890 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
168a0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
168b0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
168c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
168d0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
168e0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
168f0 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
16900 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
16910 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16920 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
16930 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
16940 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
16950 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
16960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
16970 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
16980 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
169a0 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
169b0 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
169c0 65 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74  ed to get direct
169d0 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ory " +..       
169e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
169f0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
16a00 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
16a10 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
16a20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
16a30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16a40 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
16a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16a70 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
16a80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16a90 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
16aa0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16ab0 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
16ac0 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
16ad0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16ae0 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
16af0 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
16b00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
16b10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
16b20 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
16b30 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
16b40 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16ba0 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61   #region Optiona
16bb0 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l Native SQLite 
16bc0 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64  Library Pre-Load
16bd0 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20  ing Code..      
16be0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
16bf0 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f 6f  E: If we are loo
16c00 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74 61  king for the sta
16c10 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c 4c  ndard SQLite DLL
16c20 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29   ("sqlite3.dll")
16c30 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  ,..      //     
16c40 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44 4c    the interop DL
16c50 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65 72  L ("SQLite.Inter
16c60 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20  op.dll"), or we 
16c70 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  are running on t
16c80 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  he..      //    
16c90 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20     .NET Compact 
16ca0 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68  Framework, we sh
16cb0 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68 69  ould include thi
16cc0 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20  s code (only if 
16cd0 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
16ce0 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73 20      feature has 
16cf0 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e  actually been en
16d00 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63 6f  abled).  This co
16d10 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74 61  de would be tota
16d20 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  lly..      //   
16d30 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69 66      redundant if
16d40 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 73   this module has
16d50 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e   been bundled in
16d60 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  to the mixed-mod
16d70 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
16d80 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20    assembly...   
16d90 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54     //..#if SQLIT
16da0 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
16db0 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
16dc0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
16dd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20  TFRAMEWORK....  
16de0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
16df0 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70   NOTE: Only comp
16e00 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69 76  ile in the nativ
16e10 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
16e20 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20 66  ad code if the f
16e30 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f  eature..      //
16e40 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20         has been 
16e50 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69 73  enabled for this
16e60 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f   build...      /
16e70 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  /..#if PRELOAD_N
16e80 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
16e90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16ea0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
16eb0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e  e name of the en
16ec0 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
16ed0 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  le containing th
16ee0 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
16ef0 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
16f00 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
16f10 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
16f20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16f30 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
16f40 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
16f50 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53 4f   string PROCESSO
16f60 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 3d  R_ARCHITECTURE =
16f70 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52 4f  ..          "PRO
16f80 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
16f90 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  URE";....      /
16fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16ff0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
17000 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
17010 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17020 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
17030 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61  e module file na
17040 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
17050 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
17060 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   or null...     
17070 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17080 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
17090 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53  static string _S
170a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
170b0 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  eFileName = null
170c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17110 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
17120 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17130 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
17140 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
17150 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
17160 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
17170 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
17180 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
17190 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
171a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
171b0 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
171c0 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  Ptr _SQLiteNativ
171d0 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
171e0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
171f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
17200 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
17260 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17270 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
17280 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
17290 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64 69 72  (without any dir
172a0 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69  ectory informati
172b0 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  on)..      /// f
172c0 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
172d0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20  Lite library to 
172e0 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79  be pre-loaded by
172f0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
17300 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17310 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
17320 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
17330 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69 6c 65  // The base file
17340 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
17350 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
17360 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
17370 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  aded by..      /
17380 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20 2d 4f  // this class -O
17390 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73 20 76  R- null if its v
173a0 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65 20 64  alue cannot be d
173b0 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
173c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
173d0 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
173e0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
173f0 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
17400 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20  ileNameOnly().. 
17410 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17420 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
17430 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74 74 69  eOnly = GetSetti
17440 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
17450 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
17460 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79 46 69  SQLite_LibraryFi
17470 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c  leNameOnly", nul
17480 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
17490 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
174a0 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
174b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
174c0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a   fileNameOnly;..
174d0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
174e0 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f  rn SQLITE_DLL; /
174f0 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20 20  * COMPAT */..   
17500 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
17560 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17570 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68 65 73      /// Searches
17580 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
17590 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69  SQLite library i
175a0 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  n the directory 
175b0 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
175c0 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d 62    /// the assemb
175d0 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
175e0 6e 67 20 65 78 65 63 75 74 65 64 20 61 73 20 77  ng executed as w
175f0 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73 65 20  ell as the base 
17600 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
17610 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63 75 72   /// for the cur
17620 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
17630 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
17640 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17650 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17660 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
17670 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
17680 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
17690 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77  this parameter w
176a0 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ill be modified 
176b0 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  to refer to the 
176c0 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  base..      /// 
176d0 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
176e0 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ning the native 
176f0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
17700 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
17710 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
17720 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
17730 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
17740 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  e">..      /// U
17750 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
17760 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
17770 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
17780 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e 61 6d  refer to the nam
17790 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  e..      /// of 
177a0 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 64 69  the immediate di
177b0 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20 74 68  rectory (i.e. th
177c0 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  e offset from th
177d0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
177e0 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  )..      /// con
177f0 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69  taining the nati
17800 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
17810 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
17820 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
17830 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
17840 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
17850 79 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f  yOnly">..      /
17860 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
17870 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
17880 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
17890 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 6c   to non-zero onl
178a0 79 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y if..      /// 
178b0 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
178c0 72 79 20 69 74 73 65 6c 66 20 73 68 6f 75 6c 64  ry itself should
178d0 20 62 65 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20   be allowed for 
178e0 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69  loading the nati
178f0 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ve..      /// li
17900 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
17910 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17920 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
17930 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
17940 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69 66  ero (success) if
17950 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
17960 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 66  te library was f
17970 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  ound; otherwise,
17980 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  ..      /// zero
17990 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20   (failure)...   
179a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
179b0 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
179c0 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61   static bool Sea
179d0 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28  rchForDirectory(
179e0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
179f0 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
17a00 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 2f 2a  tory,         /*
17a10 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
17a20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
17a30 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
17a40 75 72 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ure, /* out */..
17a50 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 6f            ref bo
17a60 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65  ol allowBaseDire
17a70 63 74 6f 72 79 4f 6e 6c 79 20 20 20 2f 2a 20 6f  ctoryOnly   /* o
17a80 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
17a90 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
17aa0 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
17ab0 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
17ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
17ad0 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65  eLoadSQLite_NoSe
17ae0 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
17af0 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
17b00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
17b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17b20 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44  turn false; /* D
17b30 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20  ISABLED */..    
17b40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17b50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
17b60 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
17b70 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
17b80 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
17b90 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
17ba0 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
17bb0 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
17bc0 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
17bd0 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
17be0 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
17bf0 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
17c00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
17c10 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
17c20 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
17c30 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
17c40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17c50 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
17c60 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
17c70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17c80 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
17c90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17ca0 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
17cb0 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73   the list of bas
17cc0 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e  e directories an
17cd0 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74  d processor/plat
17ce0 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20  form..          
17cf0 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20  //       names. 
17d00 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c   These lists wil
17d10 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  l be used to hel
17d20 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74  p locate the nat
17d30 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ive..          /
17d40 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63  /       SQLite c
17d50 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20  ore library (or 
17d60 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
17d70 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e  ) to pre-load in
17d80 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
17d90 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63         this proc
17da0 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
17db0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
17dc0 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69  ring[] directori
17dd0 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
17de0 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
17df0 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23  yDirectory(),..#
17e00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17e10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17e20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70               App
17e30 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
17e40 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
17e50 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ry,..#endif..   
17e60 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
17e70 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 78         string ex
17e80 74 72 61 53 75 62 44 69 72 65 63 74 6f 72 79 20  traSubDirectory 
17e90 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
17ea0 20 20 20 20 20 69 66 20 28 28 47 65 74 53 65 74       if ((GetSet
17eb0 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
17ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
17ed0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 6c 6c  reLoadSQLite_All
17ee0 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f  owBaseDirectoryO
17ef0 6e 6c 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  nly", null) != n
17f00 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ull) ||..       
17f10 20 20 20 20 20 20 20 28 48 65 6c 70 65 72 4d 65         (HelperMe
17f20 74 68 6f 64 73 2e 49 73 44 6f 74 4e 65 74 43 6f  thods.IsDotNetCo
17f30 72 65 28 29 20 26 26 20 21 48 65 6c 70 65 72 4d  re() && !HelperM
17f40 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73  ethods.IsWindows
17f50 28 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ()))..          
17f60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17f70 20 65 78 74 72 61 53 75 62 44 69 72 65 63 74 6f   extraSubDirecto
17f80 72 79 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  ry = String.Empt
17f90 79 3b 20 2f 2a 20 2e 4e 45 54 20 43 6f 72 65 20  y; /* .NET Core 
17fa0 6f 6e 20 50 4f 53 49 58 20 2a 2f 0d 0a 20 20 20  on POSIX */..   
17fb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17fc0 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73        string[] s
17fd0 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ubDirectories = 
17fe0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17ff0 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
18000 68 69 74 65 63 74 75 72 65 28 29 2c 20 2f 2a 20  hitecture(), /* 
18010 65 2e 67 2e 20 22 78 38 36 22 20 2a 2f 0d 0a 20  e.g. "x86" */.. 
18020 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
18030 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c  PlatformName(nul
18040 6c 29 2c 20 20 20 20 20 20 2f 2a 20 65 2e 67 2e  l),      /* e.g.
18050 20 22 57 69 6e 33 32 22 20 2a 2f 0d 0a 20 20 20   "Win32" */..   
18060 20 20 20 20 20 20 20 20 20 20 20 65 78 74 72 61             extra
18070 53 75 62 44 69 72 65 63 74 6f 72 79 20 20 20 20  SubDirectory    
18080 20 20 20 20 20 20 20 2f 2a 20 62 61 73 65 20 64         /* base d
18090 69 72 65 63 74 6f 72 79 20 6f 6e 6c 79 3f 20 2a  irectory only? *
180a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  /..          };.
180b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
180c0 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
180d0 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
180e0 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
180f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18100 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
18110 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
18120 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
18130 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
18140 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
18150 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
18160 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
18170 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
18180 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18190 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
181a0 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
181b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
181c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
181d0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
181e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
181f0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
18200 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
18210 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
18220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18230 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
18240 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
18250 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
18260 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
18270 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
18280 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
18290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
182a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
182b0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
182c0 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
182d0 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
182e0 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
182f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18300 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
18310 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
18320 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
18330 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
18340 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
18350 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
18360 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
18370 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
18380 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
18390 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
183a0 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
183b0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
183c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
183d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
183e0 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
183f0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
18400 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
18410 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
18420 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
18430 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
18440 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
18450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18460 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18480 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
18490 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
184a0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
184b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
184d0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
184e0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
184f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18500 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
18510 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
18520 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
18530 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
18540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18550 20 20 20 20 20 20 20 20 20 22 6e 61 6d 65 20 5c           "name \
18560 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e  "{0}\", returnin
18570 67 20 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31  g directory \"{1
18580 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20  }\" and " +..   
18590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185a0 20 20 20 20 20 20 20 20 20 20 20 22 73 75 62 2d             "sub-
185b0 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c  directory \"{2}\
185c0 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c  "...", fileName,
185d0 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
185e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185f0 20 20 20 20 20 20 20 20 20 20 20 73 75 62 44 69             subDi
18600 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68  rectory)); /* th
18610 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
18620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18640 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
18650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18660 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18680 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
18690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
186a0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
186b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
186c0 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
186d0 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
186e0 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
186f0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
18700 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
18710 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
18720 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18730 20 20 20 20 20 20 20 20 20 61 6c 6c 6f 77 42 61           allowBa
18740 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 20  seDirectoryOnly 
18750 3d 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 2e  = (subDirectory.
18760 4c 65 6e 67 74 68 20 3d 3d 20 30 29 3b 0d 0a 0d  Length == 0);...
18770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18780 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
18790 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d  ue; /* FOUND */.
187a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
187b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
187c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
187d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
187e0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a  return false; /*
187f0 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20   NOT FOUND */.. 
18800 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
18860 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18870 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
18880 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
18890 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
188a0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
188b0 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
188c0 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a     /// domain...
188d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
188e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
188f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
18900 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
18910 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
18920 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
18930 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20  ion domain -OR- 
18940 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
18950 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
18960 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
18970 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
18980 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
18990 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
189a0 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
189b0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
189c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
189d0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
189e0 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
189f0 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79  te_BaseDirectory
18a00 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
18a10 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  riable..        
18a20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65    //       is se
18a30 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
18a40 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20  im for the base 
18a50 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
18a60 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18a70 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
18a80 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e  tory = GetSettin
18a90 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53  gValue("PreLoadS
18aa0 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
18ab0 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ory",..         
18ac0 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20       null);.... 
18ad0 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
18ae0 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
18af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
18b00 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
18b10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18b20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18b30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
18b40 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
18b50 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
18b60 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
18b70 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
18b80 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
18b90 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
18ba0 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
18bb0 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
18bc0 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  then attempt to 
18bd0 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  use the..       
18be0 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65     //       dire
18bf0 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
18c00 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65   the currently e
18c10 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
18c20 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  y..          // 
18c30 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74        (i.e. Syst
18c40 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20  em.Data.SQLite) 
18c50 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61  intsead of the a
18c60 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
18c70 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
18c80 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63  omain base direc
18c90 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
18ca0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
18cb0 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
18cc0 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
18cd0 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
18ce0 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
18cf0 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  yDirectory", nul
18d00 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
18d10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18d20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
18d30 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
18d40 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
18d50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18d60 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
18d70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18d80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
18d90 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
18da0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18db0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
18dc0 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
18dd0 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
18de0 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20   using the base 
18df0 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
18e00 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
18e10 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70       current app
18e20 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
18e30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
18e40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18e50 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
18e60 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
18e70 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a  ectory;..#else..
18e80 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18e90 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
18ea0 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
18eb0 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
18ec0 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
18ed0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
18ee0 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
18ef0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
18f00 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  ng assembly...  
18f10 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18f20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
18f30 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
18f40 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y();..#endif..  
18f50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
18fb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18fc0 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
18fd0 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d  nes if the dynam
18fe0 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
18ff0 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72  file name requir
19000 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20  es a suffix..   
19010 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20     /// and adds 
19020 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  it if necessary.
19030 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
19040 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
19050 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
19060 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
19070 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
19080 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  l dynamic link l
19090 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
190a0 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
190b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
190c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
190d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
190e0 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   The dynamic lin
190f0 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
19100 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f  ame, possibly mo
19110 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64  dified to includ
19120 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e an..      /// 
19130 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20  extension...    
19140 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19150 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
19160 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69  static string Fi
19170 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d  xUpDllFileName(.
19180 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
19190 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e  g fileName /* in
191a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
191b0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
191c0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
191d0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
191e0 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
191f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19200 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72        if (Helper
19210 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
19220 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
19230 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19240 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
19250 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
19260 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
19270 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19280 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
19290 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
192a0 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
192b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
192c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
192d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
192e0 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
192f0 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
19300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19310 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19330 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19340 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
19350 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
19360 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
193b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
193c0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
193d0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
193e0 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
193f0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
19400 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
19410 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
19420 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
19430 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
19440 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19450 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
19460 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
19470 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
19480 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
19490 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
194a0 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
194b0 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
194c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
194d0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
194e0 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
194f0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
19500 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
19510 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
19520 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
19530 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
19540 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
19550 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
19560 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
19570 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
19580 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
19590 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
195a0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
195b0 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
195c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
195d0 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
195e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
195f0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
19600 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19610 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
19620 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
19630 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
19640 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
19650 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c  hitecture", null
19660 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
19670 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
19680 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
19690 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
196a0 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
196b0 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
196c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
196d0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
196e0 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
196f0 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
19700 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
19710 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
19720 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19730 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
19740 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
19750 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c  RCHITECTURE, nul
19760 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
19770 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
197c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
197d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
197e0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
197f0 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b    // HACK: Check
19800 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69   for an "impossi
19810 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20  ble" situation. 
19820 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20   If the pointer 
19830 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20  size..          
19840 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62  //       is 32-b
19850 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73  its, the process
19860 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
19870 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34  cannot be "AMD64
19880 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  "...          //
19890 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63         In that c
198a0 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f  ase, we are almo
198b0 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74  st certainly hit
198c0 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68  ting a bug in th
198d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
198e0 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20        operating 
198f0 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69  system and/or Vi
19900 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
19910 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20   causes the..   
19920 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
19930 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
19940 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65  ECTURE environme
19950 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63  nt variable to c
19960 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
19970 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
19980 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f  rong value in so
19990 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  me circumstances
199a0 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20  .  Please refer 
199b0 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20  to ticket..     
199c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39       //       [9
199d0 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66  ac9862611] for f
199e0 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
199f0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  on...          /
19a00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
19a10 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d  ((IntPtr.Size ==
19a20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26   sizeof(int)) &&
19a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a40 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72  String.Equals(pr
19a50 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19a60 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20  ure, "AMD64",.. 
19a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a80 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
19a90 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
19aa0 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
19ab0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
19ac0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
19ad0 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
19ae0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
19af0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
19b00 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e  OTE: When tracin
19b10 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61  g is enabled, sa
19b20 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c  ve the originall
19b30 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20  y detected..    
19b40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
19b50 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
19b60 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65  hitecture before
19b70 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20   changing it... 
19b80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
19ba0 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65  tring savedProce
19bb0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19bc0 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68   = processorArch
19bd0 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69  itecture;..#endi
19be0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
19bf0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
19c00 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
19c10 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61   know that opera
19c20 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61  ting systems tha
19c30 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22  t return "AMD64"
19c40 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   as..           
19c50 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19c60 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19c70 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61  ecture are actua
19c80 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f  lly a superset o
19c90 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
19ca0 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78   //       the "x
19cb0 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  86" processor ar
19cc0 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72  chitecture; ther
19cd0 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20  efore, return.. 
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19cf0 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e        "x86" when
19d00 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a   the pointer siz
19d10 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20  e is 32-bits... 
19d20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
19d40 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
19d50 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d  ture = "x86";...
19d60 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
19d70 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
19d80 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
19d90 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
19da0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19dc0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19dd0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
19de0 6f 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61  ow that we hit a
19df0 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20   fairly unusual 
19e00 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d  situation (i.e..
19e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19e30 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f  "wrong" processo
19e40 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77  r architecture w
19e50 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20  as detected)... 
19e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e70 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19e80 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
19e90 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
19ea0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
19eb0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
19ec0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
19ed0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
19ee0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
19ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
19f00 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
19f10 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64  -loader detected
19f20 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72   {0}-bit pointer
19f30 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
19f40 20 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a              "siz
19f50 65 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72  e with processor
19f60 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
19f70 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b  {1}\", using " +
19f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19f90 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73          "process
19fa0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
19fb0 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e  \"{2}\" instead.
19fc0 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ..",..          
19fd0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
19fe0 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62  tr.Size * 8 /* b
19ff0 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f  its */, savedPro
1a000 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1a010 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
1a020 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
1a030 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a040 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1a050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1a060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a070 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1a080 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a090 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
1a0a0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
1a0b0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1a0c0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
1a0d0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1a0e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a130 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
1a140 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a150 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1a160 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a170 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1a180 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1a190 20 44 65 66 61 75 6c 74 20 74 6f 20 74 68 65 20   Default to the 
1a1a0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1a1b0 65 63 74 75 72 65 20 72 65 70 6f 72 74 65 64 20  ecture reported 
1a1c0 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
1a1d0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
1a1e0 70 70 72 6f 70 72 69 61 74 65 20 6e 61 74 69 76  ppropriate nativ
1a1f0 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
1a200 65 6d 20 41 50 49 2c 20 69 66 20 61 6e 79 2e 0d  em API, if any..
1a210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1a220 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a230 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1a240 65 63 74 75 72 65 20 3d 20 4e 61 74 69 76 65 4c  ecture = NativeL
1a250 69 62 72 61 72 79 48 65 6c 70 65 72 2e 47 65 74  ibraryHelper.Get
1a260 4d 61 63 68 69 6e 65 28 29 3b 0d 0a 0d 0a 20 20  Machine();....  
1a270 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a290 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c   NOTE: Upon fail
1a2a0 75 72 65 2c 20 72 65 74 75 72 6e 20 65 6d 70 74  ure, return empt
1a2b0 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20  y string.  This 
1a2c0 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20  will prevent..  
1a2d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1a2e0 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67       the calling
1a2f0 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e   method from con
1a300 73 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65  sidering this me
1a310 74 68 6f 64 20 63 61 6c 6c 0d 0a 20 20 20 20 20  thod call..     
1a320 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1a330 20 20 61 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a    a "failure"...
1a340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a360 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
1a370 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
1a380 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a390 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
1a3a0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
1a3b0 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1a3c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a3d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a420 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a430 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a440 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  cture;..      }.
1a450 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4a0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
1a4b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1a4c0 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f  // Given the pro
1a4d0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
1a4e0 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65  ure, returns the
1a4f0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61   name of the pla
1a500 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f  tform...      //
1a510 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a520 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a530 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
1a540 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
1a550 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63      /// The proc
1a560 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1a570 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61  re to be transla
1a580 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72  ted to a platfor
1a590 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  m name...      /
1a5a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1a5b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a5c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1a5d0 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f  platform name fo
1a5e0 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
1a5f0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1a600 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c  ecture -OR- null
1a610 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69  ..      /// if i
1a620 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
1a630 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
1a640 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1a650 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1a660 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c  tic string GetPl
1a670 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20  atformName(..   
1a680 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
1a690 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
1a6a0 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ure /* in */..  
1a6b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1a6c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
1a6d0 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
1a6e0 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
1a6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a700 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a710 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65  cture = GetProce
1a720 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a730 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
1a740 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
1a750 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73  llOrEmpty(proces
1a760 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1a770 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1a780 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1a790 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1a7a0 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1a7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a7d0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
1a7e0 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
1a7f0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1a800 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a810 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
1a820 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1a830 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
1a840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a850 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
1a860 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
1a870 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d  ms.TryGetValue(.
1a880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a890 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1a8a0 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75  Architecture, ou
1a8b0 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29  t platformName))
1a8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a8d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a8e0 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74       return plat
1a8f0 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  formName;..     
1a900 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a910 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1a920 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1a930 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
1a940 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1a990 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a9a0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
1a9b0 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
1a9c0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1a9d0 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f   library based o
1a9e0 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  n the specified.
1a9f0 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
1aa00 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73  tory and process
1aa10 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e  or architecture.
1aa20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1aa30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1aa40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
1aa50 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
1aa60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
1aa70 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  se directory to 
1aa80 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  use, null for de
1aa90 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20  fault (the base 
1aaa0 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20  directory of..  
1aab0 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72      /// the curr
1aac0 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
1aad0 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64  domain).  This d
1aae0 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20  irectory should 
1aaf0 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1ab00 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
1ab10 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70   architecture sp
1ab20 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63  ecific sub-direc
1ab30 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f  tories...      /
1ab40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ab50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ab60 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
1ab70 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
1ab80 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65     /// The reque
1ab90 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  sted processor a
1aba0 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c  rchitecture, nul
1abb0 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
1abc0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
1abd0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
1abe0 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
1abf0 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54  ent process).  T
1ac00 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c  his caller shoul
1ac10 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d  d..      /// alm
1ac20 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69  ost always speci
1ac30 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73  fy null for this
1ac40 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20   parameter...   
1ac50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ac60 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1ac70 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77 42 61 73  m name="allowBas
1ac80 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 22 3e  eDirectoryOnly">
1ac90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
1aca0 7a 65 72 6f 20 69 6e 64 69 63 61 74 65 73 20 74  zero indicates t
1acb0 68 61 74 20 74 68 65 20 6e 61 74 69 76 65 20 53  hat the native S
1acc0 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 63 61  QLite library ca
1acd0 6e 20 62 65 20 6c 6f 61 64 65 64 0d 0a 20 20 20  n be loaded..   
1ace0 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20     /// from the 
1acf0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
1ad00 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 2f 2f  tself...      //
1ad10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ad20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ad30 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  e="nativeModuleF
1ad40 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
1ad50 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61   /// The candida
1ad60 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  te native module
1ad70 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f   file name to lo
1ad80 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ad will be store
1ad90 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f  d here,..      /
1ada0 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  // if necessary.
1adb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
1adc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
1add0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
1ade0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22  iveModuleHandle"
1adf0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
1ae00 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
1ae10 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65  andle as returne
1ae20 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79  d by LoadLibrary
1ae30 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d   will be stored.
1ae40 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c  .      /// here,
1ae50 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
1ae60 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
1ae70 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69  be IntPtr.Zero i
1ae80 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  f the call to.. 
1ae90 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62       /// LoadLib
1aea0 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20  rary fails...   
1aeb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1aec0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
1aed0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
1aee0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
1aef0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61  native module wa
1af00 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73  s loaded success
1af10 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65  fully; otherwise
1af20 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
1af30 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
1af40 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1af50 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
1af60 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  ool PreLoadSQLit
1af70 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
1af80 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
1af90 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20  ctory,          
1afa0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1afb0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
1afc0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1afd0 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  re,    /* in */.
1afe0 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
1aff0 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f  allowBaseDirecto
1b000 72 79 4f 6e 6c 79 2c 20 20 20 20 20 2f 2a 20 69  ryOnly,     /* i
1b010 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b020 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76  ref string nativ
1b030 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
1b040 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1b050 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1b060 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
1b070 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f  dle    /* out */
1b080 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
1b090 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b0a0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b0b0 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1b0c0 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64  specified base d
1b0d0 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c  irectory is null
1b0e0 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c  , use the defaul
1b0f0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
1b100 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65        (i.e. atte
1b110 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63  mpt to automatic
1b120 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e  ally detect it).
1b130 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1b140 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1b150 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
1b160 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1b170 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
1b180 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63  y = GetBaseDirec
1b190 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
1b1a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b1b0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
1b1c0 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
1b1d0 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  y the base direc
1b1e0 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  tory, stop now..
1b1f0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1b200 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
1b210 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
1b220 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b230 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b240 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1b250 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1b260 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74  OTE: Determine t
1b270 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
1b280 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
1b290 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
1b2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1b2b0 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20       If this is 
1b2c0 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69  not known by thi
1b2d0 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e  s class, we cann
1b2e0 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20  ot continue...  
1b2f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b300 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1b310 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e  eNameOnly = GetN
1b320 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65  ativeLibraryFile
1b330 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20  NameOnly();.... 
1b340 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
1b350 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c  eNameOnly == nul
1b360 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1b370 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1b380 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1b390 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
1b3a0 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76  TE: If the nativ
1b3b0 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1b3c0 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62   exists in the b
1b3d0 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20  ase directory.. 
1b3e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b3f0 20 20 69 74 73 65 6c 66 2c 20 70 6f 73 73 69 62    itself, possib
1b400 6c 79 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  ly stop now...  
1b410 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b420 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1b430 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1b440 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1b450 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
1b460 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
1b470 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1b480 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1b490 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
1b4a0 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
1b4b0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b4e0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 63 61   NOTE: If the ca
1b4f0 6c 6c 65 72 20 69 73 20 61 6c 6c 6f 77 69 6e 67  ller is allowing
1b500 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
1b510 6f 72 79 20 69 74 73 65 6c 66 0d 0a 20 20 20 20  ory itself..    
1b520 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b530 20 20 20 74 6f 20 62 65 20 75 73 65 64 2c 20 61     to be used, a
1b540 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65 20 61 20  lso make sure a 
1b550 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1b560 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ecture..        
1b570 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
1b580 61 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  as not specified
1b590 3b 20 69 66 20 65 69 74 68 65 72 20 63 6f 6e 64  ; if either cond
1b5a0 69 74 69 6f 6e 20 69 73 20 66 61 6c 73 65 20 6a  ition is false j
1b5b0 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ust..           
1b5c0 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 6f 70     //       stop
1b5d0 20 6e 6f 77 20 61 6e 64 20 72 65 74 75 72 6e 20   now and return 
1b5e0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1b5f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b600 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
1b610 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79  lowBaseDirectory
1b620 4f 6e 6c 79 20 26 26 0d 0a 20 20 20 20 20 20 20  Only &&..       
1b630 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
1b640 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
1b650 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1b660 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
1b670 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b680 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f              goto
1b690 20 62 61 73 65 44 69 72 4f 6e 6c 79 3b 0d 0a 20   baseDirOnly;.. 
1b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1b6c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1b6d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b6e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1b6f0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
1b700 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b710 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1b720 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1b730 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
1b740 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
1b750 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
1b760 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
1b770 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
1b780 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
1b790 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b7a0 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
1b7b0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
1b7c0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1b7d0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
1b7e0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
1b7f0 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
1b800 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
1b810 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b820 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b830 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
1b840 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
1b850 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1b860 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
1b870 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b880 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
1b890 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
1b8a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1b8b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1b8c0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1b8d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b8e0 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
1b8f0 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
1b900 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
1b910 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1b920 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1b930 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
1b940 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
1b950 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1b960 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1b970 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
1b980 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1b990 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1b9a0 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
1b9b0 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
1b9c0 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
1b9d0 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
1b9e0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1b9f0 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
1ba00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
1ba10 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1ba20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
1ba30 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
1ba40 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
1ba50 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
1ba60 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
1ba70 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
1ba80 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
1ba90 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
1baa0 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1bab0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1bac0 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
1bad0 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1bae0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1baf0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1bb00 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1bb10 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
1bb20 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
1bb30 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
1bb40 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
1bb50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
1bb60 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
1bb70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1bb90 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
1bba0 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
1bbb0 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
1bbc0 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
1bbd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1bbf0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
1bc00 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
1bc10 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
1bc20 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
1bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1bc40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1bc50 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
1bc60 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1bc70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bc80 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1bc90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1bcb0 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
1bcc0 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
1bcd0 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
1bce0 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
1bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1bd00 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
1bd10 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
1bd20 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
1bd30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1bd40 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1bd50 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
1bd60 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
1bd70 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
1bd80 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
1bd90 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
1bda0 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
1bdb0 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
1bdc0 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1bdd0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1bde0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1bdf0 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
1be00 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
1be10 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
1be20 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
1be30 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1be40 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
1be50 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1be60 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1be70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1be80 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
1be90 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 62 61 73 65   }....      base
1bea0 44 69 72 4f 6e 6c 79 3a 0d 0a 0d 0a 20 20 20 20  DirOnly:....    
1beb0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1bec0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1bed0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1bee0 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
1bef0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1bf00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1bf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bf20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1bf30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1bf40 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20  E: Show exactly 
1bf50 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79  where we are try
1bf60 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  ing to load the 
1bf70 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
1bf80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1bf90 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72     SQLite librar
1bfa0 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20  y from...       
1bfb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfd0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1bfe0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
1bff0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c010 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1c020 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1c030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c040 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
1c050 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
1c060 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c  r is trying to l
1c070 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1c080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c090 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1c0a0 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e  brary \"{0}\"...
1c0b0 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  ", fileName)); /
1c0c0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1c0d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1c0e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1c0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c100 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c110 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
1c120 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1c130 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
1c140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c160 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
1c170 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1c180 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
1c190 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c1b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
1c1c0 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
1c1d0 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
1c1e0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
1c1f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1c200 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
1c210 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20 20   an exception.  
1c220 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74 68  This must use th
1c230 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
1c240 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1c250 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d        P/Invoke m
1c260 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63 75  ethod for the cu
1c270 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67 20  rrent operating 
1c280 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20  system...       
1c290 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1c2a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1c2b0 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
1c2c0 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
1c2d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1c2e0 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e 61  oduleHandle = Na
1c2f0 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65  tiveLibraryHelpe
1c300 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  r.LoadLibrary(fi
1c310 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1c320 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1c330 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61   (nativeModuleHa
1c340 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1c350 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1c360 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
1c370 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1c380 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
1c390 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
1c3a0 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1c3b0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1c3c0 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
1c3d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
1c3e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1c3f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
1c400 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
1c410 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1c420 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c450 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72      // NOTE: Fir
1c460 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61 73  st, grab the las
1c470 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e 75  t Win32 error nu
1c480 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  mber...         
1c490 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1c4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c4b0 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d  nt lastError = M
1c4c0 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57 69  arshal.GetLastWi
1c4d0 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74  n32Error(); /* t
1c4e0 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
1c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1c500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c510 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
1c520 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65 64   where we failed
1c530 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1c540 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
1c550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c560 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66         library f
1c570 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74  rom along with t
1c580 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63  he Win32 error c
1c590 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ode and..       
1c5a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1c5b0 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e      exception in
1c5c0 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
1c5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c5f0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1c600 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1c610 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1c620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c630 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1c640 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1c650 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1c660 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
1c670 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
1c680 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c  ader failed to l
1c690 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6b0 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1c6c0 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67  brary \"{0}\" (g
1c6d0 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31  etLastError = {1
1c6e0 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  }): {2}",..     
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c700 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45   fileName, lastE
1c710 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68  rror, e)); /* th
1c720 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1c730 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c740 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1c750 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c770 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1c780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1c790 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1c7a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c7b0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1c7c0 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
1c7d0 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
1c7e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1c7f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c840 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1c850 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c860 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1c870 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
1c880 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
1c890 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20  ork, the native 
1c8a0 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
1c8b0 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20   must..    //   
1c8c0 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63 61      be used beca
1c8d0 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73 20  use it provides 
1c8e0 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75  several workarou
1c8f0 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70  nds to .NET Comp
1c900 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  act..    //     
1c910 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69    Framework limi
1c920 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e  tations importan
1c930 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65  t for proper ope
1c940 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f  ration of the co
1c950 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  re..    //      
1c960 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
1c970 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ite functionalit
1c980 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62  y (e.g. being ab
1c990 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20  le to bind..    
1c9a0 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65 74  //       paramet
1c9b0 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63  ers and handle c
1c9c0 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20  olumn values of 
1c9d0 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20  types Int64 and 
1c9e0 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f  Double)...    //
1c9f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1ca00 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1ca10 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1ca20 2e 49 6e 74 65 72 6f 70 2e 31 31 32 2e 64 6c 6c  .Interop.112.dll
1ca30 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45  ";..#elif SQLITE
1ca40 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f  _STANDARD..    /
1ca50 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1ca60 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
1ca70 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
1ca80 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61  e library is ena
1ca90 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20  bled, use it... 
1caa0 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
1cab0 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
1cac0 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73   SQLITE_DLL = "s
1cad0 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20  qlite3";..#elif 
1cae0 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d  USE_INTEROP_DLL.
1caf0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1cb00 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
1cb10 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
1cb20 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
1cb30 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65  sembly is enable
1cb40 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  d,..    //      
1cb50 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
1cb60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1cb70 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1cb80 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1cb90 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a  .Interop.dll";..
1cba0 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
1cbb0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
1cbc0 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
1cbd0 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
1cbe0 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
1cbf0 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
1cc00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
1cc10 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
1cc20 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
1cc30 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
1cc40 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1cc50 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
1cc60 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
1cc70 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
1cc80 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
1cc90 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
1cca0 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
1ccb0 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
1ccc0 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
1ccd0 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
1cce0 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
1ccf0 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
1cd00 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
1cd10 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
1cd20 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
1cd30 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
1cd40 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
1cd50 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
1cd60 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
1cd70 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1cd80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cda0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cdb0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1cdc0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1cdd0 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
1cde0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1cdf0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1ce00 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1ce10 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ce20 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1ce30 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ce40 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1ce50 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1ce60 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
1ce70 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1ce80 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1ce90 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1cea0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ceb0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1cec0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ced0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1cee0 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
1cef0 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
1cf00 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cf10 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1cf20 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1cf30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cf40 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1cf50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cf60 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1cf70 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
1cf80 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1cf90 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1cfa0 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1cfb0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cfc0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cfd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cfe0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1cff0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1d000 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
1d010 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1d020 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1d030 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1d040 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d050 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d060 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d070 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d080 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
1d090 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1d0a0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1d0b0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d0c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d0d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d0e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d0f0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d100 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
1d110 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
1d120 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d130 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1d140 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d150 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d160 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d170 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1d180 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1d190 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
1d1a0 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1d1b0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1d1c0 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1d1d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d1e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1d1f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d200 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1d210 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
1d220 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
1d230 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d240 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d250 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1d260 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d270 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d280 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d290 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d2a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
1d2b0 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
1d2c0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d2d0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1d2e0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1d2f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d300 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d310 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d320 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1d330 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
1d340 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
1d350 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d360 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1d370 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d380 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d390 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d3a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d3b0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1d3c0 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
1d3d0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d3e0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1d3f0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1d400 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d410 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d420 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d430 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1d440 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
1d450 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d460 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d470 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1d480 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d490 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d4a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d4b0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d4c0 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
1d4d0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
1d4e0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d4f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d500 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d510 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d520 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d530 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d540 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
1d550 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1d560 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
1d570 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
1d580 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
1d590 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69  ptrRemain, ref i
1d5a0 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
1d5b0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d5c0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d5d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d5e0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d5f0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d600 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
1d610 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
1d620 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1d630 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
1d640 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
1d650 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
1d660 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
1d670 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
1d680 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
1d690 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
1d6a0 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
1d6b0 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66  int autoInc, ref
1d6c0 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20   int dtLen, ref 
1d6d0 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
1d6e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d6f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1d700 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d710 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1d720 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
1d730 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1d740 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
1d750 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d770 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d780 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d790 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1d7a0 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
1d7b0 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
1d7c0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1d7d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d7e0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1d7f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d800 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
1d810 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
1d820 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
1d830 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
1d840 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d850 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d860 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d870 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1d880 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1d890 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
1d8a0 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
1d8b0 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
1d8c0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
1d8d0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1d8e0 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
1d8f0 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
1d900 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
1d910 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
1d920 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
1d930 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
1d940 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
1d950 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
1d960 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
1d970 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
1d980 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
1d990 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
1d9a0 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
1d9b0 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1d9c0 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d9d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d9e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d9f0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1da00 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
1da10 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
1da20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1da30 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1da40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1da50 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
1da60 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
1da70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1da80 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1da90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1daa0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
1dab0 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
1dac0 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
1dad0 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
1dae0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1daf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1db00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1db10 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
1db20 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
1db30 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
1db40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1db50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1db60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1db70 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1db80 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1db90 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
1dba0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
1dbb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dbc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1dbd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1dbe0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1dbf0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1dc00 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
1dc10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1dc20 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1dc30 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
1dc40 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
1dc50 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
1dc60 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
1dc70 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
1dc80 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
1dc90 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
1dca0 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
1dcb0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1dcc0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1dcd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dce0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1dcf0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1dd00 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
1dd10 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
1dd20 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1dd30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dd40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1dd50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1dd60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1dd70 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
1dd80 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
1dd90 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
1dda0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ddb0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1ddc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ddd0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1dde0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
1ddf0 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
1de00 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
1de10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1de20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1de30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1de40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1de50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1de60 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62  3_open_interop(b
1de70 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1de80 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1de90 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1dea0 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1deb0 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1dec0 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1ded0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dee0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1def0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1df00 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1df10 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1df20 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62  open16_interop(b
1df30 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1df40 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1df50 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1df60 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1df70 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1df80 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1df90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dfa0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1dfb0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1dfc0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1dfd0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1dfe0 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
1dff0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
1e000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e010 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1e020 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1e030 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1e040 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
1e050 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
1e060 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
1e070 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1e080 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1e090 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
1e0a0 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
1e0b0 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
1e0c0 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
1e0d0 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
1e0e0 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
1e0f0 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
1e100 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
1e110 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1e120 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e130 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e140 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e150 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e160 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e170 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e180 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e190 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e1a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e1b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e1c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e1d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e1e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1e1f0 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
1e200 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
1e210 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
1e220 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e230 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e240 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e250 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e260 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e270 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e280 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e290 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e2a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e2b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e2c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1e2d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1e2e0 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
1e2f0 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
1e300 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
1e310 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e320 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e330 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e340 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e350 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e360 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e370 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e380 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e390 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e3a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e3b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e3c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e3d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
1e3e0 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
1e3f0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
1e400 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
1e410 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1e420 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1e430 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
1e440 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
1e450 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
1e460 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
1e470 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
1e480 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e490 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e4a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e4b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e4c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e4d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e4e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e4f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e500 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e510 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e520 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1e530 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1e540 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
1e550 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1e560 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e570 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e580 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e590 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e5a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e5b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e5c0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e5d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e5e0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e5f0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e600 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e610 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e620 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
1e630 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
1e640 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e650 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e660 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e670 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e680 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e690 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e6a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e6b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e6c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e6d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e6e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e6f0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1e700 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
1e710 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
1e720 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e730 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e740 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e750 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e760 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e770 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e780 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e790 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e7a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e7b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e7c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e7d0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e7e0 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1e7f0 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
1e800 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1e810 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e820 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e830 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e840 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e850 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e860 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e870 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e880 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e890 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e8a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e8b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e8c0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e8d0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
1e8e0 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
1e8f0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1e900 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e910 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e920 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e930 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e940 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e950 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e960 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e970 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e990 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e9a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e9b0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1e9c0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1e9d0 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
1e9e0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1e9f0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1ea00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1ea10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1ea20 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1ea30 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1ea40 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1ea50 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ea60 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1ea70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ea80 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ea90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1eaa0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1eab0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1eac0 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
1ead0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1eae0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1eaf0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1eb00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1eb10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1eb20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eb30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1eb40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1eb50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1eb60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1eb70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1eb80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1eb90 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1eba0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1ebb0 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
1ebc0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1ebd0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1ebe0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1ebf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ec00 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ec10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ec20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ec30 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ec40 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ec50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ec60 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ec70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ec80 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1ec90 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
1eca0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1ecb0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1ecc0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ecd0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ece0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ecf0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ed00 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ed10 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ed20 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ed30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ed40 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ed50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ed60 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1ed70 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1ed80 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1ed90 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1eda0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1edb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1edc0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1edd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ede0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1edf0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ee00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1ee10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ee20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ee30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1ee40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ee50 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1ee60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1ee70 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
1ee80 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1ee90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1eea0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1eeb0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1eec0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1eed0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1eee0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1eef0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ef00 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1ef10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1ef20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1ef30 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ef40 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ef50 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
1ef60 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1ef70 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ef80 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ef90 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1efa0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1efb0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1efc0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1efd0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1efe0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1eff0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f000 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f010 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f020 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f030 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1f040 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
1f050 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
1f060 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1f070 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f090 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f0a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f0b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f0c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f0d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f0e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f0f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f100 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f110 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f120 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f130 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
1f140 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
1f150 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1f160 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f170 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f180 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f190 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f1a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f1b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f1c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f1d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f1e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f1f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f200 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f210 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f220 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
1f230 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1f240 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1f250 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f260 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f270 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f280 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f290 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f2a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f2b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f2c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f2d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f2e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f2f0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1f300 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1f310 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
1f320 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1f330 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f340 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f350 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f360 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f370 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f380 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f390 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f3a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f3b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f3c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f3d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f3e0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1f3f0 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
1f400 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
1f410 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f420 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f430 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f440 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f450 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f460 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f470 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f480 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f490 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f4a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f4b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f4c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f4d0 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
1f4e0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
1f4f0 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72  l, int nBytes, r
1f500 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ef IntPtr stmt, 
1f510 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65  ref IntPtr ptrRe
1f520 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
1f530 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
1f540 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f550 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f560 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f570 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f580 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f590 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f5a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f5b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f5c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f5d0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f5e0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1f5f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1f600 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
1f610 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
1f620 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1f630 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1f640 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1f650 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
1f660 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1f670 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f680 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f690 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f6a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f6b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f6c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f6d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f6e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f6f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f700 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f710 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f720 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f730 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
1f740 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
1f750 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
1f760 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1f770 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
1f780 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
1f790 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
1f7a0 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
1f7b0 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
1f7c0 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
1f7d0 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
1f7e0 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
1f7f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f820 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f830 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f840 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f850 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f860 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f870 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f890 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1f8a0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1f8b0 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
1f8c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f8d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f8e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f8f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f900 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f910 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f920 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f930 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f940 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f950 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f960 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f970 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1f980 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
1f990 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1f9a0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
1f9b0 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
1f9c0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1f9d0 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
1f9e0 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
1f9f0 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
1fa00 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
1fa10 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
1fa20 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
1fa30 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
1fa40 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
1fa50 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
1fa60 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
1fa70 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
1fa80 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
1fa90 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
1faa0 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1fab0 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
1fac0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fad0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1fae0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1faf0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1fb00 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
1fb10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1fb20 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74  ntext, ref int t
1fb30 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63  ype, ref int enc
1fb40 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1fb50 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1fb60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1fb70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fb80 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1fb90 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
1fba0 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
1fbb0 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1fbc0 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
1fbd0 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
1fbe0 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
1fbf0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1fc00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1fc10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fc20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1fc30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1fc40 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
1fc50 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1fc60 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
1fc70 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29   ref long rowid)
1fc80 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1fc90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fca0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1fcb0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1fcc0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1fcd0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
1fce0 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
1fcf0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1fd00 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
1fd10 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
1fd20 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72  [] ColumnName, r
1fd30 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ef int sortOrder
1fd40 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f  , ref int onErro
1fd50 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f  r, ref IntPtr Co
1fd60 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74  llation, ref int
1fd70 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
1fd80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fd90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1fda0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1fdb0 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1fdc0 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69  3_table_cursor_i
1fdd0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1fde0 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20  mt, int db, int 
1fdf0 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d  tableRootPage);.
1fe00 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
1fe10 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1fe20 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1fe30 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64  ....    // Stand
1fe40 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c  ard API calls gl
1fe50 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73  obal across vers
1fe60 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65  ions.  There are
1fe70 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73   a few instances
1fe80 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c   of interop call
1fe90 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65  s..    // scatte
1fea0 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74  red in here, but
1feb0 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61   they are only a
1fec0 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46  ctive when PLATF
1fed0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fee0 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64  WORK is declared
1fef0 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
1ff00 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61  tandard sqlite a
1ff10 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  pi calls....#if 
1ff20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ff30 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ff40 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ff50 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ff60 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ff70 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ff80 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ff90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ffa0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ffb0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ffc0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1ffd0 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
1ffe0 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
1fff0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20000 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20010 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20020 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20030 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20040 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20050 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20070 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20080 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20090 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
200a0 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
200b0 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
200c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
200d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
200e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
200f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20130 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20140 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20150 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20160 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20170 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20180 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
20190 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
201a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
201b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
201c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
201d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
201e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
201f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20200 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20210 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20220 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20230 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20240 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
20250 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
20260 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65  (IntPtr zOptName
20270 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20280 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20290 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
202a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
202b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
202c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
202d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
202e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
202f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20300 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20310 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20320 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20330 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
20340 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
20350 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20360 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20370 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20380 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20390 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
203a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
203b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
203c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
203d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
203e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
203f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20400 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20410 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  ode sqlite3_enab
20420 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
20430 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e  ..        int en
20440 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
20450 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20460 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20470 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20480 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20490 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
204a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
204b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
204c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
204d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
204e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
204f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20500 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20510 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
20520 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
20530 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e     IntPtr db, in
20540 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
20550 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20560 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20570 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20580 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20590 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
205a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
205b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
205c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
205d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
205e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
205f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
20600 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
20610 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
20620 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  nsion(..        
20630 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
20640 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65  ] fileName, byte
20650 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66  [] procName, ref
20660 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b   IntPtr pError);
20670 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20680 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20690 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
206a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
206b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
206c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
206d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
206e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
206f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20700 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20710 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20720 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20730 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65  Code sqlite3_ove
20740 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49  rload_function(I
20750 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
20760 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67   zName, int nArg
20770 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f  s);....#if WINDO
20780 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  WS..#if !PLATFOR
20790 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
207a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
207b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
207c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
207d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
207e0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
207f0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
20800 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
20810 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20820 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
20830 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
20840 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
20850 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
20860 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
20870 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
20880 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f  ctory" SQLite co
20890 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
208a0 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
208b0 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
208c0 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d  ted on Windows..
208d0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
208e0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
208f0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20900 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
20910 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28  2_set_directory(
20920 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e  uint type, strin
20930 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  g value);....#if
20940 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a   !DEBUG // NOTE:
20950 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33   Should be "WIN3
20960 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42  2HEAP && !MEMDEB
20970 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  UG"..#if !PLATFO
20980 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20990 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
209a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
209b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
209c0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
209d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
209e0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
209f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20a00 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
20a10 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
20a20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
20a30 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53  32_reset_heap" S
20a40 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
20a50 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
20a60 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
20a70 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
20a80 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
20a90 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
20aa0 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
20ab0 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
20ac0 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
20ad0 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
20ae0 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
20af0 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
20b00 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
20b10 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
20b20 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
20b30 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
20b40 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
20b50 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
20b60 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
20b70 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
20b80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20b90 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
20ba0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
20bb0 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
20bc0 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
20bd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20be0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20bf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20c00 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20c10 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20c20 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20c30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20c40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20c50 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20c60 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
20c70 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77  : The "sqlite3_w
20c80 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61  in32_compact_hea
20c90 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
20ca0 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
20cb0 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
20cc0 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
20cd0 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
20ce0 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
20cf0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
20d00 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
20d10 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
20d20 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
20d30 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
20d40 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
20d50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
20d60 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
20d70 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
20d80 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
20d90 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
20da0 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
20db0 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
20dc0 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
20dd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20de0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20df0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20e00 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63  te3_win32_compac
20e10 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20  t_heap(ref uint 
20e20 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69  largest);..#endi
20e30 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  f..#endif....#if
20e40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20e50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20e60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20e70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20e80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20e90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20ea0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20eb0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20ec0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20ed0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20ee0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
20ef0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c  tPtr sqlite3_mal
20f00 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23  loc(int n);....#
20f10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20f20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20f30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20f40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20f50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20f70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20f80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20f90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20fa0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20fb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20fc0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
20fd0 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e 67 20 6e 29  alloc64(ulong n)
20fe0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20ff0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21000 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21010 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21020 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21030 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21040 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21050 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21060 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21070 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21080 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21090 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
210a0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
210b0 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
210c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
210d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
210e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
210f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21130 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21140 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21150 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21160 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21170 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
21180 33 5f 72 65 61 6c 6c 6f 63 36 34 28 49 6e 74 50  3_realloc64(IntP
21190 74 72 20 70 2c 20 75 6c 6f 6e 67 20 6e 29 3b 0d  tr p, ulong n);.
211a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
211b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
211c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
211d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
211e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
211f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21200 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21210 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21220 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21230 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21240 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21250 65 72 6e 20 75 6c 6f 6e 67 20 73 71 6c 69 74 65  ern ulong sqlite
21260 33 5f 6d 73 69 7a 65 28 49 6e 74 50 74 72 20 70  3_msize(IntPtr p
21270 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21280 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21290 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
212a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
212b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
212c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
212d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
212e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
212f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21300 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21310 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21320 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
21330 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
21340 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
21350 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21360 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21370 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21380 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21390 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
213a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
213b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
213c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
213d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
213e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
213f0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
21400 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
21410 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
21420 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
21430 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
21440 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
21450 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
21460 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
21470 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21480 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21490 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
214a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
214b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
214c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
214d0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
214e0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
214f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21500 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21510 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
21520 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
21530 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21540 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21550 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21560 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
21570 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
21580 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
21590 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
215a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
215b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
215c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
215d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
215e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
215f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21600 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21620 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21630 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21640 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
21650 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
21660 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
21670 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21680 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21690 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
216a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
216b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
216c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
216d0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
216e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
216f0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
21700 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
21710 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
21720 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
21730 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21740 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21750 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21760 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21770 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21780 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21790 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
217a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
217b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
217c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
217d0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
217e0 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
217f0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
21800 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21810 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21820 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21830 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21840 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21850 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21860 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
21870 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21880 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
21890 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
218a0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
218b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
218c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
218d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
218e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
218f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21900 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21910 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21920 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
21930 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
21940 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
21950 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
21960 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
21970 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21980 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21990 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
219a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
219b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
219c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
219d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
219e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
219f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21a00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21a10 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
21a20 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
21a30 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
21a40 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21a50 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21a60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21a70 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21a80 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21a90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21aa0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21ab0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21ac0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21ad0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21ae0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
21af0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
21b00 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
21b10 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
21b20 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
21b30 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21b40 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21b50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21b60 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21b70 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21b80 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21b90 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21ba0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21bb0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21bc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21bd0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21be0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21bf0 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
21c00 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
21c10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21c20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21c30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21c40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21c50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21c60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21c70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21c80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21c90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21ca0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21cb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21cc0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21cd0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
21ce0 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
21cf0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
21d00 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
21d10 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
21d20 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
21d30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21d40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21d50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21d60 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21d70 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21d80 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21d90 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
21da0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21db0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21dc0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
21dd0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
21de0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
21df0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
21e00 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
21e10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21e20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21e40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21e50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21e60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21e70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21e80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21e90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21ea0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21eb0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21ec0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21ed0 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
21ee0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
21ef0 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
21f00 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
21f10 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
21f20 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
21f30 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
21f40 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
21f50 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
21f60 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
21f70 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
21f80 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
21f90 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
21fa0 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
21fb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21fc0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21fd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21fe0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
21ff0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
22000 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22010 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22020 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22030 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22040 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22050 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
22060 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
22070 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
22080 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22090 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
220a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
220b0 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
220c0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
220d0 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
220e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
220f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22100 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22110 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22120 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22130 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22140 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
22150 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22160 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
22170 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
22180 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
22190 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
221a0 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
221b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
221c0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
221d0 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
221e0 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
221f0 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
22200 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
22210 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
22220 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
22230 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
22240 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
22250 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
22260 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
22270 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22280 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22290 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
222a0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
222b0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
222c0 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
222d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
222e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
222f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
22300 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
22310 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
22320 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
22330 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
22340 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
22350 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
22360 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22370 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22380 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22390 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
223a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
223b0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
223c0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
223d0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
223e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
223f0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22400 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22410 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
22420 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
22430 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
22440 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
22450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22470 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22480 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
224a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
224b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
224c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
224d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
224e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
224f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22500 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
22510 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
22520 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
22530 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
22540 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
22550 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
22560 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
22570 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22580 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22590 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
225a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
225b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
225c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
225d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
225e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
225f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22600 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22610 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22620 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
22630 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
22640 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
22650 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22660 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22670 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22680 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22690 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
226a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
226b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
226c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
226d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
226e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
226f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22700 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
22710 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
22720 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
22730 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
22740 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22750 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22760 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22770 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22780 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22790 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
227a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
227b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
227c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
227d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
227e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
227f0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
22800 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
22810 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
22820 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22830 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22840 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22850 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22860 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22870 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22880 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22890 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
228a0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
228b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
228c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
228d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
228e0 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
228f0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
22900 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22910 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22920 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22930 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22940 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22950 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22960 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22970 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22980 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22990 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
229a0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
229b0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
229c0 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
229d0 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
229e0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
229f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22a00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22a10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22a20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22a30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22a40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
22a50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22a60 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
22a70 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
22a80 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
22a90 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
22aa0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
22ab0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22ac0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22ad0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22ae0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22af0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22b00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22b10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22b20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22b30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22b40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22b50 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
22b60 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
22b70 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
22b80 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
22b90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22ba0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22bb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22bc0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22bd0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22be0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22bf0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
22c00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22c10 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
22c20 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
22c30 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
22c40 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
22c50 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22c60 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22c70 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22c80 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22c90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22ca0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22cb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22cc0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22cd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22ce0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22cf0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22d00 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
22d10 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
22d20 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
22d30 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
22d40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22d50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22d60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22d70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22d80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22d90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22da0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22dc0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22dd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22de0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
22df0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
22e00 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
22e10 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
22e20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22e30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22e40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22e50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22e60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22e70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22e80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22e90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ea0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22eb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22ec0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22ed0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
22ee0 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
22ef0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
22f00 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
22f10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22f20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22f30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22f40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22f50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22f60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22f70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22f80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22f90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22fa0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22fb0 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
22fc0 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
22fd0 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
22fe0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
22ff0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23000 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23010 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23020 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23030 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23040 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23050 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23060 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23070 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23080 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23090 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
230a0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
230b0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
230c0 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
230d0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
230e0 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
230f0 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
23100 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
23110 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
23120 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23130 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23140 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23150 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23160 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23170 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23180 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23190 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
231a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
231b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
231c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
231d0 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
231e0 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
231f0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
23200 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23220 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23230 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23240 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23250 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23260 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23280 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23290 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
232a0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
232b0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
232c0 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
232d0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
232e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
232f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23300 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23310 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23320 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23330 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23340 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23360 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23370 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23380 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
23390 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
233a0 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
233b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
233c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
233d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
233e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
233f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23400 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23410 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23420 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23430 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23440 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23450 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23460 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
23470 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
23480 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
23490 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
234a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
234b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
234c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
234d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
234e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
234f0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
23500 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
23510 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
23520 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
23530 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
23540 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23550 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23570 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23580 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23590 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
235a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
235b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
235c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
235d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
235e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
235f0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
23600 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
23610 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23620 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23630 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23640 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23650 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23660 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23670 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
23680 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23690 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
236a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
236b0 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
236c0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
236d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
236e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
236f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23700 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23710 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23720 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23730 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23740 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23750 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23760 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23770 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
23780 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
23790 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
237a0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
237b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
237c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
237d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
237e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
237f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
23800 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
23810 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23820 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23830 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
23840 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23850 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
23860 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
23870 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
23880 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
23890 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
238a0 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
238b0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
238c0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
238d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
238e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
238f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23900 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23910 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
23920 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23930 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
23940 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
23950 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
23960 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
23970 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23980 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23990 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
239a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
239b0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
239c0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
239d0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
239e0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
239f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
23a00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
23a10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23a20 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
23a30 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
23a40 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
23a50 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
23a60 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
23a70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23a80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23a90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23aa0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23ab0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23ac0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23ad0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23ae0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23af0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23b00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23b10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23b20 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
23b30 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
23b40 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
23b50 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
23b60 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
23b70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23b80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23b90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23ba0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23bb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23bc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23bd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23be0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23bf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23c00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23c10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23c20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
23c30 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
23c40 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
23c50 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23c60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23c70 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23c80 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23c90 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23ca0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23cb0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23cc0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23cd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23ce0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23cf0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23d00 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
23d10 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
23d20 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
23d30 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
23d40 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23d50 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23d60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23d70 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23d80 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23d90 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23da0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23db0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23dc0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23dd0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23de0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23df0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
23e00 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
23e10 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
23e20 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
23e30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23e40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23e50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23e60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23e70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23e80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23e90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23ea0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23eb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23ec0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23ed0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
23ee0 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
23ef0 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
23f00 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
23f10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23f20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23f30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23f40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23f50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23f60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23f70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23f80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23f90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23fa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23fb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23fc0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
23fd0 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
23fe0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
23ff0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
24000 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24010 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24020 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24030 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24040 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24050 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24060 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
24070 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24080 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
24090 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
240a0 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
240b0 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
240c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
240d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
240e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
240f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
24100 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24110 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24120 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
24130 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24140 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24150 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
24160 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24170 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
24180 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
24190 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
241a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
241b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
241c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
241d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
241e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
241f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24200 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24210 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24220 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24230 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24240 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24250 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
24260 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
24270 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
24280 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
24290 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
242a0 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
242b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
242c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
242d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
242e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
242f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24300 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24310 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24320 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24330 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24340 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24350 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
24360 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
24370 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
24380 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
24390 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
243a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
243b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
243c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
243d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
243e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
243f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24400 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
24410 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
24420 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24430 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24440 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
24450 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
24460 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24470 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24480 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24490 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
244a0 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
244b0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
244c0 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
244d0 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
244e0 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
244f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
24500 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
24510 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24520 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
24530 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
24540 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
24550 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
24560 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
24570 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24580 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24590 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
245a0 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
245b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
245c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
245d0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
245e0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
245f0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
24600 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
24610 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
24620 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24630 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24650 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24660 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24670 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24680 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
24690 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
246a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
246b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
246c0 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
246d0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
246e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
246f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24700 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
24710 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
24720 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
24730 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
24740 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
24750 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
24760 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
24770 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
24780 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
24790 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
247a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
247b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
247c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
247d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
247e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
247f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24800 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24810 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24820 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24830 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
24840 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24850 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
24860 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
24870 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
24880 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24890 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
248a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
248b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
248c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
248d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
248e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
248f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24900 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24910 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24920 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24930 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24940 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
24950 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
24960 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
24970 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
24980 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
24990 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
249a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
249b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
249c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
249d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
249e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
249f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24a00 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24a10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24a20 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24a30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24a40 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
24a50 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
24a60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24a70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24a80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24a90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24aa0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24ab0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24ac0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24ad0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24ae0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24af0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24b00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24b10 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
24b20 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
24b30 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
24b40 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24b50 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24b60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24b70 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24b80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24b90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24ba0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24bb0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24bc0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24bd0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24be0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24bf0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
24c00 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
24c10 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
24c20 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
24c30 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
24c40 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
24c50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24c60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24c70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24c90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24ca0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24cb0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24cc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24cd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24ce0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24cf0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24d00 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
24d10 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
24d20 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
24d30 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
24d40 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
24d50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
24d60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24d70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24d80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24d90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24da0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24db0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24dc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24dd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24de0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24df0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24e00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24e10 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
24e20 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
24e30 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
24e40 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
24e50 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
24e60 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24e80 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24e90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24ea0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24eb0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24ec0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24ed0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24ee0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24ef0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24f00 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24f10 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
24f20 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
24f30 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
24f40 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
24f50 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
24f60 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
24f70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24f80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24f90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24fa0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24fb0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24fc0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24fd0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24fe0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24ff0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
25000 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25010 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
25020 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
25030 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
25040 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
25050 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
25060 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
25070 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25080 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25090 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
250a0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
250b0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
250c0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
250d0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
250e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
250f0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25100 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25110 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
25120 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
25130 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
25140 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73 6b  eTraceFlags mask
25150 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
25160 6c 62 61 63 6b 32 20 66 75 6e 63 2c 20 49 6e 74  lback2 func, Int
25170 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
25180 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
25190 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
251a0 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
251b0 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
251c0 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
251d0 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
251e0 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
251f0 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
25200 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
25210 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
25220 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25230 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
25250 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
25260 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
25270 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25280 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25290 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
252a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
252b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
252c0 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
252d0 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
252e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
252f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25300 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25310 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
25320 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
25330 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
25340 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25350 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25360 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25370 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
25380 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
25390 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
253a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
253b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
253c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
253d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
253e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
253f0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
25400 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
25410 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25420 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25430 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
25440 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
25450 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
25460 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
25470 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
25480 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25490 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
254a0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
254b0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
254c0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
254d0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
254e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
254f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25500 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25510 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25520 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
25530 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
25540 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
25550 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25560 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25570 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25580 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
25590 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
255a0 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
255b0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
255c0 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
255d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
255e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
255f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25600 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
25610 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
25620 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", Ca
25630 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25640 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25650 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25660 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25670 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
25680 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
25690 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
256a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
256b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
256c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
256d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
256e0 5f 63 6f 6e 66 69 67 5f 63 68 61 72 70 74 72 28  _config_charptr(
256f0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
25700 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d  eConfigDbOpsEnum
25710 20 6f 70 2c 20 49 6e 74 50 74 72 20 63 68 61 72   op, IntPtr char
25720 50 74 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Ptr);....#if !PL
25730 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25740 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
25750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25760 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
25770 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
25780 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
25790 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
257a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
257b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
257c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
257d0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
257e0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
257f0 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
25800 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
25810 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
25820 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
25830 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f  lite3_db_config_
25840 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74  int_refint(IntPt
25850 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66  r db, SQLiteConf
25860 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  igDbOpsEnum op, 
25870 69 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69  int value, ref i
25880 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23  nt result);....#
25890 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
258a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
258b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
258c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
258d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
258e0 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
258f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
25900 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25910 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
25920 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25930 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
25940 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
25950 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
25960 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25970 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25980 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
25990 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
259a0 6f 6e 66 69 67 5f 69 6e 74 70 74 72 5f 74 77 6f  onfig_intptr_two
259b0 5f 69 6e 74 73 28 49 6e 74 50 74 72 20 64 62 2c  _ints(IntPtr db,
259c0 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
259d0 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74  psEnum op, IntPt
259e0 72 20 70 74 72 2c 20 69 6e 74 20 69 6e 74 30 2c  r ptr, int int0,
259f0 20 69 6e 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23   int int1);....#
25a00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25a10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25a20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25a30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
25a40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25a50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25a60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25a70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25a80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25a90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25aa0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25ab0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25ac0 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74 75  sqlite3_db_statu
25ad0 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  s(IntPtr db, SQL
25ae0 69 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d  iteStatusOpsEnum
25af0 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 63 75 72   op, ref int cur
25b00 72 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68 69  rent, ref int hi
25b10 67 68 77 61 74 65 72 2c 20 69 6e 74 20 72 65 73  ghwater, int res
25b20 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23 69 66 20  etFlag);....#if 
25b30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25b40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25b50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25b60 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25b70 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25b80 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25b90 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25ba0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25bb0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25bc0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25bd0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
25be0 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
25bf0 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
25c00 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
25c10 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
25c20 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
25c30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25c40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25c50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25c70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25c90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25ca0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25cc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25cd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25ce0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
25cf0 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
25d00 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
25d10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25d20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25d30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25d40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25d50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25d60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25d70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25d80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25d90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25da0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25db0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25dc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25dd0 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
25de0 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
25df0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
25e00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25e10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25e20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25e30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25e40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25e50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25e60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25e70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25e80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25e90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25ea0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
25eb0 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
25ec0 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
25ed0 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
25ee0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25ef0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25f00 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25f10 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25f20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25f30 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
25f40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25f50 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
25f60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25f70 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
25f80 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25f90 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
25fa0 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  _db_readonly(Int
25fb0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
25fc0 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
25fd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25fe0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25ff0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26000 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
26010 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
26020 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
26030 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26040 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26050 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26060 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26070 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
26080 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
26090 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
260a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
260b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
260c0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
260d0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
260e0 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
260f0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
26100 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26110 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26120 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26130 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26150 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26160 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26170 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26180 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26190 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
261a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
261b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
261c0 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
261d0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
261e0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
261f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26200 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
26210 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26220 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
26230 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
26240 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26250 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
26260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26270 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
26280 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26290 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
262a0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
262b0 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
262c0 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
262d0 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
262e0 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
262f0 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
26300 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
26310 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26320 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26330 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26340 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26350 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26360 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26370 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26380 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26390 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
263a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
263b0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
263c0 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
263d0 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
263e0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
263f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
26400 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
26410 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26420 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
26430 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
26440 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26450 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26470 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26480 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
26490 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
264a0 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
264b0 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
264c0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
264d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
264e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
264f0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
26500 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
26510 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
26520 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
26530 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
26540 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
26550 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
26560 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
26570 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
26580 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
26590 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
265a0 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
265b0 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
265c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
265d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
265e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
265f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26600 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26610 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26620 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26630 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26640 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26650 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26660 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26670 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26680 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
26690 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
266a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
266b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
266c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
266d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
266e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
266f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26700 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26710 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26720 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26730 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26740 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26750 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26760 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
26770 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
26780 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26790 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
267a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
267b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
267c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
267d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
267e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
267f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
26800 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
26810 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
26820 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
26830 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
26840 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
26850 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
26860 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
26870 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
26880 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
26890 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
268a0 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
268b0 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
268c0 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
268d0 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
268e0 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
268f0 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
26900 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
26910 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
26920 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
26930 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
26940 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
26950 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
26960 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26970 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26980 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26990 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
269a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
269b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
269c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
269d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
269e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
269f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26a00 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
26a10 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
26a20 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
26a30 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
26a40 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26a50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26a60 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26a70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26a80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26a90 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26aa0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26ab0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26ac0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26ad0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26ae0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26af0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
26b00 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
26b10 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
26b20 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
26b30 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
26b40 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
26b50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26b60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26b70 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26b80 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26b90 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26ba0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26bb0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26bc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26bd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26be0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26bf0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26c00 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
26c10 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
26c20 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
26c30 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
26c40 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
26c50 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
26c60 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26c70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26c80 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26c90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26ca0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26cb0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26cc0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26cd0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26ce0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26cf0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26d00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26d10 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
26d20 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
26d30 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
26d40 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
26d50 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
26d60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26d70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
26d80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26d90 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
26da0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26db0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26dc0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26dd0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26de0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26df0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26e00 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
26e10 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
26e20 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
26e30 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
26e40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26e50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
26e60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26e70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
26e80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
26e90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26ea0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
26eb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26ec0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
26ed0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26ee0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
26ef0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
26f00 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
26f10 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
26f20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26f30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
26f40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26f50 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
26f60 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
26f70 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26f80 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
26f90 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26fa0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
26fb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26fc0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
26fd0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
26fe0 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e  e3_blob_close(In
26ff0 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
27000 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27010 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27020 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27030 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27040 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27050 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27060 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27070 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27080 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27090 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
270a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
270b0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  int sqlite3_blob
270c0 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c  _bytes(IntPtr bl
270d0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
270e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
270f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
27100 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27110 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
27120 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
27130 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27140 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27160 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
27170 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
27180 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
27190 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
271a0 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74  _blob_open(IntPt
271b0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
271c0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
271d0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
271e0 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c  ame, long rowId,
271f0 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20   int flags, ref 
27200 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b  IntPtr ptrBlob);
27210 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27220 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27230 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
27240 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27250 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27260 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27270 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27280 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27290 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
272a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
272b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
272c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
272d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
272e0 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c  b_read(IntPtr bl
272f0 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
27300 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
27310 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
27320 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
27330 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
27340 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27350 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27360 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27370 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27380 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27390 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
273a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
273b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
273c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
273d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
273e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
273f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27400 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
27410 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f  eopen(IntPtr blo
27420 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  b, long rowId);.
27430 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27440 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27450 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27460 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27470 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27480 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27490 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
274a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
274b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
274c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
274d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
274e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
274f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
27500 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c  _write(IntPtr bl
27510 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
27520 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
27530 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
27540 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
27550 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
27560 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27570 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27580 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27590 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
275a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
275b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
275c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
275d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
275e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
275f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27600 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
27610 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
27620 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
27630 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
27640 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
27650 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27660 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27670 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27680 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27690 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
276a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
276b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
276c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
276d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
276e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
276f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27700 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
27710 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
27720 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
27730 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
27740 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
27750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27790 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
277a0 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61  // SQLite API ca
277b0 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  lls that are pro
277c0 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b  vided by "well-k
277d0 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73  nown" extensions
277e0 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61   that may be sta
277f0 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20  tically..    // 
27800 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20  linked with the 
27810 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69  SQLite core nati
27820 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65  ve library curre
27830 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ntly in use...  
27840 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73    #region extens
27850 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63  ion sqlite api c
27860 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
27870 6e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  n virtual table.
27880 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
27890 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
278a0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
278b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
278c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
278d0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
278e0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
278f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
27900 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
27910 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
27920 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
27930 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27940 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
27950 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
27960 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
27970 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
27980 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
27990 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
279a0 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
279b0 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
279c0 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
279d0 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
279e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
279f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
27a00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27a10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
27a20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
27a30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
27a40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
27a50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27a60 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
27a70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
27a80 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
27a90 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
27aa0 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
27ab0 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
27ac0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
27ad0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b20 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
27b30 20 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73 69   session extensi
27b40 6f 6e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  on..#if INTEROP_
27b50 53 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f  SESSION_EXTENSIO
27b60 4e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  N..#if !PLATFORM
27b70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27b80 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27b90 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27ba0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27bb0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27bc0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27bd0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 53   delegate int xS
27be0 65 73 73 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74  essionFilter(Int
27bf0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74  Ptr context, Int
27c00 50 74 72 20 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a  Ptr pTblName);..
27c10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
27c20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27c30 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
27c40 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
27c50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27c60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
27c70 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
27c80 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 43  delegate SQLiteC
27c90 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
27ca0 52 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e 43  Result xSessionC
27cb0 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 63  onflict(IntPtr c
27cc0 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43 68  ontext, SQLiteCh
27cd0 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54  angeSetConflictT
27ce0 79 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74 72  ype type, IntPtr
27cf0 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23   iterator);....#
27d00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27d10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27d20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27d30 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27d40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27d50 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27d60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
27d70 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
27d80 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 49 6e  rCode xSessionIn
27d90 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  put(IntPtr conte
27da0 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61  xt, IntPtr pData
27db0 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 29  , ref int nData)
27dc0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
27dd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27de0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
27df0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
27e00 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
27e10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27e20 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
27e30 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  al delegate SQLi
27e40 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73  teErrorCode xSes
27e50 73 69 6f 6e 4f 75 74 70 75 74 28 49 6e 74 50 74  sionOutput(IntPt
27e60 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
27e70 72 20 70 44 61 74 61 2c 20 69 6e 74 20 6e 44 61  r pData, int nDa
27e80 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ta);....    ////
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 2f 2f 2f 2f 2f 2f  ////////////////
27eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ed0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
27ee0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27ef0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27f00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27f10 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27f20 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27f30 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27f40 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27f50 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27f60 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27f70 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27f80 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27f90 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27fa0 74 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61 74  te3session_creat
27fb0 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  e(IntPtr db, byt
27fc0 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 72 65 66 20  e[] dbName, ref 
27fd0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
27fe0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27ff0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28000 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28010 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28020 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28030 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28040 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28050 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28060 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28070 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28080 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28090 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
280a0 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28  3session_delete(
280b0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
280c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
280d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
280e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
280f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28100 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28110 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28120 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28130 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28140 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28150 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28160 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28170 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
28180 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 49  session_enable(I
28190 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69  ntPtr session, i
281a0 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
281b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
281c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
281d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
281e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
281f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28200 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28210 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
28220 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28230 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28240 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28250 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28260 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69  int sqlite3sessi
28270 6f 6e 5f 69 6e 64 69 72 65 63 74 28 49 6e 74 50  on_indirect(IntP
28280 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20  tr session, int 
28290 69 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69  indirect);....#i
282a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
282b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
282c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
282d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
282e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
282f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
28300 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
28310 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28320 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
28330 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
28340 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
28350 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
28360 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 61 74  qlite3session_at
28370 74 61 63 68 28 49 6e 74 50 74 72 20 73 65 73 73  tach(IntPtr sess
28380 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ion, byte[] tblN
28390 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
283a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
283b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
283c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
283d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
283e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
283f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28400 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
28410 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28420 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
28430 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
28440 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
28450 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 74 61  qlite3session_ta
28460 62 6c 65 5f 66 69 6c 74 65 72 28 49 6e 74 50 74  ble_filter(IntPt
28470 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
28480 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65  ionFilter xFilte
28490 72 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  r, IntPtr contex
284a0 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
284b0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
284c0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
284d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
284e0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
284f0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
28500 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
28510 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
28520 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28530 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
28540 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
28550 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
28560 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
28570 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74  ession_changeset
28580 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
28590 20 72 65 66 20 69 6e 74 20 6e 43 68 61 6e 67 65   ref int nChange
285a0 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  Set, ref IntPtr 
285b0 70 43 68 61 6e 67 65 53 65 74 29 3b 0a 0d 0a 23  pChangeSet);...#
285c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
285d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
285e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
285f0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
28600 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28610 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28620 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
28630 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28640 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28650 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28660 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28670 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28680 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64  sqlite3session_d
28690 69 66 66 28 49 6e 74 50 74 72 20 73 65 73 73 69  iff(IntPtr sessi
286a0 6f 6e 2c 20 62 79 74 65 5b 5d 20 66 72 6f 6d 44  on, byte[] fromD
286b0 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
286c0 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  lName, ref IntPt
286d0 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69  r errMsg);....#i
286e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
286f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28700 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
28710 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
28720 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
28730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
28740 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
28750 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28760 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
28770 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
28780 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
28790 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
287a0 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61  qlite3session_pa
287b0 74 63 68 73 65 74 28 49 6e 74 50 74 72 20 73 65  tchset(IntPtr se
287c0 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e  ssion, ref int n
287d0 50 61 74 63 68 53 65 74 2c 20 72 65 66 20 49 6e  PatchSet, ref In
287e0 74 50 74 72 20 70 50 61 74 63 68 53 65 74 29 3b  tPtr pPatchSet);
287f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28800 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28810 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28820 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28840 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28850 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28860 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28870 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28880 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28890 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
288a0 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
288b0 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28  session_isempty(
288c0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
288d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
288e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
288f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28900 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28910 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28920 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28930 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28940 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28960 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28970 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28980 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28990 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
289a0 67 65 73 65 74 5f 73 74 61 72 74 28 72 65 66 20  geset_start(ref 
289b0 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
289c0 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
289d0 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53   IntPtr pChangeS
289e0 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
289f0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28a00 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28a10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28a20 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28a30 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28a40 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28a50 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28a60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28a70 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28a80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28a90 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28aa0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28ab0 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 5f  changeset_start_
28ac0 76 32 28 72 65 66 20 49 6e 74 50 74 72 20 69 74  v2(ref IntPtr it
28ad0 65 72 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61  erator, int nCha
28ae0 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70  ngeSet, IntPtr p
28af0 43 68 61 6e 67 65 53 65 74 2c 20 53 51 4c 69 74  ChangeSet, SQLit
28b00 65 43 68 61 6e 67 65 53 65 74 53 74 61 72 74 46  eChangeSetStartF
28b10 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a  lags flags);....
28b20 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28b30 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28b40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28b50 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28b60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28b70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28b80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28b90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28ba0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28bb0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28bc0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28bd0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28be0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
28bf0 74 5f 6e 65 78 74 28 49 6e 74 50 74 72 20 69 74  t_next(IntPtr it
28c00 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  erator);....#if 
28c10 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28c20 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28c30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28c40 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28c50 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28c60 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28c70 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
28c80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28c90 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28ca0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28cb0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28cc0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28cd0 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 70  ite3changeset_op
28ce0 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
28cf0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 54 62  , ref IntPtr pTb
28d00 6c 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e  lName, ref int n
28d10 43 6f 6c 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c  Columns, ref SQL
28d20 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74  iteAuthorizerAct
28d30 69 6f 6e 43 6f 64 65 20 6f 70 2c 20 72 65 66 20  ionCode op, ref 
28d40 69 6e 74 20 62 49 6e 64 69 72 65 63 74 29 3b 0d  int bIndirect);.
28d50 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28d60 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28d70 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
28d80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
28d90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
28da0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28db0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28dc0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28dd0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
28de0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28df0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28e00 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28e10 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
28e20 65 73 65 74 5f 70 6b 28 49 6e 74 50 74 72 20 69  eset_pk(IntPtr i
28e30 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74  terator, ref Int
28e40 50 74 72 20 70 50 72 69 6d 61 72 79 4b 65 79 73  Ptr pPrimaryKeys
28e50 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d  , ref int nColum
28e60 6e 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ns);....#if !PLA
28e70 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28e80 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28e90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28ea0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28eb0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28ec0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28ed0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28ee0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28ef0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28f00 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28f10 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28f20 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28f30 63 68 61 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e  changeset_old(In
28f40 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69  tPtr iterator, i
28f50 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20  nt columnIndex, 
28f60 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75  ref IntPtr pValu
28f70 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
28f80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28f90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
28fa0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28fb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
28fc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
28fd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
28fe0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
28ff0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29000 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
29010 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29020 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
29030 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
29040 68 61 6e 67 65 73 65 74 5f 6e 65 77 28 49 6e 74  hangeset_new(Int
29050 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
29060 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72  t columnIndex, r
29070 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65  ef IntPtr pValue
29080 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
29090 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
290a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
290b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
290c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
290d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
290e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
290f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
29100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29110 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
29120 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29130 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
29140 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
29150 61 6e 67 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74  angeset_conflict
29160 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
29170 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  , int columnInde
29180 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56  x, ref IntPtr pV
29190 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
291a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
291b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
291c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
291d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
291e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
291f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
29200 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
29210 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29220 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
29230 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
29240 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
29250 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
29260 65 33 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63  e3changeset_fk_c
29270 6f 6e 66 6c 69 63 74 73 28 49 6e 74 50 74 72 20  onflicts(IntPtr 
29280 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20 69 6e  iterator, ref in
29290 74 20 63 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d  t conflicts);...
292a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
292b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
292c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
292d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
292e0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
292f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29300 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
29310 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29320 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29330 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29340 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29350 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29360 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
29370 65 74 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  et_finalize(IntP
29380 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d  tr iterator);...
29390 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
293a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
293b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
293c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
293d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
293e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
293f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
29400 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29410 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29420 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29430 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29440 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29450 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
29460 65 74 5f 69 6e 76 65 72 74 28 69 6e 74 20 6e 49  et_invert(int nI
29470 6e 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 72  n, IntPtr pIn, r
29480 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66  ef int nOut, ref
29490 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
294a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
294b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
294c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
294d0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
294e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
294f0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
29500 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
29510 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
29520 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
29530 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
29540 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
29550 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
29560 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
29570 73 65 74 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e  set_concat(int n
29580 41 2c 20 49 6e 74 50 74 72 20 70 41 2c 20 69 6e  A, IntPtr pA, in
29590 74 20 6e 42 2c 20 49 6e 74 50 74 72 20 70 42 2c  t nB, IntPtr pB,
295a0 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72   ref int nOut, r
295b0 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  ef IntPtr pOut);
295c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
295d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
295e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
295f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
29600 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29610 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
29620 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
29630 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
29640 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29650 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
29660 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29670 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29680 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
29690 67 65 67 72 6f 75 70 5f 6e 65 77 28 72 65 66 20  gegroup_new(ref 
296a0 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
296b0 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
296c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
296d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
296e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
296f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
29700 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
29710 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
29720 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
29730 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29740 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
29750 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29760 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
29770 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
29780 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 28  changegroup_add(
29790 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
297a0 75 70 2c 20 69 6e 74 20 6e 44 61 74 61 2c 20 49  up, int nData, I
297b0 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d  ntPtr pData);...
297c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
297d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
297e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
297f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
29800 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
29810 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29820 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
29830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29840 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29850 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29860 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29870 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29880 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
29890 72 6f 75 70 5f 6f 75 74 70 75 74 28 49 6e 74 50  roup_output(IntP
298a0 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
298b0 72 65 66 20 69 6e 74 20 6e 44 61 74 61 2c 20 72  ref int nData, r
298c0 65 66 20 49 6e 74 50 74 72 20 70 44 61 74 61 29  ef IntPtr pData)
298d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
298e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
298f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
29900 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
29910 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29920 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
29930 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
29940 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
29950 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29960 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
29970 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29980 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
29990 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 64 65  e3changegroup_de
299a0 6c 65 74 65 28 49 6e 74 50 74 72 20 63 68 61 6e  lete(IntPtr chan
299b0 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66  geGroup);....#if
299c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
299d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
299e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
299f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
29a00 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
29a10 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29a20 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29a30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29a40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29a50 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29a60 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29a70 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29a80 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61  lite3changeset_a
29a90 70 70 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20  pply(IntPtr db, 
29aa0 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20  int nChangeSet, 
29ab0 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65  IntPtr pChangeSe
29ac0 74 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  t, xSessionFilte
29ad0 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73  r xFilter, xSess
29ae0 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e  ionConflict xCon
29af0 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f  flict, IntPtr co
29b00 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
29b10 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29b20 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
29b30 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29b40 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
29b50 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
29b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
29b70 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
29b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29b90 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
29ba0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29bb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
29bc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
29bd0 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70  te3changeset_app
29be0 6c 79 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 64  ly_strm(IntPtr d
29bf0 62 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  b, xSessionInput
29c00 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20   xInput, IntPtr 
29c10 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c  pIn, xSessionFil
29c20 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65  ter xFilter, xSe
29c30 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43  ssionConflict xC
29c40 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20  onflict, IntPtr 
29c50 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
29c60 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29c70 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29c80 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29c90 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
29ca0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
29cb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29cc0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29cd0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29ce0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29cf0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29d00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29d10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29d20 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63  lite3changeset_c
29d30 6f 6e 63 61 74 5f 73 74 72 6d 28 78 53 65 73 73  oncat_strm(xSess
29d40 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 41  ionInput xInputA
29d50 2c 20 49 6e 74 50 74 72 20 70 49 6e 41 2c 20 78  , IntPtr pInA, x
29d60 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
29d70 70 75 74 42 2c 20 49 6e 74 50 74 72 20 70 49 6e  putB, IntPtr pIn
29d80 42 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  B, xSessionOutpu
29d90 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
29da0 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
29db0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
29dc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29dd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29de0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
29df0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
29e00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
29e10 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
29e20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29e30 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
29e40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
29e50 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
29e60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
29e70 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e  ite3changeset_in
29e80 76 65 72 74 5f 73 74 72 6d 28 78 53 65 73 73 69  vert_strm(xSessi
29e90 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
29ea0 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73  IntPtr pIn, xSes
29eb0 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
29ec0 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
29ed0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
29ee0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29ef0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
29f00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
29f10 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29f20 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
29f30 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
29f40 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
29f50 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29f60 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
29f70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29f80 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
29f90 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
29fa0 6e 67 65 73 65 74 5f 73 74 61 72 74 5f 73 74 72  ngeset_start_str
29fb0 6d 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65  m(ref IntPtr ite
29fc0 72 61 74 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49  rator, xSessionI
29fd0 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
29fe0 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66  Ptr pIn);....#if
29ff0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2a000 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a010 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
2a020 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
2a030 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
2a040 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a050 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
2a060 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2a070 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
2a080 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
2a090 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a0a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a0b0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73  lite3changeset_s
2a0c0 74 61 72 74 5f 76 32 5f 73 74 72 6d 28 72 65 66  tart_v2_strm(ref
2a0d0 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
2a0e0 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
2a0f0 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
2a100 49 6e 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  In, SQLiteChange
2a110 53 65 74 53 74 61 72 74 46 6c 61 67 73 20 66 6c  SetStartFlags fl
2a120 61 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ags);....#if !PL
2a130 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a140 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
2a150 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a160 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2a170 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2a180 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2a190 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
2a1a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a1b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
2a1c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2a1d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
2a1e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
2a1f0 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73  3session_changes
2a200 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73  et_strm(IntPtr s
2a210 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
2a220 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
2a230 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
2a240 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2a250 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a260 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
2a270 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
2a280 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
2a290 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a2a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
2a2b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
2a2c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
2a2d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
2a2e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2a2f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2a300 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
2a310 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28 49  _patchset_strm(I
2a320 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78  ntPtr session, x
2a330 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
2a340 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
2a350 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
2a360 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a370 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
2a380 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2a390 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
2a3a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
2a3b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a3c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
2a3d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a3e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
2a3f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2a400 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
2a410 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
2a420 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 5f  changegroup_add_
2a430 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61 6e  strm(IntPtr chan
2a440 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69 6f  geGroup, xSessio
2a450 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
2a460 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23  ntPtr pIn);....#
2a470 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a480 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a490 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2a4a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
2a4b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
2a4c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2a4d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
2a4e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2a4f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
2a500 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
2a510 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2a520 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a530 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
2a540 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28 49  up_output_strm(I
2a550 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75  ntPtr changeGrou
2a560 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  p, xSessionOutpu
2a570 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
2a580 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69 66  r pOut);..#endif
2a590 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2a5a0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2a5b0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a600 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
2a610 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f  on sqlite intero
2a620 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45  p api calls (.NE
2a630 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2a640 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50  ork only)..#if P
2a650 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a660 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
2a670 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
2a680 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2a690 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
2a6a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2a6b0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
2a6c0 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
2a6d0 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
2a6e0 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67  Ptr db, ref long
2a6f0 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowId);....    
2a700 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2a710 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2a720 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2a730 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
2a740 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74  _memory_used_int
2a750 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79  erop(ref long by
2a760 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
2a770 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a780 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2a790 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2a7a0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
2a7b0 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69  mory_highwater_i
2a7c0 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74  nterop(int reset
2a7d0 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62  Flag, ref long b
2a7e0 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
2a7f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a800 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
2a810 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2a820 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2a830 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
2a840 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
2a850 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
2a860 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
2a870 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
2a880 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2a890 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2a8a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2a8b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
2a8c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
2a8d0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
2a8e0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
2a8f0 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20  index, ref long 
2a900 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
2a910 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
2a920 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
2a930 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
2a940 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29  _int64_interop")
2a950 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2a960 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a970 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a980 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
2a990 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
2a9a0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
2a9b0 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75  , ref ulong valu
2a9c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
2a9d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
2a9e0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
2a9f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
2aa00 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
2aa10 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  mn_double_intero
2aa20 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
2aa30 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
2aa40 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
2aa50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2aa60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
2aa70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2aa80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
2aa90 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
2aaa0 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
2aab0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
2aac0 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
2aad0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
2aae0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2aaf0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2ab00 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
2ab10 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
2ab20 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
2ab30 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f  IntPtr p, ref do
2ab40 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
2ab50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2ab60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
2ab70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2ab80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
2ab90 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
2aba0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
2abb0 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  p, ref Int64 val
2abc0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
2abd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2abe0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2abf0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2ac00 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
2ac10 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
2ac20 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
2ac30 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
2ac40 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
2ac50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2ac60 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2ac70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ac80 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
2ac90 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
2aca0 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
2acb0 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
2acc0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
2acd0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2ace0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2acf0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2ad00 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 73 69  void sqlite3_msi
2ad10 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
2ad20 72 20 70 2c 20 72 65 66 20 75 6c 6f 6e 67 20 73  r p, ref ulong s
2ad30 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  ize);....    [Dl
2ad40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2ad50 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2ad60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ad70 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
2ad80 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
2ad90 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
2ada0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2adb0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
2adc0 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  e, IntPtr pModul
2add0 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c  e, int iVersion,
2ade0 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
2adf0 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e  ,..        xConn
2ae00 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42  ect xConnect, xB
2ae10 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
2ae20 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74  dex, xDisconnect
2ae30 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20   xDisconnect,.. 
2ae40 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20         xDestroy 
2ae50 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20  xDestroy, xOpen 
2ae60 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43  xOpen, xClose xC
2ae70 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46  lose, xFilter xF
2ae80 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  ilter,..        
2ae90 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f  xNext xNext, xEo
2aea0 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20  f xEof, xColumn 
2aeb0 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20  xColumn, xRowId 
2aec0 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20  xRowId, xUpdate 
2aed0 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20  xUpdate,..      
2aee0 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c    xBegin xBegin,
2aef0 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43   xSync xSync, xC
2af00 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78  ommit xCommit, x
2af10 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
2af20 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69  ck,..        xFi
2af30 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64  ndFunction xFind
2af40 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d  Function, xRenam
2af50 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65  e xRename, xSave
2af60 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
2af70 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65  ,..        xRele
2af80 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52  ase xRelease, xR
2af90 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
2afa0 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43  ackTo, IntPtr pC
2afb0 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20  lientData,..    
2afc0 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75      xDestroyModu
2afd0 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  le xDestroyModul
2afe0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
2aff0 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   // PLATFORM_COM
2b000 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26  PACTFRAMEWORK &&
2b010 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
2b020 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  D..    #endregio
2b030 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b080 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2b090 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
2b0a0 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ates..#if INTERO
2b0b0 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
2b0c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b0d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b0e0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b0f0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b100 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b110 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b120 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b130 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b140 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
2b150 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b160 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
2b170 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
2b180 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
2b190 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2b1a0 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
2b1b0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2b1c0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2b1d0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
2b1e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2b240 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b250 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2b260 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2b270 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2b280 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2b290 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2b2a0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2b2b0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e  teErrorCode xCon
2b2c0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
2b2d0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
2b2e0 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
2b2f0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
2b300 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
2b310 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
2b320 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
2b330 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
2b340 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
2b350 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 23 69  //////////....#i
2b3b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2b3c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b3d0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2b3e0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2b3f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2b400 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2b410 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2b420 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2b430 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
2b440 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b450 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
2b460 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
2b470 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2b4d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b4e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2b4f0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2b500 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2b510 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2b520 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2b530 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2b540 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2b550 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
2b560 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2b570 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
2b580 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b5d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b5e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b5f0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b600 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b610 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b620 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b630 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b640 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b650 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
2b660 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b670 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
2b680 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2b6e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b6f0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2b700 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2b710 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2b720 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2b730 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2b740 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2b750 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
2b760 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b770 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2b780 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
2b790 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
2b7a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b7f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b800 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b810 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b820 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b840 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b850 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b860 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b870 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
2b880 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2b890 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
2b8a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2b900 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b910 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2b920 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2b930 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2b940 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2b950 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2b960 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2b970 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72  rrorCode xFilter
2b980 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2b990 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
2b9a0 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d      int idxNum,.
2b9b0 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b9c0 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
2b9d0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
2b9e0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
2b9f0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f  ////////////////
2ba30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2ba50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2ba60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ba70 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2ba80 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2ba90 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2baa0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2bab0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2bac0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2bad0 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
2bae0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2baf0 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
2bb00 20 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 2f  ////////////////
2bb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bb50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2bb60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2bb70 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2bb80 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2bb90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2bba0 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2bbb0 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2bbc0 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a  gate int xEof(..
2bbd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2bbe0 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
2bbf0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc40 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2bc50 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bc60 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2bc70 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2bc80 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2bc90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2bca0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2bcb0 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2bcc0 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
2bcd0 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
2bce0 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
2bcf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
2bd00 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69  text,..        i
2bd10 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b  nt index..    );
2bd20 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd70 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2bd80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2bd90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2bda0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2bdb0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2bdc0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2bdd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2bde0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2bdf0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
2be00 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Id(..        Int
2be10 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
2be20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
2be30 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
2be40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2be90 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2bea0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2beb0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2bec0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2bed0 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2bee0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2bef0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2bf00 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2bf10 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
2bf20 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2bf30 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2bf40 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
2bf50 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2bf60 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
2bf70 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
2bf80 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfd0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2bfe0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2bff0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2c000 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2c010 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2c020 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2c030 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2c040 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2c050 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
2c060 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  in(..        Int
2c070 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2c080 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c0d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2c0e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c0f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2c100 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2c110 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2c120 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2c130 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2c140 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2c150 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79  iteErrorCode xSy
2c160 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nc(..        Int
2c170 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2c180 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2c1e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c1f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2c200 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2c210 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2c220 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2c230 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2c240 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2c250 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
2c260 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49  mmit(..        I
2c270 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2c280 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2c2e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c2f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2c300 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2c310 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2c320 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2c330 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2c340 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2c350 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2c360 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
2c370 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2c380 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2c3e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2c3f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2c400 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2c410 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2c420 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2c430 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2c440 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2c450 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  te int xFindFunc
2c460 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  tion(..        I
2c470 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2c480 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
2c490 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2c4a0 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
2c4b0 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
2c4c0 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
2c4d0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2c4e0 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20   pUserData..    
2c4f0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c540 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2c550 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2c560 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2c570 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2c580 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2c590 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2c5a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2c5b0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2c5c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2c5d0 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
2c5e0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2c5f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
2c600 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ew..    );....  
2c610 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c660 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2c670 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2c680 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2c690 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2c6a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2c6b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2c6c0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2c6d0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2c6e0 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
2c6f0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2c700 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2c710 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
2c720 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2c730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2c780 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2c790 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c7a0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2c7b0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2c7c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2c7d0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2c7e0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2c7f0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2c800 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
2c810 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2c820 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
2c830 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
2c840 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
2c890 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2c8a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2c8b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2c8c0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2c8d0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2c8e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2c8f0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2c900 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2c910 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2c920 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
2c930 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2c940 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2c950 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2c960 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2c9c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c9d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2c9e0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2c9f0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2ca00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2ca10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2ca20 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
2ca30 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
2ca40 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  le(IntPtr pClien
2ca50 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d  tData);..#endif.
2ca60 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
2ca70 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
2cad0 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75  n Native Structu
2cae0 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  res..#if INTEROP
2caf0 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
2cb00 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
2cb10 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
2cb20 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
2cb30 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
2cb40 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
2cb50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
2cb60 20 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69     0 */ public i
2cb70 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
2cb80 20 20 20 20 20 20 2f 2a 20 20 20 38 20 2a 2f 20        /*   8 */ 
2cb90 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78  public xCreate x
2cba0 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Create;..       
2cbb0 20 2f 2a 20 20 31 36 20 2a 2f 20 70 75 62 6c 69   /*  16 */ publi
2cbc0 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e  c xConnect xConn
2cbd0 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ect;..        /*
2cbe0 20 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 78    24 */ public x
2cbf0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
2cc00 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndex;..        /
2cc10 2a 20 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20  *  32 */ public 
2cc20 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
2cc30 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  connect;..      
2cc40 20 20 2f 2a 20 20 34 30 20 2a 2f 20 70 75 62 6c    /*  40 */ publ
2cc50 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
2cc60 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f  troy;..        /
2cc70 2a 20 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20  *  48 */ public 
2cc80 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20  xOpen xOpen;..  
2cc90 20 20 20 20 20 20 2f 2a 20 20 35 36 20 2a 2f 20        /*  56 */ 
2cca0 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43  public xClose xC
2ccb0 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lose;..        /
2ccc0 2a 20 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20  *  64 */ public 
2ccd0 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
2cce0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 37 32  ..        /*  72
2ccf0 20 2a 2f 20 70 75 62 6c 69 63 20 78 4e 65 78 74   */ public xNext
2cd00 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20   xNext;..       
2cd10 20 2f 2a 20 20 38 30 20 2a 2f 20 70 75 62 6c 69   /*  80 */ publi
2cd20 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20  c xEof xEof;..  
2cd30 20 20 20 20 20 20 2f 2a 20 20 38 38 20 2a 2f 20        /*  88 */ 
2cd40 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
2cd50 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
2cd60 20 2f 2a 20 20 39 36 20 2a 2f 20 70 75 62 6c 69   /*  96 */ publi
2cd70 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b  c xRowId xRowId;
2cd80 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 30 34  ..        /* 104
2cd90 20 2a 2f 20 70 75 62 6c 69 63 20 78 55 70 64 61   */ public xUpda
2cda0 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
2cdb0 20 20 20 20 20 2f 2a 20 31 31 32 20 2a 2f 20 70       /* 112 */ p
2cdc0 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65  ublic xBegin xBe
2cdd0 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  gin;..        /*
2cde0 20 31 32 30 20 2a 2f 20 70 75 62 6c 69 63 20 78   120 */ public x
2cdf0 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20  Sync xSync;..   
2ce00 20 20 20 20 20 2f 2a 20 31 32 38 20 2a 2f 20 70       /* 128 */ p
2ce10 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
2ce20 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
2ce30 2f 2a 20 31 33 36 20 2a 2f 20 70 75 62 6c 69 63  /* 136 */ public
2ce40 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
2ce50 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 2f  back;..        /
2ce60 2a 20 31 34 34 20 2a 2f 20 70 75 62 6c 69 63 20  * 144 */ public 
2ce70 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46  xFindFunction xF
2ce80 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20  indFunction;..  
2ce90 20 20 20 20 20 20 2f 2a 20 31 35 32 20 2a 2f 20        /* 152 */ 
2cea0 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
2ceb0 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
2cec0 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
2ced0 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
2cee0 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
2cef0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
2cf00 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
2cf10 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
2cf20 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
2cf30 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
2cf40 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 30 20  .        /* 160 
2cf50 2a 2f 20 70 75 62 6c 69 63 20 78 53 61 76 65 70  */ public xSavep
2cf60 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b  oint xSavepoint;
2cf70 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 38  ..        /* 168
2cf80 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 65 6c 65   */ public xRele
2cf90 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
2cfa0 20 20 20 20 20 20 20 2f 2a 20 31 37 36 20 2a 2f         /* 176 */
2cfb0 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
2cfc0 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b  kTo xRollbackTo;
2cfd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d030 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
2d040 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
2d050 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
2d060 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
2d070 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b  ite3_vtab..    {
2d080 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20  ..        /*  0 
2d090 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2d0a0 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
2d0b0 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c     /*  8 */ publ
2d0c0 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
2d0d0 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
2d0e0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  /..        /* 16
2d0f0 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74   */ public IntPt
2d100 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
2d110 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
2d120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d160 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
2d170 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
2d180 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
2d190 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2d1a0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
2d1b0 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
2d1c0 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20  {..        /* 0 
2d1d0 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2d1e0 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a   pVTab;..    }..
2d1f0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d240 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2d250 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2d260 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2d270 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2d280 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
2d290 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  x_constraint..  
2d2a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
2d2b0 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
2d2c0 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  x_constraint(.. 
2d2d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d2e0 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
2d2f0 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20   constraint..   
2d300 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2d310 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2d320 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d330 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
2d340 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29  straint != null)
2d350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d370 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74   iColumn = const
2d380 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  raint.iColumn;..
2d390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3a0 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  op = constraint.
2d3b0 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
2d3c0 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f       usable = co
2d3d0 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b  nstraint.usable;
2d3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d3f0 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20    iTermOffset = 
2d400 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d  constraint.iTerm
2d410 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
2d420 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d430 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d490 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  /* 0 */ public i
2d4a0 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
2d4b0 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62       /* 4 */ pub
2d4c0 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43  lic SQLiteIndexC
2d4d0 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d  onstraintOp op;.
2d4e0 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 20 2a 2f  .        /* 5 */
2d4f0 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
2d500 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ble;..        /*
2d510 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   8 */ public int
2d520 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
2d530 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
2d570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d580 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
2d590 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
2d5a0 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
2d5b0 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
2d5c0 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
2d5d0 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d  3_index_orderby.
2d5e0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
2d5f0 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
2d600 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20  ndex_orderby(.. 
2d610 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d620 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72  eIndexOrderBy or
2d630 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
2d640 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2d650 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2d660 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d670 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21     if (orderBy !
2d680 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2d690 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d6a0 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
2d6b0 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d  = orderBy.iColum
2d6c0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
2d6d0 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72      desc = order
2d6e0 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  By.desc;..      
2d6f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d700 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2d710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d750 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d760 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20   /* 0 */ public 
2d770 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
2d780 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
2d790 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a  ..        /* 4 *
2d7a0 2f 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65  / public byte de
2d7b0 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f  sc;   /* True fo
2d7c0 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66  r DESC.  False f
2d7d0 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20  or ASC. */..    
2d7e0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
2d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d830 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
2d840 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
2d850 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
2d860 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2d870 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
2d880 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
2d890 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  usage..    {..  
2d8a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
2d8b0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
2d8c0 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20  raint_usage(..  
2d8d0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2d8e0 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
2d8f0 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
2d900 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
2d910 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2d920 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
2d930 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d940 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
2d950 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Usage != null)..
2d960 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
2d980 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74  rgvIndex = const
2d990 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49  raintUsage.argvI
2d9a0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
2d9b0 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f         omit = co
2d9c0 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
2d9d0 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it;..           
2d9e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2d9f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
2da50 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
2da60 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73  ; /* if >0, cons
2da70 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f  traint is part o
2da80 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
2da90 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
2daa0 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20  blic byte omit; 
2dab0 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f      /* Do not co
2dac0 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
2dad0 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  is constraint */
2dae0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2db40 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
2db50 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
2db60 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
2db70 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
2db80 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d  ite3_index_info.
2db90 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
2dba0 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20  /* Inputs */..  
2dbb0 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70        /*  0 */ p
2dbc0 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74  ublic int nConst
2dbd0 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72  raint; /* Number
2dbe0 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
2dbf0 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
2dc00 20 20 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20         /*  8 */ 
2dc10 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
2dc20 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20  onstraint;..    
2dc30 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62      /* 16 */ pub
2dc40 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79  lic int nOrderBy
2dc50 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  ;    /* Number o
2dc60 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72  f entries in aOr
2dc70 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20  derBy */..      
2dc80 20 20 2f 2a 20 32 34 20 2a 2f 20 70 75 62 6c 69    /* 24 */ publi
2dc90 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
2dca0 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
2dcb0 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
2dcc0 20 20 20 2f 2a 20 33 32 20 2a 2f 20 70 75 62 6c     /* 32 */ publ
2dcd0 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
2dce0 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
2dcf0 20 20 20 20 20 2f 2a 20 34 30 20 2a 2f 20 70 75       /* 40 */ pu
2dd00 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b  blic int idxNum;
2dd10 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
2dd20 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
2dd30 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
2dd40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  */..        /* 4
2dd50 38 20 2a 2f 20 70 75 62 6c 69 63 20 73 74 72 69  8 */ public stri
2dd60 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
2dd70 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
2dd80 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
2dd90 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
2dda0 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  oc */..        /
2ddb0 2a 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 56 */ public i
2ddc0 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
2ddd0 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
2dde0 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
2ddf0 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
2de00 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2de10 36 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74  60 */ public int
2de20 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
2de30 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
2de40 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
2de50 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
2de60 20 20 20 20 2f 2a 20 36 34 20 2a 2f 20 70 75 62      /* 64 */ pub
2de70 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d  lic double estim
2de80 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74  atedCost; /* Est
2de90 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
2dea0 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20  sing this index 
2deb0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 37  */..        /* 7
2dec0 32 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67  2 */ public long
2ded0 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20   estimatedRows; 
2dee0 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e    /* Estimated n
2def0 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65  umber of rows re
2df00 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20  turned */..     
2df10 20 20 20 2f 2a 20 38 30 20 2a 2f 20 70 75 62 6c     /* 80 */ publ
2df20 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  ic SQLiteIndexFl
2df30 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a  ags idxFlags; /*
2df40 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f   Mask of SQLITE_
2df50 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61  INDEX_SCAN_* fla
2df60 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  gs */..        /
2df70 2a 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 6c  * 88 */ public l
2df80 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20  ong colUsed;    
2df90 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d       /* Input: M
2dfa0 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75  ask of columns u
2dfb0 73 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74  sed by statement
2dfc0 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64   */..    }..#end
2dfd0 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
2dfe0 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
2dff0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
2e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e040 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
2e050 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61  egion .NET Compa
2e060 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e  ct Framework (on
2e070 6c 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ly) CriticalHand
2e080 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c  le Class..#if PL
2e090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2e0a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72  AMEWORK..  inter
2e0b0 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61  nal abstract cla
2e0c0 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ss CriticalHandl
2e0d0 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  e : IDisposable.
2e0e0 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74  .  {..    privat
2e0f0 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64  e bool _isClosed
2e100 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ;..    protected
2e110 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d   IntPtr handle;.
2e120 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e130 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28   CriticalHandle(
2e140 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61  IntPtr invalidHa
2e150 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  ndleValue)..    
2e160 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
2e170 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
2e180 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73  alue;..      _is
2e190 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d  Closed = false;.
2e1a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43  .    }....    ~C
2e1b0 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d  riticalHandle().
2e1c0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
2e1d0 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
2e1e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
2e1f0 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
2e200 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
2e210 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d   if (!IsClosed).
2e220 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
2e230 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64    this._isClosed
2e240 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2e250 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64    if (!IsInvalid
2e260 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2e270 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
2e280 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  andle();..      
2e290 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
2e2a0 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
2e2b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e2c0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2e2d0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
2e2e0 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
2e2f0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
2e300 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2e310 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
2e320 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
2e330 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
2e340 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
2e350 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
2e360 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
2e370 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
2e380 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c  .    {..      Cl
2e390 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d  eanup();..    }.
2e3a0 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e3b0 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52   abstract bool R
2e3c0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
2e3d0 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e3e0 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28   void SetHandle(
2e3f0 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20  IntPtr value).. 
2e400 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
2e410 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  le = value;..   
2e420 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
2e430 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41   void SetHandleA
2e440 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20  sInvalid()..    
2e450 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  {..      _isClos
2e460 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
2e470 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
2e480 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
2e490 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
2e4a0 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d  c bool IsClosed.
2e4b0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
2e4c0 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c  t { return _isCl
2e4d0 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  osed; }..    }..
2e4e0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73  ..    public abs
2e4f0 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76  tract bool IsInv
2e500 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
2e510 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a     get;..    }..
2e520 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ..  }..#endif.. 
2e530 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2e540 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2e590 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
2e5a0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2e5b0 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2e5c0 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75  // Handles the u
2e5d0 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73  nmanaged databas
2e5e0 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70  e pointer, and p
2e5f0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
2e600 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70  tion..    // sup
2e610 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20  port for it...  
2e620 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
2e630 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f  d class SQLiteCo
2e640 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a  nnectionHandle :
2e650 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2e660 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49  .    {..#if SQLI
2e670 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21  TE_STANDARD && !
2e680 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2e690 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2e6a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
2e6b0 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43  gate void CloseC
2e6c0 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
2e6d0 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2e6e0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2e6f0 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
2e700 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  tr db);....     
2e710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2e720 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  ic CloseConnecti
2e730 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65  onCallback close
2e740 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20  Connection =..  
2e750 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2e760 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2e770 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
2e780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2e790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7d0 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
2e7e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e7f0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
2e800 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
2e810 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
2e820 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
2e830 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e890 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
2e8a0 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  ownHandle;....  
2e8b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e900 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2e910 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2e920 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2e930 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2e940 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20  Handle db)..    
2e950 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e960 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c     if (db != nul
2e970 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2e980 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2e990 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2e9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e9b0 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52    lock (db.syncR
2e9c0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2e9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2e9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9f0 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68       return db.h
2ea00 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2ea10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ea20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ea30 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2ea40 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2ea50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2eab0 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2eac0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2ead0 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f  le(IntPtr db, bo
2eae0 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
2eaf0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2eb00 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  s(ownHandle)..  
2eb10 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2eb20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2eb30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2eb40 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2eb50 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2eb60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2eb70 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
2eb80 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e  .ownHandle = own
2eb90 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
2eba0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2ebb0 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20  le(db);..       
2ebc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ebd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2ebe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ec30 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2ec40 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62  nnectionHandle(b
2ec50 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
2ec60 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
2ec70 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
2ec80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2ec90 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2eca0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77            if (ow
2ecb0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2ecc0 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2ecd0 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
2ece0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2ecf0 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2ed00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2ed10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2ed20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2ed70 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2ed80 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2ed90 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2eda0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2edb0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2edc0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2edd0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2ede0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2edf0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ee00 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e          if (!own
2ee10 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74  Handle) return t
2ee20 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2ee30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2ee40 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2ee50 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
2ee60 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ee70 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2ee80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
2ee90 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
2eea0 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
2eeb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2eec0 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
2eed0 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
2eee0 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
2eef0 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
2ef00 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2ef10 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2ef20 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2ef30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c                cl
2ef40 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
2ef50 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  is, localHandle)
2ef60 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ef70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
2ef80 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
2ef90 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2efa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2efb0 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
2efc0 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2efd0 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
2efe0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45  endif....#if !NE
2eff0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2f000 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2f010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f020 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2f030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f040 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2f050 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2f060 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2f070 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2f090 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2f0a0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0c0 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63      "CloseConnec
2f0d0 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  tion: {0}", loca
2f0e0 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
2f0f0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2f100 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2f110 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2f120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f130 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f140 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2f150 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2f160 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2f170 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
2f180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2f1a0 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
2f1b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2f1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f1e0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2f1f0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2f200 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c  tion(this, handl
2f210 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2f220 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2f230 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
2f240 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2f250 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f260 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f270 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
2f280 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2f290 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2f2a0 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2f2b0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2f2c0 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2f2d0 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
2f2e0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2f2f0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2f300 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2f310 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
2f320 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2f330 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2f340 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2f350 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2f360 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
2f370 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2f380 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
2f390 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2f3a0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
2f3b0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2f3c0 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2f3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2f3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f3f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f400 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2f410 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2f420 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2f430 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2f450 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2f460 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f480 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
2f490 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  ion: {0}, except
2f4a0 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
2f4d0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2f4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2f4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f500 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2f510 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f520 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2f530 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2f540 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2f550 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2f560 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2f570 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2f580 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2f590 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2f5a0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2f5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f5c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f5d0 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2f5e0 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
2f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f610 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2f620 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
2f630 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
2f640 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f650 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
2f660 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2f670 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f6c0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2f6d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2f6e0 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
2f6f0 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
2f700 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2f710 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
2f720 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
2f730 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
2f740 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  onCount);..     
2f750 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2f760 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2f7b0 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2f7c0 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  c bool OwnHandle
2f7d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2f7e0 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2f7f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2f800 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f810 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f820 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2f830 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2f840 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2f850 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f860 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f870 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20  rn ownHandle;.. 
2f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f8a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2f8b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f900 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2f910 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
2f920 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
2f930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f940 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2f950 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2f960 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2f970 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2f980 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2f990 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9c0 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
2f9d0 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2f9e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f9f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2fa00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2fa10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa60 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
2fa70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2fa80 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
2fa90 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
2faa0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2fab0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2fac0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2fad0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2fae0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2faf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fb00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2fb10 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
2fb20 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2fb30 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
2fb40 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
2fb50 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2fb60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fbb0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
2fbc0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2fbd0 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2fbe0 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
2fbf0 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
2fc00 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
2fc10 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73  QLite statements
2fc20 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
2fc30 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
2fc40 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
2fc50 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
2fc60 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
2fc70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2fc80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2fc90 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
2fca0 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
2fcb0 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2fcc0 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
2fcd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fd20 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2fd30 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
2fd40 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
2fd50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2fd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fda0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2fdb0 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
2fdc0 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
2fdd0 50 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d  Ptr(SQLiteStatem
2fde0 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d  entHandle stmt).
2fdf0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2fe00 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
2fe10 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2fe20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2fe30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2fe40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2fe50 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2fe60 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  tmt.syncRoot)..#
2fe70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2fe80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2fea0 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65  turn stmt.handle
2feb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2fec0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2fed0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2fee0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2fef0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2ff00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2ff60 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61  ternal SQLiteSta
2ff70 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c  tementHandle(SQL
2ff80 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2ff90 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
2ffa0 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20  stmt)..         
2ffb0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2ffc0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2ffd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ffe0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2fff0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
30000 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
30010 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30020 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
30030 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
30040 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
30050 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20  andle(stmt);..  
30060 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30070 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30080 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
300d0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
300e0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
300f0 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
30100 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
30110 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
30120 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
30130 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30140 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
30150 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
30160 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
30170 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
30180 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30190 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
301a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
301e0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
301f0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
30200 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
30210 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30220 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30230 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
30240 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
30250 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
30260 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
30270 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
30280 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
30290 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
302a0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
302b0 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
302c0 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
302d0 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
302e0 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
302f0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
30300 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
30310 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
30320 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
30330 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
30340 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
30350 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
30360 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30370 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
30380 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303a0 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
303b0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
303c0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
303d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303e0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
303f0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
30400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30410 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
30420 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
30430 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
30440 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
30450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30460 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30470 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
30480 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30490 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
304a0 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
304b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
304c0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
304f0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
30500 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
30510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30520 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30540 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
30550 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
30560 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
30590 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
305a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
305c0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
305d0 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
305e0 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
305f0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
30600 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
30610 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
30620 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
30630 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
30640 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30650 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
30660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30670 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
30680 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
30690 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
306a0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
306b0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
306c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
306d0 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
306e0 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
306f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
30700 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
30710 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
30720 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
30730 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
30740 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30760 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
30770 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
30780 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307a0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
307b0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
307c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
307d0 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61             "Fina
307e0 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b  lizeStatement: {
307f0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
30800 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
30820 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
30830 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
30840 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30850 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
30860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30870 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30880 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
30890 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
308a0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
308b0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
308c0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
308d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
308e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308f0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
30900 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
30910 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30930 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
30940 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
30950 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30960 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
30970 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
30980 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
30990 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
309a0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
309b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
309c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
309d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a10 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
30a20 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
30a30 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
30a40 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
30a50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30a60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
30a70 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
30a80 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
30a90 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
30aa0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
30ab0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
30ac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30b10 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
30b20 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
30b30 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
30b40 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
30b50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
30b60 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
30b70 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
30b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
30b90 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
30ba0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
30bb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30bd0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
30be0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
30bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30c10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30c20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30c70 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
30c80 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
30c90 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
30ca0 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
30cb0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
30cc0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
30ce0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
30cf0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
30d00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30d10 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
30d20 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
30d30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30d40 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
30d50 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
30d60 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
30d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30dc0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
30dd0 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61  BackupHandle Cla
30de0 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
30df0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
30e00 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
30e10 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61  anaged SQLite ba
30e20 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  ckup objects... 
30e30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
30e40 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42  ed class SQLiteB
30e50 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72  ackupHandle : Cr
30e60 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
30e70 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30e80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30e90 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
30ea0 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
30eb0 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
30ec0 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
30ed0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
30ee0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30f30 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
30f40 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
30f50 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
30f60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30fb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
30fc0 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
30fd0 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
30fe0 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
30ff0 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
31000 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31010 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75  if (backup != nu
31020 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
31030 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
31040 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31050 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
31060 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e     lock (backup.
31070 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
31080 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
31090 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
310a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
310b0 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d   backup.handle;.
310c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
310d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
310e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
310f0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
31100 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
31110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
31120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
31170 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75  rnal SQLiteBacku
31180 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  pHandle(SQLiteCo
31190 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
311a0 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75  nn, IntPtr backu
311b0 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p)..            
311c0 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
311d0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
311e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
311f0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
31200 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
31210 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31220 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31230 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
31240 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
31250 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
31260 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20  le(backup);..   
31270 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31280 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31290 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
312a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
312e0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
312f0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29  teBackupHandle()
31300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
31310 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
31320 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
31330 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
31340 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
31350 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
31360 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
31370 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
31380 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
31390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
313a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
313f0 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
31400 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
31410 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
31420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
31430 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31440 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
31450 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31460 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
31470 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
31480 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
31490 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
314a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314b0 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
314c0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
314d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314e0 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
314f0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
31500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31510 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
31520 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
31530 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
31540 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
31550 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
31560 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
31570 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
31580 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315a0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
315b0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
315c0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
315d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
315e0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
315f0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
31600 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
31610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
31620 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
31630 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
31640 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31670 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
31680 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31690 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
316a0 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
316b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
316c0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
316d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
316e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316f0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
31700 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
31710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31720 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31740 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
31750 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61  shBackup(cnn, ha
31760 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
31770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31780 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
31790 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
317b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
317c0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
317d0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
317e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
317f0 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
31800 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
31810 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
31820 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
31830 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
31840 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
31850 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31860 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
31870 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
31880 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
31890 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
318a0 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
318b0 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
318c0 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
318d0 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
318e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
318f0 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
31900 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
31910 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
31920 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
31930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31940 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31950 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
31960 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
31970 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
31980 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
31990 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
319a0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
319b0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319d0 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
319e0 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
319f0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
31a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a10 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
31a20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
31a30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31a40 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
31a50 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
31a60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31a70 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
31a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
31aa0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
31ab0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
31ac0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
31ad0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
31ae0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
31af0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
31b00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
31b30 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
31b40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31b50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
31b60 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
31b70 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
31b80 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
31b90 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
31ba0 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
31bb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31bc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31c10 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
31c20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
31c30 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
31c40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
31c50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31c60 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
31c70 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
31c80 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
31c90 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
31ca0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
31cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
31d00 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31d10 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
31d20 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
31d30 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
31d40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31d50 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
31d60 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
31d70 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
31d80 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
31d90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
31da0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31db0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31dc0 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
31dd0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
31de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31e00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31e10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31e60 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
31e70 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31e80 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
31e90 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
31ea0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
31eb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
31ec0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
31ed0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
31ee0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
31ef0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31f00 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
31f10 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
31f20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31f30 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
31f40 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
31f50 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
31f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
31fb0 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
31fc0 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  lobHandle Class.
31fd0 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
31fe0 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
31ff0 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
32000 67 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20  ged SQLite blob 
32010 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e  objects...    in
32020 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
32030 61 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ass SQLiteBlobHa
32040 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
32050 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
32060 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
32070 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
32080 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
32090 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
320a0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
320b0 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
320c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
320d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32110 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
32120 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
32130 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
32140 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
32150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32190 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
321a0 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
321b0 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
321c0 6e 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62  ntPtr(SQLiteBlob
321d0 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20  Handle blob)..  
321e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
321f0 20 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d       if (blob !=
32200 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
32210 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
32220 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
32230 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
32240 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62        lock (blob
32250 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
32260 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
32270 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32280 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32290 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a  n blob.handle;..
322a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
322b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
322c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
322d0 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
322e0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
322f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32340 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
32350 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  nal SQLiteBlobHa
32360 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
32370 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
32380 20 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20   IntPtr blob).. 
32390 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
323a0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
323b0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
323c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
323d0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
323e0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
323f0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
32400 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32410 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
32420 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
32430 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c      SetHandle(bl
32440 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ob);..          
32450 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
32460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
324c0 76 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48  vate SQLiteBlobH
324d0 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
324e0 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
324f0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
32500 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
32510 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
32520 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
32530 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
32540 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
32550 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
32560 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32570 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
325c0 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
325d0 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
325e0 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
325f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32600 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
32610 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
32620 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
32630 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
32640 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
32650 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
32660 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
32670 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
32680 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
32690 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
326a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
326b0 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
326c0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
326d0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
326e0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
326f0 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
32700 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
32710 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
32720 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
32730 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
32740 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
32750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
32760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32770 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
32780 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
32790 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
327a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
327b0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
327c0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
327d0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
327e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327f0 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22  "CloseBlob: {0}"
32800 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
32810 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
32820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32840 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
32850 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32860 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
32870 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
32890 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
328a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
328b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
328c0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
328d0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
328e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
328f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32910 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
32920 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  Blob(cnn, handle
32930 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
32940 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
32950 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
32960 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
32970 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32980 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
32990 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
329a0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
329b0 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
329c0 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
329d0 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f  ef DebugData.blo
329e0 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  bCount);..#endif
329f0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
32a00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
32a10 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
32a20 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
32a30 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
32a40 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
32a50 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
32a60 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
32a70 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
32a80 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
32a90 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
32aa0 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
32ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32ac0 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
32ad0 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
32ae0 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
32af0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
32b00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
32b30 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
32b40 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
32b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b60 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
32b70 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
32b80 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32b90 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
32ba0 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63  seBlob: {0}, exc
32bb0 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
32bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bd0 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
32be0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
32bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32c00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32c10 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
32c20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32c40 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
32c50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32c60 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
32c70 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
32c80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
32c90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
32ca0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
32cb0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
32cc0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
32cd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32ce0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
32cf0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
32d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32d10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32d20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
32d30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32d40 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
32d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
32d60 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
32d70 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
32d80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32dd0 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
32de0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
32df0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
32e00 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
32e10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32e20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
32e30 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
32e40 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43   DebugData.blobC
32e50 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
32e60 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
32e70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32ec0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
32ed0 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
32ee0 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
32ef0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
32f00 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
32f10 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
32f20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
32f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32f40 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
32f50 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
32f60 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f80 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
32f90 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
32fa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32fb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32fc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
32fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33020 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
33030 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
33040 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
33050 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
33060 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
33070 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
33080 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
33090 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
330a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
330b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
330c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
330d0 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
330e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
330f0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
33100 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
33110 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..