System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8bf9abdd24d91d6fdc6c8279af4b745b7c77a2e8:


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 73 74 72 69              stri
11f30 6e 67 20 61 62 62 72 65 76 69 61 74 69 6f 6e 3b  ng abbreviation;
11f40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11f50 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
11f60 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
11f70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11f80 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11f90 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  targetFrameworkA
11fa0 62 62 72 65 76 69 61 74 69 6f 6e 73 20 21 3d 20  bbreviations != 
11fb0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
11fc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 69 66 20 28 74 61 72 67 65 74 46 72 61 6d    if (targetFram
11ff0 65 77 6f 72 6b 41 62 62 72 65 76 69 61 74 69 6f  eworkAbbreviatio
12000 6e 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d  ns.TryGetValue(.
12010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
12030 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2c 20  argetFramework, 
12040 6f 75 74 20 61 62 62 72 65 76 69 61 74 69 6f 6e  out abbreviation
12050 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12060 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12080 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 62         return ab
12090 62 72 65 76 69 61 74 69 6f 6e 3b 0d 0a 20 20 20  breviation;..   
120a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
120c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
120d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
120e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12100 20 48 41 43 4b 3a 20 2a 4c 45 47 41 43 59 2a 20   HACK: *LEGACY* 
12110 46 61 6c 6c 62 61 63 6b 20 74 6f 20 74 68 65 20  Fallback to the 
12120 6f 6c 64 20 6d 65 74 68 6f 64 20 6f 66 0d 0a 20  old method of.. 
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
12140 20 20 20 20 20 20 61 62 62 72 65 76 69 61 74 69        abbreviati
12150 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  ng target framew
12160 6f 72 6b 20 6e 61 6d 65 73 2e 0d 0a 20 20 20 20  ork names...    
12170 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12180 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
12190 69 6e 64 65 78 20 3d 20 74 61 72 67 65 74 46 72  index = targetFr
121a0 61 6d 65 77 6f 72 6b 2e 49 6e 64 65 78 4f 66 28  amework.IndexOf(
121b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121c0 20 20 20 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f      ".NETFramewo
121d0 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 29 3b 0d  rk,Version=v");.
121e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
121f0 20 69 66 20 28 69 6e 64 65 78 20 21 3d 20 2d 31   if (index != -1
12200 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12210 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12220 20 20 20 20 20 20 61 62 62 72 65 76 69 61 74 69        abbreviati
12230 6f 6e 20 3d 20 74 61 72 67 65 74 46 72 61 6d 65  on = targetFrame
12240 77 6f 72 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  work;....       
12250 20 20 20 20 20 20 20 20 20 20 20 61 62 62 72 65             abbre
12260 76 69 61 74 69 6f 6e 20 3d 20 61 62 62 72 65 76  viation = abbrev
12270 69 61 74 69 6f 6e 2e 52 65 70 6c 61 63 65 28 0d  iation.Replace(.
12280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12290 20 20 20 20 20 20 20 22 2e 4e 45 54 46 72 61 6d         ".NETFram
122a0 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22  ework,Version=v"
122b0 2c 20 22 6e 65 74 22 29 3b 0d 0a 0d 0a 20 20 20  , "net");....   
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
122d0 62 62 72 65 76 69 61 74 69 6f 6e 20 3d 20 61 62  bbreviation = ab
122e0 62 72 65 76 69 61 74 69 6f 6e 2e 52 65 70 6c 61  breviation.Repla
122f0 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
12300 20 20 20 20 20 20 20 20 20 20 20 22 2e 22 2c 20             ".", 
12310 53 74 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a  String.Empty);..
12320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12330 20 20 20 20 69 6e 64 65 78 20 3d 20 61 62 62 72      index = abbr
12340 65 76 69 61 74 69 6f 6e 2e 49 6e 64 65 78 4f 66  eviation.IndexOf
12350 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (',');....      
12360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12370 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a 20 20  index != -1)..  
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12390 20 20 20 20 72 65 74 75 72 6e 20 61 62 62 72 65      return abbre
123a0 76 69 61 74 69 6f 6e 2e 53 75 62 73 74 72 69 6e  viation.Substrin
123b0 67 28 30 2c 20 69 6e 64 65 78 29 3b 0d 0a 20 20  g(0, index);..  
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123d0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
123e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
123f0 72 6e 20 61 62 62 72 65 76 69 61 74 69 6f 6e 3b  rn abbreviation;
12400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12410 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
12420 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
12430 72 6e 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  rn targetFramewo
12440 72 6b 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  rk;..      }....
12450 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
124a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
124b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
124c0 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20  / If necessary, 
124d0 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70  replaces all sup
124e0 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65  ported environme
124f0 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65  nt variable toke
12500 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  ns..      /// wi
12510 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69 61  th their associa
12520 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  ted values...   
12530 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12540 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
12550 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
12560 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  >..      /// A s
12570 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61  etting value rea
12580 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72 6f  d from an enviro
12590 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d  nment variable..
125a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
125b0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
125c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
125d0 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
125e0 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e   the <paramref n
125f0 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77  ame="value" /> w
12600 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ill all supporte
12610 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  d..      /// env
12620 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
12630 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
12640 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
12650 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
12660 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
12670 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
12680 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
12690 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
126a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
126b0 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
126c0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
126d0 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74  placeEnvironment
126e0 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 0d  VariableTokens(.
126f0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
12700 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
12710 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
12720 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
12730 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
12740 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
12750 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12760 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
12770 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63  rectory = GetCac
12780 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
12790 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
127a0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
127b0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
127c0 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
127e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127f0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
12800 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12820 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
12830 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72       AssemblyDir
12860 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72  ectoryToken, dir
12870 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  ectory);..      
12880 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
12890 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
128a0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
128b0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
128c0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
128d0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
128e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128f0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
12900 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
12930 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
12940 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
12950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
12960 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
12970 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12990 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
129a0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
129b0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
129c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
129f0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
12a00 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
12a10 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a30 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
12a40 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61  led to replace a
12a50 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20  ssembly " +..   
12a60 20 20 20 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 22 64 69 72 65             "dire
12a80 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d  ctory token: {0}
12a90 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
12aa0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
12ab0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ad0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
12ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12af0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12b10 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
12b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b30 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
12b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12b60 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12b70 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
12b80 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  sembly = null;..
12b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12ba0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
12bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12bc0 20 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79          assembly
12bd0 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
12be0 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
12bf0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
12c00 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
12c10 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
12c20 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
12c30 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
12c40 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
12c50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
12c60 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
12c70 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
12c80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
12c90 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
12ca0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
12cb0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
12cc0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cf0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
12d00 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
12d10 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
12d20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
12d40 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
12d50 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
12d60 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
12d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d80 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
12d90 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62  der failed to ob
12da0 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22  tain executing "
12db0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61                "a
12dd0 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
12de0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
12df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12e00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12e10 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
12e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12e40 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
12e50 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
12e60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
12e70 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
12e80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12e90 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
12ea0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d  argetFramework =
12eb0 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
12ec0 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
12ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
12ee0 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74  etAssemblyTarget
12ef0 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62  Framework(assemb
12f00 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
12f10 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
12f20 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
12f30 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (targetFramework
12f40 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12f50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12f60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12f90 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
12fa0 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20  alue.Replace(.. 
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fc0 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46           TargetF
12fd0 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74  rameworkToken, t
12fe0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b  argetFramework);
12ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13000 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
13010 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
13020 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
13040 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
13050 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
13060 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
13070 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
13080 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
13090 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
130a0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
130b0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
130c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
130d0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
130e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
13110 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
13120 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
13130 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
13140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13150 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
13160 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
13170 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
13180 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
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 22 70 72 65 2d 6c 6f           "pre-lo
131b0 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
131c0 65 70 6c 61 63 65 20 74 61 72 67 65 74 20 22 20  eplace target " 
131d0 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
131e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131f0 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65   "framework toke
13200 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  n: {0}", e)); /*
13210 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
13220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13230 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13240 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
13250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13280 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
13290 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
132a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
132b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
132c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
132d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
132e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
132f0 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
13300 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
13310 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
13320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13360 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
13370 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13380 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
13390 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  d returns the va
133a0 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  lue of the speci
133b0 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73  fied setting, us
133c0 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  ing the XML..   
133d0 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
133e0 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72  tion file and/or
133f0 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
13400 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74   variables for t
13410 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
13420 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e    /// process an
13430 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  d/or the current
13440 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76   system, when av
13450 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
13460 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13470 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
13480 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
13490 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
134a0 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
134b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
134c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
134d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
134e0 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
134f0 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
13500 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
13510 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
13520 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
13530 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
13540 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
13550 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
13560 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
13570 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
13580 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
13590 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
135a0 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65  setting -OR- the
135b0 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73   default value s
135c0 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20  pecified by..   
135d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
135e0 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20   name="default" 
135f0 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74  /> if it has not
13600 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
13610 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f  itly or..      /
13620 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
13630 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66  ermined.  By def
13640 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65  ault, all refere
13650 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67  nces to existing
13660 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69  ..      /// envi
13670 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
13680 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64  s will be expand
13690 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72  ed to their corr
136a0 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73  esponding values
136b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
136c0 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20  in the value to 
136d0 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65  be returned unle
136e0 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e  ss either the "N
136f0 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20  o_Expand" or..  
13700 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61      /// "No_Expa
13710 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  nd_<paramref nam
13720 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76  e="name" />" env
13730 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
13740 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20  e is set [to..  
13750 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67      /// anything
13760 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ]...      /// </
13770 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
13780 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
13790 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e  string GetSettin
137a0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
137b0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
137c0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
137d0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
137e0 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d  efault /* in */.
137f0 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
13800 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
13810 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
13820 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
13830 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
13840 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
13850 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74  pecial "No_SQLit
13860 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
13870 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
13880 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
13890 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
138a0 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c  t [to anything],
138b0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
138c0 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20  l always..      
138d0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
138e0 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  urn the default 
138f0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
13900 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13910 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
13920 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
13930 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
13940 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c           "No_SQL
13950 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
13960 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ue") != null).. 
13970 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13980 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13990 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
139a0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
139b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
13a10 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
13a20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13a30 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
13a40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
13a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13aa0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
13ab0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
13ac0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
13ad0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
13ae0 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61  / NOTE: We are a
13af0 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73  bout to read a s
13b00 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f  etting value fro
13b10 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  m the environmen
13b20 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
13b30 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c        or possibl
13b40 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63  y from the XML c
13b50 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
13b60 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20  e; create or..  
13b70 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
13b80 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61   increment the a
13b90 70 70 72 6f 70 72 69 61 74 65 20 73 74 61 74 69  ppropriate stati
13ba0 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stic now...     
13bb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13bc0 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
13bd0 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
13be0 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c  dCount(name, fal
13bf0 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  se);..#endif..  
13c00 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13c10 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
13c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13c70 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d     bool expand =
13c80 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44   true; /* SHARED
13c90 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41  : Environment -A
13ca0 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66  ND- XML config f
13cb0 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  ile. */....     
13cc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
13d10 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
13d20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
13d30 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
13d40 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
13d50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
13d60 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
13d70 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
13d80 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d  ("No_Expand") !=
13d90 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13da0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13db0 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73     expand = fals
13dc0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
13dd0 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20  .          else 
13de0 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
13df0 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
13e00 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
13e10 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
13e20 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
13e30 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
13e40 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
13e50 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
13e60 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e         "No_Expan
13e70 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21  d_{0}", name)) !
13e80 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13e90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13ea0 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
13eb0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
13ec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
13ed0 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
13ee0 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
13ef0 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d  Variable(name);.
13f00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
13f10 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
13f20 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
13f30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13f40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
13f50 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
13f60 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
13f70 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
13f80 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
13f90 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
13fa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13fb0 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
13fc0 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
13fd0 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
13fe0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
13ff0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
14000 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
14010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
14020 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a  eturn value;....
14030 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14040 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
14050 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69   If the "No_SQLi
14060 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22  teXmlConfigFile"
14070 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
14080 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20  iable is..      
14090 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74      //       set
140a0 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
140b0 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
140c0 20 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d   NEVER read from
140d0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
140e0 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e  //       XML con
140f0 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
14100 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
14110 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
14120 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
14130 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
14140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
14150 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c     "No_SQLiteXml
14160 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20  ConfigFile") != 
14170 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14190 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
141a0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
141b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
141c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
141d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14210 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14220 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
14230 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
14240 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14250 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
14260 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65   are about to re
14270 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c  ad a setting val
14280 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ue from the XML.
14290 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
142a0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
142b0 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f  n file; create o
142c0 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20  r increment the 
142d0 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20  appropriate..   
142e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
142f0 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a  statistic now...
14300 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14310 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
14320 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  a.IncrementSetti
14330 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65  ngReadCount(name
14340 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66  , true);..#endif
14350 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
14360 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
14370 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
143c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
143d0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61  tSettingValueVia
143e0 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a  XmlConfigFile(..
143f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
14400 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  tCachedXmlConfig
14410 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d 65  FileName(), name
14420 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78 70 61  , @default, expa
14430 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  nd);..      }...
14440 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
14450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
144a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
144b0 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  RK..      privat
144c0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
144d0 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69  ListToString(ILi
144e0 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29  st<string> list)
144f0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
14500 20 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d       if (list ==
14510 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
14520 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
14530 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
14540 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65  StringBuilder re
14550 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e  sult = new Strin
14560 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20  gBuilder();.... 
14570 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
14580 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74   (string element
14590 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20   in list)..     
145a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
145b0 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
145c0 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
145d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
145e0 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
145f0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
14600 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
14610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14620 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
14630 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (' ');....      
14640 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
14650 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d  ppend(element);.
14660 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
14670 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
14680 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
14690 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ();..      }....
146a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
146b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
146f0 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
14700 20 73 74 61 74 69 63 20 69 6e 74 20 43 68 65 63   static int Chec
14710 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
14720 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a  sAndPlatforms(..
14730 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14740 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
14750 20 20 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c         ref List<
14760 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d  string> matches.
14770 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
14780 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14790 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b   int result = 0;
147a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
147b0 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c   (matches == nul
147c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
147d0 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20    matches = new 
147e0 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
147f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
14800 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
14810 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
14820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
14830 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
14840 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
14850 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ry) &&..        
14860 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65            (proce
14870 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
14880 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c  Platforms != nul
14890 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
148a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
148b0 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
148c0 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74  (KeyValuePair<st
148d0 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61  ring, string> pa
148e0 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
148f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14900 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  in processorArch
14910 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
14920 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
14930 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14950 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69  f (Directory.Exi
14960 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  sts(MaybeCombine
14970 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
14980 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
149b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149c0 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
149d0 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
149e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149f0 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
14a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
14a30 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
14a40 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
14a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a60 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
14a70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a90 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ab0 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
14ac0 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
14ad0 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
14ae0 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20  ry, value)))..  
14af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b20 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c   matches.Add(val
14b30 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
14b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b50 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
14b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
14b80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14b90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14ba0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14bb0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
14bc0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
14bd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
14be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
14c20 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
14c30 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b  tatic bool Check
14c40 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
14c50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  (..          Ass
14c60 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d  embly assembly,.
14c70 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
14c80 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
14c90 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
14ca0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14cb0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
14cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14cd0 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20  if (assembly == 
14ce0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14cf0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14d00 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
14d10 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
14d20 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62  odeBase = assemb
14d30 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a  ly.CodeBase;....
14d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14d50 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
14d60 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29  rEmpty(codeBase)
14d70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14d80 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
14d90 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
14da0 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65      Uri uri = ne
14db0 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b  w Uri(codeBase);
14dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14dd0 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65  string localFile
14de0 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c  Name = uri.Local
14df0 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Path;....       
14e00 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
14e10 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c  .Exists(localFil
14e20 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
14e30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14e40 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
14e50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14e60 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
14e70 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
14e80 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
14e90 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65         localFile
14ea0 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
14eb0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
14ec0 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f      string xmlCo
14ed0 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d  nfigFileName = M
14ee0 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
14ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f00 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58      directory, X
14f10 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
14f20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14f30 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
14f40 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  sts(xmlConfigFil
14f50 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
14f60 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
14f70 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
14f80 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
14f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14fa0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
14fb0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fd0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
14fe0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
14ff0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
15000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15010 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
15020 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
15030 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
15040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15050 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
15060 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
15070 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  nd XML configura
15080 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20  tion file " +.. 
15090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150a0 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
150b0 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
150c0 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
150d0 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
150e0 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
150f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
15100 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
15110 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
15120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15130 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15140 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
15150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15170 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
15180 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
15190 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
151a0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
151b0 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
151c0 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e  ame = localFileN
151d0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
151e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
151f0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
15200 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15210 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69         List<stri
15220 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75  ng> matches = nu
15230 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
15240 20 20 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f       if (CheckFo
15250 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e  rArchitecturesAn
15260 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63  dPlatforms(direc
15270 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65  tory, ref matche
15280 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  s) > 0)..       
15290 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
152a0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
152b0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
152c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
152d0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
152e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
152f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15300 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
15310 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
15320 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
15330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15340 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
15350 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
15360 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
15370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15380 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
15390 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
153a0 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69  nd native sub-di
153b0 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20  rectories " +.. 
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153d0 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
153e0 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
153f0 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
15400 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
15410 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
15420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c                 L
15430 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63  istToString(matc
15440 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77  hes))); /* throw
15450 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
15460 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15470 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
15480 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
15490 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
154b0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
154c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
154e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
154f0 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46  ileName = localF
15500 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
15510 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15520 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
15530 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15540 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
15550 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
15560 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
15570 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
15580 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
15590 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
155a0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
155b0 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
155c0 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
155d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
155e0 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
155f0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
15600 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
15610 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
15620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15640 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
15650 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
15660 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
15670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15680 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
15690 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
156a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156b0 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
156c0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
156d0 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20  failed to check 
156e0 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20  code base " +.. 
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e       "for curren
15710 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
15720 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29  sembly: {0}", e)
15730 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
15740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
15750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
15760 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
15770 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15780 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
15790 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
157a0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
157b0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
157c0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
157d0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
157e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
157f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15840 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15850 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65 73  >..      /// Res
15860 65 74 73 20 74 68 65 20 63 61 63 68 65 64 20 61  ets the cached a
15870 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
15880 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  y value, thus fo
15890 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74 0d 0a  rcing the next..
158a0 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20 74        /// call t
158b0 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
158c0 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
158d0 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
158e0 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
158f0 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
15900 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
15910 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
15920 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
15930 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
15940 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63  / assembly direc
15950 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tory...      ///
15960 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15970 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
15980 63 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68  c void ResetCach
15990 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
159a0 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
159b0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
159c0 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
159d0 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
159e0 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
159f0 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
15a00 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52  rCount("Method_R
15a10 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
15a20 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a  lyDirectory");..
15a30 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
15a40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15a50 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
15a60 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
15a70 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
15a80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
15a90 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
15aa0 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
15ab0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
15ac0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
15ad0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
15ae0 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
15af0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
15b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15b50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15b60 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
15b70 75 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20  urns the cached 
15b80 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
15b90 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
15ba0 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ntly..      /// 
15bb0 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20  being executed, 
15bc0 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49  if available.  I
15bd0 66 20 74 68 65 20 63 61 63 68 65 64 20 61 73 73  f the cached ass
15be0 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20  embly directory 
15bf0 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
15c00 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
15c10 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
15c20 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
15c30 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
15c40 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  d will..      //
15c50 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74  / be used to obt
15c60 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79  ain the assembly
15c70 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
15c80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15c90 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
15ca0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
15cb0 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20  / The directory 
15cc0 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
15cd0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
15ce0 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e   executed -OR- n
15cf0 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ull if..      //
15d00 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
15d10 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
15d20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
15d30 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
15d40 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
15d50 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
15d60 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
15d70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
15d80 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
15d90 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
15da0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  UG..          De
15db0 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
15dc0 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74  tOtherCount("Met
15dd0 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41 73 73  hod_GetCachedAss
15de0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29  emblyDirectory")
15df0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
15e00 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
15e10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
15e20 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
15e30 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
15e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
15e50 66 20 28 63 61 63 68 65 64 41 73 73 65 6d 62 6c  f (cachedAssembl
15e60 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  yDirectory != nu
15e70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
15e80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
15e90 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
15ea0 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
15eb0 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 41 73          if (noAs
15ec0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 29  semblyDirectory)
15ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15ee0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
15f00 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
15f10 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  n GetAssemblyDir
15f20 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20  ectory();..     
15f30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
15f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
15f90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15fa0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
15fb0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 69  d returns the di
15fc0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
15fd0 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
15fe0 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  ly being..      
15ff0 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20  /// executed... 
16000 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16010 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
16020 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
16030 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
16040 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
16050 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
16060 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
16070 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
16080 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
16090 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
160a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
160b0 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
160c0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
160d0 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
160e0 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
160f0 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
16100 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
16110 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
16120 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
16130 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
16140 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
16150 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
16160 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory");..#endif.
16170 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
16180 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
16190 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
161a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
161b0 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
161c0 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e  mbly = Assembly.
161d0 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65  GetExecutingAsse
161e0 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly();....     
161f0 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
16200 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
16210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16230 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
16240 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
16250 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16270 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
16280 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
16290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
162a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
162b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
162c0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
162d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
162e0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
162f0 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c   fileName = null
16300 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ;....#if PLATFOR
16310 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
16320 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
16330 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61    AssemblyName a
16340 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73  ssemblyName = as
16350 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29  sembly.GetName()
16360 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16370 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e     if (assemblyN
16380 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
16390 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
163a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
163b0 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
163c0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
163d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
163e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
163f0 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
16400 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
16410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16420 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16430 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
16440 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
16450 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16460 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
16470 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e   = assemblyName.
16480 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65  CodeBase;..#else
16490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
164a0 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62  if (!CheckAssemb
164b0 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d  lyCodeBase(assem
164c0 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d  bly, ref fileNam
164d0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
164e0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
164f0 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74  = assembly.Locat
16500 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
16510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
16520 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
16530 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
16540 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16550 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16560 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
16570 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
16580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
16590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
165a0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
165b0 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
165c0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
165d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
165e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
165f0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
16600 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16610 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
16620 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
16630 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
16640 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
16650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16660 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
16670 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
16680 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
16690 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
166a0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
166b0 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
166c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
166d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
166e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
166f0 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
16700 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
16710 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
16720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16730 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
16740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
16750 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16760 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
16770 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
16780 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16790 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
167a0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
167b0 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
167c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
167d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
167e0 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
167f0 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
16800 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
16810 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
16820 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
16830 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
16840 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
16850 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
16860 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
16870 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
16880 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
16890 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
168a0 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
168b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
168c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
168d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
168e0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
168f0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
16900 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
16910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
16920 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
16930 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
16940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16950 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
16960 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
16970 65 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74  ed to get direct
16980 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ory " +..       
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
169a0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
169b0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
169c0 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
169d0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
169e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
169f0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
16a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16a20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
16a30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16a40 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
16a50 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16a60 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
16a70 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
16a80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16a90 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
16aa0 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
16ab0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
16ac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
16ad0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
16ae0 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
16af0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
16b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16b50 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61   #region Optiona
16b60 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l Native SQLite 
16b70 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64  Library Pre-Load
16b80 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20  ing Code..      
16b90 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
16ba0 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f 6f  E: If we are loo
16bb0 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74 61  king for the sta
16bc0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c 4c  ndard SQLite DLL
16bd0 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29   ("sqlite3.dll")
16be0 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  ,..      //     
16bf0 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44 4c    the interop DL
16c00 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65 72  L ("SQLite.Inter
16c10 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20  op.dll"), or we 
16c20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  are running on t
16c30 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  he..      //    
16c40 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20     .NET Compact 
16c50 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68  Framework, we sh
16c60 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68 69  ould include thi
16c70 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20  s code (only if 
16c80 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
16c90 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73 20      feature has 
16ca0 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e  actually been en
16cb0 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63 6f  abled).  This co
16cc0 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74 61  de would be tota
16cd0 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  lly..      //   
16ce0 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69 66      redundant if
16cf0 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 73   this module has
16d00 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e   been bundled in
16d10 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  to the mixed-mod
16d20 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
16d30 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20    assembly...   
16d40 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54     //..#if SQLIT
16d50 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
16d60 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
16d70 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
16d80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20  TFRAMEWORK....  
16d90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
16da0 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70   NOTE: Only comp
16db0 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69 76  ile in the nativ
16dc0 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
16dd0 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20 66  ad code if the f
16de0 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f  eature..      //
16df0 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20         has been 
16e00 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69 73  enabled for this
16e10 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f   build...      /
16e20 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  /..#if PRELOAD_N
16e30 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
16e40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16e50 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
16e60 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e  e name of the en
16e70 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
16e80 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  le containing th
16e90 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
16ea0 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
16eb0 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
16ec0 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
16ed0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16ee0 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
16ef0 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
16f00 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53 4f   string PROCESSO
16f10 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 3d  R_ARCHITECTURE =
16f20 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52 4f  ..          "PRO
16f30 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
16f40 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  URE";....      /
16f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
16fa0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
16fb0 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
16fc0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16fd0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16fe0 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61  e module file na
16ff0 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
17000 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
17010 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   or null...     
17020 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17030 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
17040 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53  static string _S
17050 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
17060 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  eFileName = null
17070 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170c0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
170d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
170e0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
170f0 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
17100 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
17110 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
17120 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
17130 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
17140 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17150 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
17160 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
17170 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  Ptr _SQLiteNativ
17180 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
17190 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
171a0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
171b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
17210 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17220 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
17230 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
17240 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64 69 72  (without any dir
17250 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69  ectory informati
17260 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  on)..      /// f
17270 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
17280 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20  Lite library to 
17290 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79  be pre-loaded by
172a0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
172b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
172c0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
172d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
172e0 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69 6c 65  // The base file
172f0 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
17300 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
17310 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
17320 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  aded by..      /
17330 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20 2d 4f  // this class -O
17340 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73 20 76  R- null if its v
17350 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65 20 64  alue cannot be d
17360 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
17370 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
17380 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
17390 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
173a0 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
173b0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20  ileNameOnly().. 
173c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
173d0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
173e0 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74 74 69  eOnly = GetSetti
173f0 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
17400 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
17410 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79 46 69  SQLite_LibraryFi
17420 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c  leNameOnly", nul
17430 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
17440 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
17450 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
17460 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17470 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a   fileNameOnly;..
17480 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
17490 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f  rn SQLITE_DLL; /
174a0 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20 20  * COMPAT */..   
174b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
17510 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17520 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68 65 73      /// Searches
17530 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
17540 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69  SQLite library i
17550 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  n the directory 
17560 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
17570 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d 62    /// the assemb
17580 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
17590 6e 67 20 65 78 65 63 75 74 65 64 20 61 73 20 77  ng executed as w
175a0 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73 65 20  ell as the base 
175b0 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
175c0 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63 75 72   /// for the cur
175d0 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
175e0 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
175f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17600 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17610 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
17620 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
17630 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
17640 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77  this parameter w
17650 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ill be modified 
17660 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  to refer to the 
17670 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  base..      /// 
17680 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
17690 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ning the native 
176a0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
176b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
176c0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
176d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
176e0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
176f0 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  e">..      /// U
17700 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
17710 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
17720 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
17730 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e 61 6d  refer to the nam
17740 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  e..      /// of 
17750 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 64 69  the immediate di
17760 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20 74 68  rectory (i.e. th
17770 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  e offset from th
17780 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17790 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  )..      /// con
177a0 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69  taining the nati
177b0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
177c0 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
177d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
177e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
177f0 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
17800 79 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f  yOnly">..      /
17810 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
17820 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
17830 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
17840 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 6c   to non-zero onl
17850 79 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y if..      /// 
17860 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
17870 72 79 20 69 74 73 65 6c 66 20 73 68 6f 75 6c 64  ry itself should
17880 20 62 65 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20   be allowed for 
17890 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69  loading the nati
178a0 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ve..      /// li
178b0 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
178c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
178d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
178e0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
178f0 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69 66  ero (success) if
17900 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
17910 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 66  te library was f
17920 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  ound; otherwise,
17930 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  ..      /// zero
17940 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20   (failure)...   
17950 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17960 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
17970 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61   static bool Sea
17980 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28  rchForDirectory(
17990 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
179a0 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
179b0 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 2f 2a  tory,         /*
179c0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
179d0 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
179e0 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
179f0 75 72 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ure, /* out */..
17a00 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 6f            ref bo
17a10 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65  ol allowBaseDire
17a20 63 74 6f 72 79 4f 6e 6c 79 20 20 20 2f 2a 20 6f  ctoryOnly   /* o
17a30 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
17a40 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
17a50 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
17a60 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
17a70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
17a80 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65  eLoadSQLite_NoSe
17a90 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
17aa0 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
17ab0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
17ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17ad0 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44  turn false; /* D
17ae0 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20  ISABLED */..    
17af0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17b00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
17b10 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
17b20 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
17b30 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
17b40 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
17b50 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
17b60 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
17b70 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
17b80 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
17b90 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
17ba0 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
17bb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
17bc0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
17bd0 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
17be0 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
17bf0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17c00 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
17c10 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
17c20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17c30 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
17c40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
17c50 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
17c60 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73   the list of bas
17c70 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e  e directories an
17c80 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74  d processor/plat
17c90 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20  form..          
17ca0 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20  //       names. 
17cb0 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c   These lists wil
17cc0 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  l be used to hel
17cd0 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74  p locate the nat
17ce0 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ive..          /
17cf0 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63  /       SQLite c
17d00 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20  ore library (or 
17d10 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
17d20 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e  ) to pre-load in
17d30 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
17d40 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63         this proc
17d50 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
17d60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
17d70 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69  ring[] directori
17d80 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
17d90 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
17da0 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23  yDirectory(),..#
17db0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
17dc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
17dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70               App
17de0 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
17df0 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
17e00 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ry,..#endif..   
17e10 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
17e20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 78         string ex
17e30 74 72 61 53 75 62 44 69 72 65 63 74 6f 72 79 20  traSubDirectory 
17e40 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
17e50 20 20 20 20 20 69 66 20 28 28 47 65 74 53 65 74       if ((GetSet
17e60 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
17e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
17e80 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 6c 6c  reLoadSQLite_All
17e90 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f  owBaseDirectoryO
17ea0 6e 6c 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  nly", null) != n
17eb0 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ull) ||..       
17ec0 20 20 20 20 20 20 20 28 48 65 6c 70 65 72 4d 65         (HelperMe
17ed0 74 68 6f 64 73 2e 49 73 44 6f 74 4e 65 74 43 6f  thods.IsDotNetCo
17ee0 72 65 28 29 20 26 26 20 21 48 65 6c 70 65 72 4d  re() && !HelperM
17ef0 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73  ethods.IsWindows
17f00 28 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ()))..          
17f10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17f20 20 65 78 74 72 61 53 75 62 44 69 72 65 63 74 6f   extraSubDirecto
17f30 72 79 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  ry = String.Empt
17f40 79 3b 20 2f 2a 20 2e 4e 45 54 20 43 6f 72 65 20  y; /* .NET Core 
17f50 6f 6e 20 50 4f 53 49 58 20 2a 2f 0d 0a 20 20 20  on POSIX */..   
17f60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17f70 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73        string[] s
17f80 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ubDirectories = 
17f90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17fa0 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
17fb0 68 69 74 65 63 74 75 72 65 28 29 2c 20 2f 2a 20  hitecture(), /* 
17fc0 65 2e 67 2e 20 22 78 38 36 22 20 2a 2f 0d 0a 20  e.g. "x86" */.. 
17fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
17fe0 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c  PlatformName(nul
17ff0 6c 29 2c 20 20 20 20 20 20 2f 2a 20 65 2e 67 2e  l),      /* e.g.
18000 20 22 57 69 6e 33 32 22 20 2a 2f 0d 0a 20 20 20   "Win32" */..   
18010 20 20 20 20 20 20 20 20 20 20 20 65 78 74 72 61             extra
18020 53 75 62 44 69 72 65 63 74 6f 72 79 20 20 20 20  SubDirectory    
18030 20 20 20 20 20 20 20 2f 2a 20 62 61 73 65 20 64         /* base d
18040 69 72 65 63 74 6f 72 79 20 6f 6e 6c 79 3f 20 2a  irectory only? *
18050 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  /..          };.
18060 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
18070 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
18080 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
18090 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
180a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
180b0 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
180c0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
180d0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
180e0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
180f0 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
18100 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
18110 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
18120 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
18130 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18140 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18150 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
18160 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18170 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
18180 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
18190 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
181a0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
181b0 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
181c0 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
181d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
181e0 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
181f0 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
18200 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
18210 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
18220 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
18230 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
18240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18250 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18260 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
18270 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
18280 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
18290 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
182a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182b0 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
182c0 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
182d0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
182e0 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
182f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
18300 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
18310 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
18320 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
18330 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
18340 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
18350 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
18360 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
18370 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18380 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18390 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
183a0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
183b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
183c0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
183d0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
183e0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
183f0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
18400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18410 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18430 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
18440 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
18450 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
18460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
18480 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
18490 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
184a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184b0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
184c0 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
184d0 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
184e0 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
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 6e 61 6d 65 20 5c           "name \
18510 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e  "{0}\", returnin
18520 67 20 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31  g directory \"{1
18530 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20  }\" and " +..   
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 20 20 22 73 75 62 2d             "sub-
18560 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c  directory \"{2}\
18570 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c  "...", fileName,
18580 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
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 73 75 62 44 69             subDi
185b0 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68  rectory)); /* th
185c0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
185d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
185e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
185f0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
18600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18610 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18630 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
18640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18650 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
18660 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18670 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
18680 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
18690 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
186a0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
186b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
186c0 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
186d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
186e0 20 20 20 20 20 20 20 20 20 61 6c 6c 6f 77 42 61           allowBa
186f0 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 20  seDirectoryOnly 
18700 3d 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 2e  = (subDirectory.
18710 4c 65 6e 67 74 68 20 3d 3d 20 30 29 3b 0d 0a 0d  Length == 0);...
18720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18730 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
18740 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d  ue; /* FOUND */.
18750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18760 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
18770 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18780 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
18790 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a  return false; /*
187a0 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20   NOT FOUND */.. 
187b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
18810 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18820 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
18830 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
18840 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
18850 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
18860 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
18870 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a     /// domain...
18880 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
18890 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
188a0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
188b0 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
188c0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
188d0 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
188e0 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20  ion domain -OR- 
188f0 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
18900 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
18910 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
18920 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
18930 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
18940 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
18950 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
18960 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18970 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18980 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
18990 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
189a0 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79  te_BaseDirectory
189b0 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
189c0 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  riable..        
189d0 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65    //       is se
189e0 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
189f0 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20  im for the base 
18a00 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
18a10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18a20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
18a30 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e  tory = GetSettin
18a40 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53  gValue("PreLoadS
18a50 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
18a60 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ory",..         
18a70 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20       null);.... 
18a80 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
18a90 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
18aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
18ab0 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
18ac0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
18ad0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18ae0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
18af0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
18b00 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
18b10 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
18b20 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
18b30 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
18b40 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
18b50 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
18b60 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
18b70 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  then attempt to 
18b80 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  use the..       
18b90 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65     //       dire
18ba0 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
18bb0 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65   the currently e
18bc0 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
18bd0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  y..          // 
18be0 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74        (i.e. Syst
18bf0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20  em.Data.SQLite) 
18c00 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61  intsead of the a
18c10 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
18c20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
18c30 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63  omain base direc
18c40 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
18c50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
18c60 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
18c70 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
18c80 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
18c90 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
18ca0 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  yDirectory", nul
18cb0 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
18cc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18cd0 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
18ce0 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
18cf0 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
18d00 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18d10 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
18d20 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18d30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
18d40 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
18d50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
18d60 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
18d70 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
18d80 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
18d90 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20   using the base 
18da0 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
18db0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
18dc0 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70       current app
18dd0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
18de0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
18df0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
18e00 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
18e10 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
18e20 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a  ectory;..#else..
18e30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18e40 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
18e50 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
18e60 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
18e70 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
18e80 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
18e90 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
18ea0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
18eb0 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  ng assembly...  
18ec0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18ed0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
18ee0 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
18ef0 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y();..#endif..  
18f00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
18f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
18f60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18f70 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
18f80 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d  nes if the dynam
18f90 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
18fa0 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72  file name requir
18fb0 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20  es a suffix..   
18fc0 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20     /// and adds 
18fd0 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  it if necessary.
18fe0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
18ff0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
19000 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
19010 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
19020 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
19030 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  l dynamic link l
19040 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
19050 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
19060 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19070 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
19080 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
19090 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   The dynamic lin
190a0 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
190b0 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f  ame, possibly mo
190c0 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64  dified to includ
190d0 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e an..      /// 
190e0 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20  extension...    
190f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19100 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
19110 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69  static string Fi
19120 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d  xUpDllFileName(.
19130 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
19140 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e  g fileName /* in
19150 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
19160 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
19170 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
19180 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
19190 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
191a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
191b0 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72        if (Helper
191c0 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
191d0 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
191e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
191f0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
19200 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
19210 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
19220 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19230 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
19240 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
19250 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
19260 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19290 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
192a0 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
192b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
192c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
192d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
192e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
192f0 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
19300 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
19310 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19360 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
19370 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
19380 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
19390 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
193a0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
193b0 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
193c0 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
193d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
193e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
193f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19400 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
19410 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
19420 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
19430 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
19440 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
19450 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
19460 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
19470 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19480 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
19490 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
194a0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
194b0 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
194c0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
194d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
194e0 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
194f0 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
19500 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
19510 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
19520 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
19530 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
19540 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
19550 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
19560 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
19570 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
19580 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
19590 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
195a0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
195b0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
195c0 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
195d0 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
195e0 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
195f0 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
19600 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c  hitecture", null
19610 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
19620 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
19630 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
19640 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19650 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
19660 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
19670 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
19680 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
19690 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
196a0 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
196b0 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
196c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
196d0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
196e0 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
196f0 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
19700 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c  RCHITECTURE, nul
19710 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
19720 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
19770 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
19780 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
19790 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
197a0 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b    // HACK: Check
197b0 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69   for an "impossi
197c0 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20  ble" situation. 
197d0 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20   If the pointer 
197e0 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20  size..          
197f0 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62  //       is 32-b
19800 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73  its, the process
19810 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
19820 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34  cannot be "AMD64
19830 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  "...          //
19840 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63         In that c
19850 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f  ase, we are almo
19860 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74  st certainly hit
19870 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68  ting a bug in th
19880 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
19890 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20        operating 
198a0 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69  system and/or Vi
198b0 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
198c0 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20   causes the..   
198d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
198e0 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
198f0 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65  ECTURE environme
19900 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63  nt variable to c
19910 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
19920 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
19930 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f  rong value in so
19940 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  me circumstances
19950 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20  .  Please refer 
19960 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20  to ticket..     
19970 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39       //       [9
19980 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66  ac9862611] for f
19990 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
199a0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  on...          /
199b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
199c0 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d  ((IntPtr.Size ==
199d0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26   sizeof(int)) &&
199e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
199f0 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72  String.Equals(pr
19a00 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19a10 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20  ure, "AMD64",.. 
19a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19a30 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
19a40 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
19a50 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
19a60 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
19a70 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
19a80 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
19a90 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
19aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
19ab0 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e  OTE: When tracin
19ac0 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61  g is enabled, sa
19ad0 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c  ve the originall
19ae0 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20  y detected..    
19af0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
19b00 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
19b10 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65  hitecture before
19b20 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20   changing it... 
19b30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
19b50 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65  tring savedProce
19b60 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19b70 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68   = processorArch
19b80 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69  itecture;..#endi
19b90 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
19ba0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
19bb0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
19bc0 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61   know that opera
19bd0 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61  ting systems tha
19be0 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22  t return "AMD64"
19bf0 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   as..           
19c00 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19c10 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19c20 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61  ecture are actua
19c30 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f  lly a superset o
19c40 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
19c50 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78   //       the "x
19c60 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  86" processor ar
19c70 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72  chitecture; ther
19c80 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20  efore, return.. 
19c90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19ca0 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e        "x86" when
19cb0 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a   the pointer siz
19cc0 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20  e is 32-bits... 
19cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
19cf0 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
19d00 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d  ture = "x86";...
19d10 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
19d20 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
19d30 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
19d40 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
19d50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19d70 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19d80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
19d90 6f 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61  ow that we hit a
19da0 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20   fairly unusual 
19db0 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d  situation (i.e..
19dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19dd0 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19de0 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f  "wrong" processo
19df0 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77  r architecture w
19e00 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20  as detected)... 
19e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19e30 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
19e40 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
19e50 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
19e60 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
19e70 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
19e80 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
19e90 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
19ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
19eb0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
19ec0 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64  -loader detected
19ed0 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72   {0}-bit pointer
19ee0 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
19ef0 20 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a              "siz
19f00 65 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72  e with processor
19f10 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
19f20 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b  {1}\", using " +
19f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19f40 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73          "process
19f50 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
19f60 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e  \"{2}\" instead.
19f70 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ..",..          
19f80 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
19f90 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62  tr.Size * 8 /* b
19fa0 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f  its */, savedPro
19fb0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19fc0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
19fd0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
19fe0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19ff0 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
1a000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1a010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a020 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
1a030 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a040 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
1a050 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
1a060 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
1a070 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
1a080 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1a090 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a0e0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
1a0f0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a100 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1a110 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a120 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1a130 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1a140 20 44 65 66 61 75 6c 74 20 74 6f 20 74 68 65 20   Default to the 
1a150 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1a160 65 63 74 75 72 65 20 72 65 70 6f 72 74 65 64 20  ecture reported 
1a170 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
1a180 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
1a190 70 70 72 6f 70 72 69 61 74 65 20 6e 61 74 69 76  ppropriate nativ
1a1a0 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
1a1b0 65 6d 20 41 50 49 2c 20 69 66 20 61 6e 79 2e 0d  em API, if any..
1a1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1a1d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a1e0 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1a1f0 65 63 74 75 72 65 20 3d 20 4e 61 74 69 76 65 4c  ecture = NativeL
1a200 69 62 72 61 72 79 48 65 6c 70 65 72 2e 47 65 74  ibraryHelper.Get
1a210 4d 61 63 68 69 6e 65 28 29 3b 0d 0a 0d 0a 20 20  Machine();....  
1a220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a240 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c   NOTE: Upon fail
1a250 75 72 65 2c 20 72 65 74 75 72 6e 20 65 6d 70 74  ure, return empt
1a260 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20  y string.  This 
1a270 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20  will prevent..  
1a280 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1a290 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67       the calling
1a2a0 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e   method from con
1a2b0 73 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65  sidering this me
1a2c0 74 68 6f 64 20 63 61 6c 6c 0d 0a 20 20 20 20 20  thod call..     
1a2d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1a2e0 20 20 61 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a    a "failure"...
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a310 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
1a320 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
1a330 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a340 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
1a350 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
1a360 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1a370 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a380 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a3d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a3e0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a3f0 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  cture;..      }.
1a400 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a450 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
1a460 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1a470 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f  // Given the pro
1a480 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
1a490 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65  ure, returns the
1a4a0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61   name of the pla
1a4b0 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f  tform...      //
1a4c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a4d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a4e0 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
1a4f0 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
1a500 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63      /// The proc
1a510 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
1a520 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61  re to be transla
1a530 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72  ted to a platfor
1a540 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  m name...      /
1a550 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1a560 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a570 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
1a580 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f  platform name fo
1a590 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
1a5a0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1a5b0 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c  ecture -OR- null
1a5c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69  ..      /// if i
1a5d0 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
1a5e0 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
1a5f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1a600 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1a610 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c  tic string GetPl
1a620 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20  atformName(..   
1a630 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
1a640 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
1a650 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ure /* in */..  
1a660 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1a670 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
1a680 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
1a690 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
1a6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a6b0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a6c0 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65  cture = GetProce
1a6d0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
1a6e0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
1a6f0 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
1a700 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73  llOrEmpty(proces
1a710 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1a720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1a730 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1a740 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
1a750 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
1a760 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1a780 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
1a790 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
1a7a0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1a7b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a7c0 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
1a7d0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1a7e0 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
1a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a800 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
1a810 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
1a820 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d  ms.TryGetValue(.
1a830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a840 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
1a850 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75  Architecture, ou
1a860 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29  t platformName))
1a870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a880 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a890 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74       return plat
1a8a0 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  formName;..     
1a8b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a8c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1a8d0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1a8e0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
1a8f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
1a940 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a950 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
1a960 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
1a970 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1a980 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f   library based o
1a990 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  n the specified.
1a9a0 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
1a9b0 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73  tory and process
1a9c0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e  or architecture.
1a9d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
1a9e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
1a9f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
1aa00 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
1aa10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
1aa20 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  se directory to 
1aa30 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  use, null for de
1aa40 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20  fault (the base 
1aa50 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20  directory of..  
1aa60 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72      /// the curr
1aa70 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
1aa80 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64  domain).  This d
1aa90 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20  irectory should 
1aaa0 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1aab0 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
1aac0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70   architecture sp
1aad0 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63  ecific sub-direc
1aae0 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f  tories...      /
1aaf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ab00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ab10 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
1ab20 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
1ab30 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65     /// The reque
1ab40 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  sted processor a
1ab50 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c  rchitecture, nul
1ab60 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
1ab70 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
1ab80 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
1ab90 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
1aba0 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54  ent process).  T
1abb0 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c  his caller shoul
1abc0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d  d..      /// alm
1abd0 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69  ost always speci
1abe0 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73  fy null for this
1abf0 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20   parameter...   
1ac00 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ac10 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
1ac20 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77 42 61 73  m name="allowBas
1ac30 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 22 3e  eDirectoryOnly">
1ac40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
1ac50 7a 65 72 6f 20 69 6e 64 69 63 61 74 65 73 20 74  zero indicates t
1ac60 68 61 74 20 74 68 65 20 6e 61 74 69 76 65 20 53  hat the native S
1ac70 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 63 61  QLite library ca
1ac80 6e 20 62 65 20 6c 6f 61 64 65 64 0d 0a 20 20 20  n be loaded..   
1ac90 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20     /// from the 
1aca0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
1acb0 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 2f 2f  tself...      //
1acc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1acd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ace0 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  e="nativeModuleF
1acf0 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
1ad00 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61   /// The candida
1ad10 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  te native module
1ad20 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f   file name to lo
1ad30 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ad will be store
1ad40 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f  d here,..      /
1ad50 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  // if necessary.
1ad60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
1ad70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
1ad80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
1ad90 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22  iveModuleHandle"
1ada0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
1adb0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
1adc0 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65  andle as returne
1add0 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79  d by LoadLibrary
1ade0 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d   will be stored.
1adf0 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c  .      /// here,
1ae00 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
1ae10 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
1ae20 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69  be IntPtr.Zero i
1ae30 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  f the call to.. 
1ae40 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62       /// LoadLib
1ae50 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20  rary fails...   
1ae60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ae70 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
1ae80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
1ae90 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
1aea0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61  native module wa
1aeb0 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73  s loaded success
1aec0 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65  fully; otherwise
1aed0 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
1aee0 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
1aef0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1af00 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
1af10 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  ool PreLoadSQLit
1af20 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
1af30 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
1af40 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20  ctory,          
1af50 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1af60 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
1af70 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
1af80 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  re,    /* in */.
1af90 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
1afa0 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f  allowBaseDirecto
1afb0 72 79 4f 6e 6c 79 2c 20 20 20 20 20 2f 2a 20 69  ryOnly,     /* i
1afc0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1afd0 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76  ref string nativ
1afe0 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
1aff0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1b000 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1b010 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
1b020 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f  dle    /* out */
1b030 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
1b040 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b050 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b060 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1b070 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64  specified base d
1b080 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c  irectory is null
1b090 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c  , use the defaul
1b0a0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
1b0b0 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65        (i.e. atte
1b0c0 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63  mpt to automatic
1b0d0 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e  ally detect it).
1b0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1b0f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1b100 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
1b110 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1b120 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
1b130 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63  y = GetBaseDirec
1b140 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
1b150 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b160 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
1b170 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
1b180 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  y the base direc
1b190 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  tory, stop now..
1b1a0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1b1b0 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
1b1c0 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
1b1d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b1e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b1f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1b200 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1b210 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74  OTE: Determine t
1b220 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
1b230 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
1b240 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
1b250 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1b260 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20       If this is 
1b270 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69  not known by thi
1b280 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e  s class, we cann
1b290 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20  ot continue...  
1b2a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b2b0 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1b2c0 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e  eNameOnly = GetN
1b2d0 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65  ativeLibraryFile
1b2e0 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20  NameOnly();.... 
1b2f0 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
1b300 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c  eNameOnly == nul
1b310 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1b320 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1b330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1b340 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
1b350 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76  TE: If the nativ
1b360 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1b370 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62   exists in the b
1b380 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20  ase directory.. 
1b390 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b3a0 20 20 69 74 73 65 6c 66 2c 20 70 6f 73 73 69 62    itself, possib
1b3b0 6c 79 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  ly stop now...  
1b3c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b3d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1b3e0 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1b3f0 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1b400 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
1b410 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
1b420 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1b430 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1b440 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
1b450 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
1b460 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1b470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b490 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 63 61   NOTE: If the ca
1b4a0 6c 6c 65 72 20 69 73 20 61 6c 6c 6f 77 69 6e 67  ller is allowing
1b4b0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
1b4c0 6f 72 79 20 69 74 73 65 6c 66 0d 0a 20 20 20 20  ory itself..    
1b4d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b4e0 20 20 20 74 6f 20 62 65 20 75 73 65 64 2c 20 61     to be used, a
1b4f0 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65 20 61 20  lso make sure a 
1b500 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1b510 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ecture..        
1b520 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
1b530 61 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  as not specified
1b540 3b 20 69 66 20 65 69 74 68 65 72 20 63 6f 6e 64  ; if either cond
1b550 69 74 69 6f 6e 20 69 73 20 66 61 6c 73 65 20 6a  ition is false j
1b560 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ust..           
1b570 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 6f 70     //       stop
1b580 20 6e 6f 77 20 61 6e 64 20 72 65 74 75 72 6e 20   now and return 
1b590 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1b5a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b5b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
1b5c0 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79  lowBaseDirectory
1b5d0 4f 6e 6c 79 20 26 26 0d 0a 20 20 20 20 20 20 20  Only &&..       
1b5e0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
1b5f0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
1b600 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1b610 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
1b620 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b630 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f              goto
1b640 20 62 61 73 65 44 69 72 4f 6e 6c 79 3b 0d 0a 20   baseDirOnly;.. 
1b650 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1b670 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1b680 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b690 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1b6a0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
1b6b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1b6c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1b6d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1b6e0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
1b6f0 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
1b700 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
1b710 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
1b720 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
1b730 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
1b740 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b750 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
1b760 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
1b770 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1b780 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
1b790 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
1b7a0 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
1b7b0 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
1b7c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b7d0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b7e0 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
1b7f0 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
1b800 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1b810 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
1b820 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b830 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
1b840 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
1b850 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1b860 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1b870 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1b880 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b890 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
1b8a0 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
1b8b0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
1b8c0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1b8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1b8e0 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
1b8f0 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
1b900 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1b910 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1b920 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
1b930 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1b940 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1b950 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
1b960 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
1b970 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
1b980 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
1b990 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1b9a0 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
1b9b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
1b9c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1b9d0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
1b9e0 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
1b9f0 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
1ba00 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
1ba10 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
1ba20 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
1ba30 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
1ba40 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
1ba50 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1ba60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1ba70 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
1ba80 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1ba90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1baa0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1bab0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1bac0 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
1bad0 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
1bae0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
1baf0 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
1bb00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
1bb10 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
1bb20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bb30 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1bb40 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
1bb50 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
1bb60 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
1bb70 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
1bb80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1bba0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
1bbb0 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
1bbc0 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
1bbd0 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1bbf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1bc00 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
1bc10 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1bc20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bc30 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1bc40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1bc60 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
1bc70 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
1bc80 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
1bc90 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
1bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1bcb0 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
1bcc0 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
1bcd0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
1bce0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1bcf0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1bd00 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
1bd10 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
1bd20 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
1bd30 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
1bd40 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
1bd50 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
1bd60 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
1bd70 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1bd80 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1bd90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1bda0 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
1bdb0 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
1bdc0 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
1bdd0 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
1bde0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bdf0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
1be00 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1be10 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1be20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1be30 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
1be40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 62 61 73 65   }....      base
1be50 44 69 72 4f 6e 6c 79 3a 0d 0a 0d 0a 20 20 20 20  DirOnly:....    
1be60 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1be70 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1be80 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1be90 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
1bea0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1beb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1bec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bed0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1bee0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1bef0 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20  E: Show exactly 
1bf00 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79  where we are try
1bf10 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  ing to load the 
1bf20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
1bf30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1bf40 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72     SQLite librar
1bf50 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20  y from...       
1bf60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf80 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1bf90 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
1bfa0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
1bfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfc0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1bfd0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1bfe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bff0 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
1c000 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
1c010 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c  r is trying to l
1c020 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c040 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1c050 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e  brary \"{0}\"...
1c060 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  ", fileName)); /
1c070 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1c080 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1c090 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1c0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c0b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c0c0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
1c0d0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1c0e0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c110 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
1c120 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1c130 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
1c140 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
1c150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
1c170 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
1c180 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
1c190 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
1c1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1c1b0 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
1c1c0 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20 20   an exception.  
1c1d0 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74 68  This must use th
1c1e0 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
1c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1c200 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d        P/Invoke m
1c210 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63 75  ethod for the cu
1c220 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67 20  rrent operating 
1c230 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20  system...       
1c240 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1c250 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1c260 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
1c270 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
1c280 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1c290 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e 61  oduleHandle = Na
1c2a0 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65  tiveLibraryHelpe
1c2b0 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  r.LoadLibrary(fi
1c2c0 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1c2d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1c2e0 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61   (nativeModuleHa
1c2f0 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1c300 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1c310 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
1c320 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1c330 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
1c340 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
1c350 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1c360 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1c370 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
1c380 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
1c390 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1c3a0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
1c3b0 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
1c3c0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1c3d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c400 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72      // NOTE: Fir
1c410 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61 73  st, grab the las
1c420 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e 75  t Win32 error nu
1c430 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  mber...         
1c440 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1c450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c460 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d  nt lastError = M
1c470 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57 69  arshal.GetLastWi
1c480 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74  n32Error(); /* t
1c490 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
1c4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1c4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c4c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
1c4d0 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65 64   where we failed
1c4e0 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1c4f0 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
1c500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c510 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66         library f
1c520 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74  rom along with t
1c530 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63  he Win32 error c
1c540 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ode and..       
1c550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1c560 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e      exception in
1c570 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
1c580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c5a0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1c5b0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1c5c0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1c5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c5e0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1c5f0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1c600 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1c610 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
1c620 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
1c630 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c  ader failed to l
1c640 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c660 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1c670 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67  brary \"{0}\" (g
1c680 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31  etLastError = {1
1c690 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  }): {2}",..     
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6b0 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45   fileName, lastE
1c6c0 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68  rror, e)); /* th
1c6d0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1c6e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c6f0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1c700 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c720 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1c730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1c740 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1c750 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c760 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1c770 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
1c780 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
1c790 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1c7a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c7f0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1c800 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1c810 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1c820 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
1c830 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
1c840 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20  ork, the native 
1c850 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
1c860 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20   must..    //   
1c870 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63 61      be used beca
1c880 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73 20  use it provides 
1c890 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75  several workarou
1c8a0 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70  nds to .NET Comp
1c8b0 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  act..    //     
1c8c0 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69    Framework limi
1c8d0 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e  tations importan
1c8e0 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65  t for proper ope
1c8f0 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f  ration of the co
1c900 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  re..    //      
1c910 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
1c920 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ite functionalit
1c930 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62  y (e.g. being ab
1c940 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20  le to bind..    
1c950 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65 74  //       paramet
1c960 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63  ers and handle c
1c970 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20  olumn values of 
1c980 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20  types Int64 and 
1c990 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f  Double)...    //
1c9a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1c9b0 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1c9c0 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1c9d0 2e 49 6e 74 65 72 6f 70 2e 31 31 32 2e 64 6c 6c  .Interop.112.dll
1c9e0 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45  ";..#elif SQLITE
1c9f0 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f  _STANDARD..    /
1ca00 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1ca10 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
1ca20 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
1ca30 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61  e library is ena
1ca40 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20  bled, use it... 
1ca50 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
1ca60 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
1ca70 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73   SQLITE_DLL = "s
1ca80 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20  qlite3";..#elif 
1ca90 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d  USE_INTEROP_DLL.
1caa0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1cab0 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
1cac0 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
1cad0 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
1cae0 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65  sembly is enable
1caf0 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  d,..    //      
1cb00 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
1cb10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1cb20 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1cb30 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1cb40 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a  .Interop.dll";..
1cb50 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
1cb60 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
1cb70 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
1cb80 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
1cb90 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
1cba0 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
1cbb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
1cbc0 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
1cbd0 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
1cbe0 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
1cbf0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1cc00 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
1cc10 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
1cc20 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
1cc30 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
1cc40 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
1cc50 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
1cc60 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
1cc70 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
1cc80 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
1cc90 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
1cca0 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
1ccb0 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
1ccc0 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
1ccd0 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
1cce0 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
1ccf0 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
1cd00 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
1cd10 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
1cd20 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1cd30 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cd40 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cd50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cd60 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1cd70 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1cd80 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
1cd90 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1cda0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1cdb0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1cdc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cdd0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cde0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cdf0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1ce00 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1ce10 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
1ce20 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1ce30 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1ce40 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1ce50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ce60 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1ce70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ce80 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1ce90 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
1cea0 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
1ceb0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1cec0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1ced0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1cee0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1cef0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1cf00 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1cf10 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1cf20 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
1cf30 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1cf40 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1cf50 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1cf60 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cf70 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cf80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cf90 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1cfa0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1cfb0 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
1cfc0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1cfd0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1cfe0 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1cff0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d000 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d010 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d020 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1d030 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
1d040 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1d050 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1d060 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d070 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d080 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d090 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d0a0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1d0b0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
1d0c0 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
1d0d0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1d0e0 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1d0f0 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d100 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d110 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d120 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1d130 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1d140 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
1d150 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1d160 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1d170 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1d180 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d190 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1d1a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1d1b0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1d1c0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
1d1d0 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
1d1e0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d1f0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d200 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1d210 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d220 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d230 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d240 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d250 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
1d260 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
1d270 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d280 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1d290 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1d2a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d2b0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d2c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d2d0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1d2e0 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
1d2f0 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
1d300 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1d310 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1d320 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d330 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d340 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d350 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d360 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1d370 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
1d380 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d390 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1d3a0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1d3b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d3c0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1d3d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1d3e0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1d3f0 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
1d400 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d410 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1d420 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1d430 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d440 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1d450 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d460 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d470 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
1d480 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
1d490 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1d4a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d4b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d4c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d4d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d4e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d4f0 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
1d500 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1d510 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
1d520 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
1d530 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
1d540 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69  ptrRemain, ref i
1d550 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
1d560 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1d570 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1d580 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d590 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d5a0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d5b0 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
1d5c0 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
1d5d0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1d5e0 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
1d5f0 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
1d600 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
1d610 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
1d620 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
1d630 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
1d640 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
1d650 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
1d660 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66  int autoInc, ref
1d670 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20   int dtLen, ref 
1d680 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
1d690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d6a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1d6b0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d6c0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1d6d0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
1d6e0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1d6f0 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
1d700 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d710 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d720 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d730 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d740 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1d750 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
1d760 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
1d770 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1d780 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d790 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1d7a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1d7b0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
1d7c0 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
1d7d0 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
1d7e0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
1d7f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d800 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1d810 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1d820 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1d830 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1d840 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
1d850 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
1d860 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
1d870 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
1d880 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1d890 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
1d8a0 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
1d8b0 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
1d8c0 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
1d8d0 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
1d8e0 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
1d8f0 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
1d900 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
1d910 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
1d920 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
1d930 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
1d940 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
1d950 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
1d960 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1d970 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1d980 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d990 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d9a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d9b0 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
1d9c0 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
1d9d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d9e0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1d9f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1da00 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
1da10 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
1da20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1da30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1da40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1da50 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
1da60 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
1da70 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
1da80 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
1da90 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1daa0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1dab0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dac0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
1dad0 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
1dae0 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
1daf0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1db00 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1db10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1db20 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1db30 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1db40 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
1db50 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
1db60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1db70 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1db80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db90 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1dba0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1dbb0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
1dbc0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1dbd0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1dbe0 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
1dbf0 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
1dc00 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
1dc10 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
1dc20 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
1dc30 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
1dc40 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
1dc50 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
1dc60 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1dc70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1dc80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dc90 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1dca0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1dcb0 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
1dcc0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
1dcd0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1dce0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dcf0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1dd00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1dd10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1dd20 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
1dd30 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
1dd40 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
1dd50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1dd60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1dd70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1dd80 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1dd90 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
1dda0 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
1ddb0 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
1ddc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ddd0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1dde0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ddf0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1de00 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1de10 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62  3_open_interop(b
1de20 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1de30 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1de40 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1de50 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1de60 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1de70 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1de80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1de90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1dea0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1deb0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1dec0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1ded0 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62  open16_interop(b
1dee0 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1def0 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1df00 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1df10 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1df20 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1df30 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1df40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1df50 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1df60 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1df70 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1df80 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1df90 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
1dfa0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
1dfb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dfc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1dfd0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1dfe0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1dff0 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
1e000 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
1e010 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
1e020 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1e030 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1e040 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
1e050 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
1e060 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
1e070 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
1e080 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
1e090 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
1e0a0 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
1e0b0 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
1e0c0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1e0d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e0e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e0f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e100 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e110 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e120 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e130 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e140 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e150 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e160 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e170 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e180 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e190 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1e1a0 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
1e1b0 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
1e1c0 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
1e1d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1e1e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1e1f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e200 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1e210 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1e220 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1e230 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1e240 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1e250 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1e260 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1e270 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1e280 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1e290 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
1e2a0 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
1e2b0 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
1e2c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1e2d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1e2e0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1e2f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1e300 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1e310 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1e320 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1e330 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1e340 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1e350 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1e360 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1e370 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1e380 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
1e390 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
1e3a0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
1e3b0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
1e3c0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1e3d0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1e3e0 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
1e3f0 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
1e400 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
1e410 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
1e420 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
1e430 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1e440 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1e450 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1e460 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1e470 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1e480 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1e490 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1e4a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e4b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1e4c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1e4d0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1e4e0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1e4f0 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
1e500 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1e510 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e520 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e530 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e540 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e550 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e560 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e570 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e580 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e590 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e5a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e5b0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e5c0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e5d0 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
1e5e0 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
1e5f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e600 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e610 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e620 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e630 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e640 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e650 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e660 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e670 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e680 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e690 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e6a0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1e6b0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
1e6c0 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
1e6d0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e6e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e6f0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e700 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e710 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e720 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e730 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e740 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e750 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e760 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e770 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e780 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e790 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1e7a0 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
1e7b0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1e7c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e7d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e7e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e7f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e800 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e810 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e820 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e830 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e840 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e850 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e860 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e870 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e880 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
1e890 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
1e8a0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1e8b0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1e8c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e8d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e8e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e8f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e900 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e910 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e920 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e930 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e940 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e950 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e960 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1e970 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1e980 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
1e990 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1e9a0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1e9b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1e9c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1e9d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1e9e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1e9f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1ea00 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1ea10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1ea20 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ea30 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1ea40 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1ea50 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1ea60 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1ea70 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
1ea80 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ea90 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1eaa0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1eab0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1eac0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ead0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eae0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1eaf0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1eb00 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1eb10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1eb20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1eb30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1eb40 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1eb50 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1eb60 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
1eb70 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1eb80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1eb90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1eba0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ebb0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1ebc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1ebd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1ebe0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1ebf0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1ec00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ec10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ec20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ec30 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1ec40 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
1ec50 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1ec60 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1ec70 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1ec80 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1ec90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1eca0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1ecb0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1ecc0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1ecd0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1ece0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ecf0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1ed00 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ed10 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1ed20 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1ed30 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1ed40 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ed50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ed60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ed70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ed80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ed90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1eda0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1edb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1edc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1edd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ede0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1edf0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1ee00 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1ee10 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1ee20 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
1ee30 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1ee40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1ee50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1ee60 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1ee70 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1ee80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1ee90 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1eea0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1eeb0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1eec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1eed0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1eee0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1eef0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1ef00 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
1ef10 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1ef20 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1ef30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ef40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ef50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ef60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ef70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ef80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ef90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1efa0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1efb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1efc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1efd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1efe0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1eff0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
1f000 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
1f010 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1f020 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f030 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f040 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f050 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f060 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f070 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f080 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f090 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f0a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f0b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f0c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f0d0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f0e0 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
1f0f0 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
1f100 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1f110 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f120 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f130 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f140 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f150 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f160 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f170 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f180 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f190 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f1a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f1b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f1c0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f1d0 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
1f1e0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1f1f0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1f200 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f210 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f220 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f230 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f240 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f250 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f260 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f270 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f280 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f290 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f2a0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1f2b0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1f2c0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
1f2d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1f2e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f2f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f300 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f310 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f320 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f330 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f340 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f350 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f360 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f370 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f380 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f390 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1f3a0 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
1f3b0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
1f3c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f3d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f3e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f3f0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f400 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f410 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f420 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f430 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f440 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f450 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f460 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f470 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f480 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
1f490 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
1f4a0 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72  l, int nBytes, r
1f4b0 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ef IntPtr stmt, 
1f4c0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65  ref IntPtr ptrRe
1f4d0 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
1f4e0 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
1f4f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f500 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f510 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f520 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f530 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f540 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f550 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f560 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f570 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f580 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f590 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1f5a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1f5b0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
1f5c0 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
1f5d0 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1f5e0 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1f5f0 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1f600 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
1f610 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1f620 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f630 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f640 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f650 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f660 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f670 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f680 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f690 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f6a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f6b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f6c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1f6d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1f6e0 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
1f6f0 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
1f700 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
1f710 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1f720 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
1f730 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
1f740 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
1f750 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
1f760 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
1f770 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
1f780 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
1f790 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
1f7a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f7b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f7c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f7d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f7e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f7f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f800 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f810 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f820 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f830 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f840 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1f850 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1f860 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
1f870 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f880 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f890 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f8a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f8b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f8c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f8d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f8e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f8f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f900 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f910 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f920 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1f930 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
1f940 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1f950 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
1f960 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
1f970 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1f980 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
1f990 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
1f9a0 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
1f9b0 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
1f9c0 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
1f9d0 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
1f9e0 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
1f9f0 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
1fa00 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
1fa10 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
1fa20 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
1fa30 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
1fa40 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
1fa50 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1fa60 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
1fa70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fa80 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1fa90 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1faa0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1fab0 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
1fac0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1fad0 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74  ntext, ref int t
1fae0 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63  ype, ref int enc
1faf0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1fb00 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1fb10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1fb20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fb30 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1fb40 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
1fb50 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
1fb60 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1fb70 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
1fb80 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
1fb90 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
1fba0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1fbb0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1fbc0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fbd0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1fbe0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1fbf0 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
1fc00 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1fc10 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
1fc20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29   ref long rowid)
1fc30 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1fc40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1fc50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1fc60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1fc70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1fc80 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
1fc90 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
1fca0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1fcb0 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
1fcc0 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
1fcd0 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72  [] ColumnName, r
1fce0 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ef int sortOrder
1fcf0 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f  , ref int onErro
1fd00 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f  r, ref IntPtr Co
1fd10 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74  llation, ref int
1fd20 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
1fd30 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fd40 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1fd50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1fd60 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1fd70 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69  3_table_cursor_i
1fd80 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1fd90 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20  mt, int db, int 
1fda0 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d  tableRootPage);.
1fdb0 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
1fdc0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1fdd0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1fde0 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64  ....    // Stand
1fdf0 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c  ard API calls gl
1fe00 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73  obal across vers
1fe10 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65  ions.  There are
1fe20 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73   a few instances
1fe30 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c   of interop call
1fe40 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65  s..    // scatte
1fe50 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74  red in here, but
1fe60 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61   they are only a
1fe70 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46  ctive when PLATF
1fe80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1fe90 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64  WORK is declared
1fea0 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
1feb0 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61  tandard sqlite a
1fec0 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  pi calls....#if 
1fed0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1fee0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1fef0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ff00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ff10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ff20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ff30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ff40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ff50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ff60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ff70 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1ff80 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
1ff90 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
1ffa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ffb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ffc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ffd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1ffe0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fff0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20000 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20020 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20030 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20040 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
20050 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
20060 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
20070 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20090 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
200a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
200b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
200c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
200d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
200e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
200f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20100 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20110 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20120 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20130 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
20140 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20150 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20160 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20170 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20180 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20190 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
201a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
201b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
201c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
201d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
201e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
201f0 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
20200 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
20210 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65  (IntPtr zOptName
20220 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20230 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20240 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20250 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20260 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20270 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
20280 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
20290 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
202a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
202b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
202c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
202d0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
202e0 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
202f0 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
20300 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20310 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20320 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20330 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20340 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20350 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20360 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20370 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20380 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20390 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
203a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
203b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
203c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  ode sqlite3_enab
203d0 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
203e0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e  ..        int en
203f0 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
20400 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20410 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20420 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20430 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20440 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20450 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20460 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20470 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20480 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20490 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
204a0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
204b0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
204c0 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
204d0 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
204e0 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e     IntPtr db, in
204f0 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
20500 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20510 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20520 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20530 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20540 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20550 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20560 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20580 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20590 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
205a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
205b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
205c0 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
205d0 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  nsion(..        
205e0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
205f0 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65  ] fileName, byte
20600 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66  [] procName, ref
20610 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b   IntPtr pError);
20620 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20630 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20640 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20650 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20660 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20670 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20680 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20690 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
206a0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
206b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
206c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
206d0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
206e0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65  Code sqlite3_ove
206f0 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49  rload_function(I
20700 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
20710 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67   zName, int nArg
20720 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f  s);....#if WINDO
20730 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  WS..#if !PLATFOR
20740 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20750 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20770 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20780 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20790 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
207a0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
207b0 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
207c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
207d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
207e0 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
207f0 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
20800 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
20810 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
20820 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
20830 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f  ctory" SQLite co
20840 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
20850 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
20860 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
20870 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d  ted on Windows..
20880 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
20890 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
208a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
208b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
208c0 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28  2_set_directory(
208d0 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e  uint type, strin
208e0 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  g value);....#if
208f0 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a   !DEBUG // NOTE:
20900 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33   Should be "WIN3
20910 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42  2HEAP && !MEMDEB
20920 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  UG"..#if !PLATFO
20930 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20940 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20970 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20980 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20990 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
209a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
209b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
209c0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
209d0 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
209e0 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53  32_reset_heap" S
209f0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
20a00 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
20a10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
20a20 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
20a30 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
20a40 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
20a50 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
20a60 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
20a70 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
20a80 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
20a90 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
20aa0 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
20ab0 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
20ac0 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
20ad0 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
20ae0 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
20af0 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
20b00 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
20b10 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
20b20 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
20b30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20b40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
20b50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
20b60 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
20b70 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
20b80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20b90 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20ba0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20bb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20bc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20bd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20be0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20bf0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20c00 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20c10 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
20c20 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77  : The "sqlite3_w
20c30 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61  in32_compact_hea
20c40 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
20c50 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
20c60 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
20c70 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
20c80 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
20c90 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
20ca0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
20cb0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
20cc0 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
20cd0 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
20ce0 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
20cf0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
20d00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
20d10 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
20d20 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
20d30 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
20d40 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
20d50 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
20d60 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
20d70 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
20d80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
20d90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
20da0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
20db0 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63  te3_win32_compac
20dc0 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20  t_heap(ref uint 
20dd0 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69  largest);..#endi
20de0 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  f..#endif....#if
20df0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20e00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20e10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20e20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20e30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20e40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20e50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20e60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20e70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20e80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20e90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
20ea0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c  tPtr sqlite3_mal
20eb0 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23  loc(int n);....#
20ec0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20ed0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20ee0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20ef0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
20f00 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
20f10 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
20f20 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
20f30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20f40 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
20f50 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
20f60 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20f70 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
20f80 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e 67 20 6e 29  alloc64(ulong n)
20f90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20fa0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20fb0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20fc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20fd0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20fe0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20ff0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21000 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21010 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
21020 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
21030 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
21040 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
21050 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
21060 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
21070 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21090 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
210a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
210b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
210c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
210d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
210e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
210f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21100 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21110 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21120 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
21130 33 5f 72 65 61 6c 6c 6f 63 36 34 28 49 6e 74 50  3_realloc64(IntP
21140 74 72 20 70 2c 20 75 6c 6f 6e 67 20 6e 29 3b 0d  tr p, ulong n);.
21150 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21160 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21170 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21180 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21190 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
211a0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
211b0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
211c0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
211d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
211e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
211f0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21200 65 72 6e 20 75 6c 6f 6e 67 20 73 71 6c 69 74 65  ern ulong sqlite
21210 33 5f 6d 73 69 7a 65 28 49 6e 74 50 74 72 20 70  3_msize(IntPtr p
21220 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21230 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21240 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21250 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21260 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21270 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21280 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21290 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
212a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
212b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
212c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
212d0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
212e0 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
212f0 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
21300 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21310 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21320 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21330 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21340 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21350 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21360 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21370 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21380 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21390 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
213a0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
213b0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
213c0 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
213d0 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
213e0 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
213f0 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
21400 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
21410 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
21420 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21430 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21440 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21450 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21460 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21470 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21480 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
21490 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
214a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
214b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
214c0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
214d0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
214e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
214f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21500 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
21510 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
21520 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
21530 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
21540 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
21550 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21560 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21570 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21580 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21590 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
215a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
215b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
215c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
215d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
215e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
215f0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
21600 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
21610 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
21620 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21630 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21640 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21650 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21660 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21670 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21680 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
21690 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
216a0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
216b0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
216c0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
216d0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
216e0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
216f0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21700 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21710 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21720 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21730 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21740 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21750 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21760 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
21770 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21780 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
21790 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
217a0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
217b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
217c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
217d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
217e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
217f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21800 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21810 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
21820 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21830 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
21840 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
21850 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
21860 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21870 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21880 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21890 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
218a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
218b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
218c0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
218d0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
218e0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
218f0 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
21900 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
21910 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
21920 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
21930 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
21940 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
21950 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21960 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21970 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
21980 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
21990 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
219a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
219b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
219c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
219d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
219e0 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
219f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21a00 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21a10 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21a20 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21a30 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21a40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21a50 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21a60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21a70 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21a80 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21a90 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
21aa0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
21ab0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
21ac0 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
21ad0 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
21ae0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21af0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21b00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21b10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21b20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21b30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21b40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21b50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21b60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21b70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21b80 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21b90 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
21ba0 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
21bb0 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
21bc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21bd0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21be0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21bf0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21c00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21c10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21c20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21c30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21c40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21c50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21c60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21c70 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
21c80 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
21c90 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
21ca0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
21cb0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
21cc0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
21cd0 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
21ce0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
21cf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21d00 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21d10 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
21d20 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21d30 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
21d40 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
21d50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21d60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
21d70 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
21d80 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
21d90 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
21da0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
21db0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
21dc0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21dd0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21de0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21df0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21e00 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21e10 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21e20 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21e30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21e40 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21e50 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21e60 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21e70 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21e80 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
21e90 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
21ea0 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
21eb0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
21ec0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
21ed0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
21ee0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
21ef0 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
21f00 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
21f10 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
21f20 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
21f30 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
21f40 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
21f50 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
21f60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21f70 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21f80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21f90 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
21fa0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
21fb0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21fc0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21fd0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21fe0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21ff0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22000 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
22010 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
22020 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
22030 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22040 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
22050 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
22060 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
22070 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
22080 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
22090 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
220a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
220b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
220c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
220d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
220e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
220f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
22100 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22110 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
22120 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
22130 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
22140 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
22150 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
22160 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
22170 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
22180 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
22190 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
221a0 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
221b0 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
221c0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
221d0 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
221e0 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
221f0 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
22200 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
22210 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
22220 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22230 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22240 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22250 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
22260 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
22270 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
22280 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22290 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
222a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
222b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
222c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
222d0 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
222e0 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
222f0 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
22300 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
22310 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22320 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22330 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22340 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22350 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22360 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22370 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22380 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22390 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
223a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
223b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
223c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
223d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
223e0 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
223f0 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
22400 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22410 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22420 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22430 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22440 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22450 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22460 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22470 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22480 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22490 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
224a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
224b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
224c0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
224d0 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
224e0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
224f0 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
22500 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
22510 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
22520 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22530 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22540 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22550 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22560 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22570 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22580 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22590 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
225a0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
225b0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
225c0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
225d0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
225e0 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
225f0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
22600 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22610 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22620 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22630 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22640 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22650 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22660 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22670 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22680 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22690 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
226a0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
226b0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
226c0 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
226d0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
226e0 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
226f0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22700 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22710 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22720 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22730 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22740 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22750 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22760 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22770 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22780 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22790 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
227a0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
227b0 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
227c0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
227d0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
227e0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
227f0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22800 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
22810 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
22820 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
22830 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
22840 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22850 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22860 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22870 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
22880 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
22890 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
228a0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
228b0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
228c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
228d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
228e0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
228f0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22900 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22910 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22920 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22930 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22940 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22950 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
22960 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
22970 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
22980 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
22990 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
229a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
229b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
229c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
229d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
229e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
229f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
22a00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22a10 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
22a20 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
22a30 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
22a40 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
22a50 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
22a60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22a70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22a80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22a90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22aa0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22ab0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22ac0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22ad0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22ae0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22af0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22b00 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
22b10 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
22b20 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
22b30 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
22b40 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22b50 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22b60 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22b70 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22b80 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22b90 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22ba0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
22bb0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22bc0 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
22bd0 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
22be0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
22bf0 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
22c00 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22c10 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
22c20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22c30 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
22c40 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
22c50 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22c60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
22c70 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
22c80 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
22c90 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
22ca0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
22cb0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
22cc0 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
22cd0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
22ce0 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
22cf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22d00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22d10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22d20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22d30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22d40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22d50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22d70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22d80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22d90 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
22da0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
22db0 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
22dc0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
22dd0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22de0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22df0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22e00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22e10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22e20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22e30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22e40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22e50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22e60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22e70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22e80 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
22e90 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
22ea0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
22eb0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
22ec0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22ed0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
22ee0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22ef0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
22f00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
22f10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
22f20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
22f30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22f40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22f50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22f60 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
22f70 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
22f80 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
22f90 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
22fa0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22fb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22fc0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22fd0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22fe0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22ff0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23000 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23010 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23020 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23030 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23040 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23050 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
23060 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
23070 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
23080 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
23090 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
230a0 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
230b0 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
230c0 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
230d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
230e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
230f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23100 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23110 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23120 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23130 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23140 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23150 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23160 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23170 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23180 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
23190 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
231a0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
231b0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
231c0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
231d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
231e0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
231f0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23200 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23210 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23220 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23230 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23240 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23250 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23260 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
23270 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
23280 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
23290 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
232a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
232b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
232c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
232d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
232e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
232f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23300 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23310 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23320 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23330 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
23340 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
23350 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
23360 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23370 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23380 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23390 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
233a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
233b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
233c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
233d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
233e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
233f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23400 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23410 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
23420 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
23430 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
23440 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23450 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23460 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23470 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23480 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23490 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
234a0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
234b0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
234c0 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
234d0 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
234e0 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
234f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23500 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23510 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23520 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23530 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23540 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23550 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23560 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23570 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23580 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23590 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
235a0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
235b0 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
235c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
235d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
235e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
235f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23600 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23610 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23620 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
23630 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23640 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
23650 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
23660 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
23670 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
23680 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23690 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
236a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
236b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
236c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
236d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
236e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
236f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23700 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23710 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23720 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
23730 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
23740 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
23750 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
23760 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
23770 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
23780 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23790 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
237a0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
237b0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
237c0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
237d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
237e0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
237f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
23800 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
23810 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
23820 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
23830 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
23840 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
23850 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
23860 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23870 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23880 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23890 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
238a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
238b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
238c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
238d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
238e0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
238f0 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
23900 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
23910 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
23920 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23930 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23940 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23950 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
23960 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
23970 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
23980 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
23990 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
239a0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
239b0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
239c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
239d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
239e0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
239f0 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
23a00 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
23a10 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
23a20 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23a30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23a40 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23a50 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23a60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23a70 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23a80 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23a90 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23aa0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23ab0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23ac0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23ad0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
23ae0 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
23af0 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
23b00 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
23b10 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
23b20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23b30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23b40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23b50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23b70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23b80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23b90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23ba0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23bb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23bc0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23bd0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
23be0 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
23bf0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
23c00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
23c10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23c20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
23c30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
23c40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
23c50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
23c60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
23c70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
23c80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
23c90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
23ca0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
23cb0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
23cc0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
23cd0 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
23ce0 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
23cf0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23d00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23d10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23d20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23d30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23d40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23d50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23d60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23d70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23d80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23d90 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23da0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
23db0 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
23dc0 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
23dd0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
23de0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23df0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23e00 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23e10 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23e20 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23e30 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23e40 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23e50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23e60 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23e70 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23e80 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
23e90 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
23ea0 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
23eb0 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
23ec0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23ed0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23ee0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23ef0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23f00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23f10 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23f20 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23f30 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23f40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23f50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23f60 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23f70 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
23f80 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
23f90 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
23fa0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
23fb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23fc0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23fd0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23fe0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23ff0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24000 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24010 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
24020 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24030 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
24040 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
24050 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
24060 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
24070 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
24080 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
24090 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
240a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
240b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
240c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
240d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
240e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
240f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
24100 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
24110 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
24120 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
24130 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
24140 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
24150 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24160 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24170 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24180 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24190 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
241a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
241b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
241c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
241d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
241e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
241f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24200 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
24210 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
24220 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
24230 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
24240 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
24250 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
24260 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24270 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24280 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24290 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
242a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
242b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
242c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
242d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
242e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
242f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24300 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
24310 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
24320 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
24330 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
24340 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
24350 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24360 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24370 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24380 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24390 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
243a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
243b0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
243c0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
243d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
243e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
243f0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
24400 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
24410 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
24420 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24430 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24440 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
24450 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
24460 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
24470 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
24480 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
24490 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
244a0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
244b0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
244c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
244d0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
244e0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
244f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
24500 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
24510 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
24520 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24530 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24540 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
24550 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
24560 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24570 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24580 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
24590 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
245a0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
245b0 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
245c0 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
245d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
245e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
245f0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24600 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24610 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24620 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24630 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
24640 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
24650 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24660 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24670 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
24680 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
24690 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
246a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
246b0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
246c0 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
246d0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
246e0 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
246f0 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
24700 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
24710 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
24720 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
24730 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
24740 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24750 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24770 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24780 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
247a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
247b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
247c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
247d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
247e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
247f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
24800 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
24810 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
24820 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
24830 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24840 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24850 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24860 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24870 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24880 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24890 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
248a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
248b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
248c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
248d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
248e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
248f0 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
24900 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
24910 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
24920 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
24930 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
24940 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
24950 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24960 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24970 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24980 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24990 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
249a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
249b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
249c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
249d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
249e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
249f0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
24a00 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
24a10 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24a20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24a30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24a40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24a50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24a60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24a70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24a80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24a90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24aa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24ab0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24ac0 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
24ad0 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
24ae0 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
24af0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24b00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24b10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24b20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24b30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24b40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24b50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24b60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24b70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24b80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24b90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24ba0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
24bb0 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
24bc0 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
24bd0 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
24be0 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
24bf0 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
24c00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24c10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24c20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24c30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24c40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24c50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24c60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24c70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24c80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24c90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24ca0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24cb0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
24cc0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
24cd0 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
24ce0 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
24cf0 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
24d00 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
24d10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24d20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24d30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24d40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24d50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24d60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24d70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24d80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24d90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24da0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24db0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24dc0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
24dd0 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
24de0 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
24df0 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
24e00 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
24e10 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24e20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24e30 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24e40 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24e50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24e60 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24e70 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24e80 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24e90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24ea0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24eb0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24ec0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
24ed0 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
24ee0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
24ef0 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
24f00 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
24f10 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
24f20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24f30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24f40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24f50 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
24f60 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24f70 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24f80 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24f90 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24fa0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
24fb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24fc0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
24fd0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
24fe0 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
24ff0 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
25000 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
25010 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
25020 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
25030 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
25040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25050 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25060 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25070 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25080 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25090 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
250a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
250b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
250c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
250d0 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
250e0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
250f0 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73 6b  eTraceFlags mask
25100 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
25110 6c 62 61 63 6b 32 20 66 75 6e 63 2c 20 49 6e 74  lback2 func, Int
25120 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
25130 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
25140 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
25150 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
25160 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
25170 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
25180 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
25190 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
251a0 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
251b0 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
251c0 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
251d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
251e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
251f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
25200 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
25210 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
25220 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25230 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25240 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25250 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25260 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
25270 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
25280 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
25290 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
252a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
252b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
252c0 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
252d0 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
252e0 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
252f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
25300 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
25310 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25320 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
25330 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
25340 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
25350 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25360 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25370 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25380 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25390 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
253a0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
253b0 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
253c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
253d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
253e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
253f0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
25400 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
25410 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
25420 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
25430 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25440 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25450 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25460 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
25470 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
25480 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
25490 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
254a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
254b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
254c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
254d0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
254e0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
254f0 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
25500 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25510 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25520 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25530 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
25540 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
25550 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
25560 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
25570 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
25580 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
25590 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
255a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
255b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
255c0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
255d0 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", Ca
255e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
255f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25600 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25610 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25620 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
25630 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
25640 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
25650 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25660 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25670 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25680 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
25690 5f 63 6f 6e 66 69 67 5f 63 68 61 72 70 74 72 28  _config_charptr(
256a0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
256b0 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d  eConfigDbOpsEnum
256c0 20 6f 70 2c 20 49 6e 74 50 74 72 20 63 68 61 72   op, IntPtr char
256d0 50 74 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Ptr);....#if !PL
256e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
256f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
25700 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25710 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
25720 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
25730 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
25740 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25750 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25760 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25770 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25780 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
25790 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
257a0 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
257b0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
257c0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
257d0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
257e0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f  lite3_db_config_
257f0 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74  int_refint(IntPt
25800 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66  r db, SQLiteConf
25810 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  igDbOpsEnum op, 
25820 69 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69  int value, ref i
25830 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23  nt result);....#
25840 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25850 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25860 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25870 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
25880 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
25890 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
258a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
258b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
258c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
258d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
258e0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
258f0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
25900 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
25910 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25920 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25930 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
25940 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
25950 6f 6e 66 69 67 5f 69 6e 74 70 74 72 5f 74 77 6f  onfig_intptr_two
25960 5f 69 6e 74 73 28 49 6e 74 50 74 72 20 64 62 2c  _ints(IntPtr db,
25970 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
25980 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74  psEnum op, IntPt
25990 72 20 70 74 72 2c 20 69 6e 74 20 69 6e 74 30 2c  r ptr, int int0,
259a0 20 69 6e 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23   int int1);....#
259b0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
259c0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
259d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
259e0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
259f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25a00 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25a10 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25a20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25a30 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25a40 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25a50 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25a60 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25a70 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74 75  sqlite3_db_statu
25a80 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  s(IntPtr db, SQL
25a90 69 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d  iteStatusOpsEnum
25aa0 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 63 75 72   op, ref int cur
25ab0 72 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68 69  rent, ref int hi
25ac0 67 68 77 61 74 65 72 2c 20 69 6e 74 20 72 65 73  ghwater, int res
25ad0 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23 69 66 20  etFlag);....#if 
25ae0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25af0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25b00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25b10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25b20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25b30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25b40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25b50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25b60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25b70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25b80 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
25b90 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
25ba0 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
25bb0 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
25bc0 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
25bd0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
25be0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25bf0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25c00 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25c10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25c20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c30 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25c40 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25c50 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25c60 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25c70 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25c80 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25c90 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
25ca0 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
25cb0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
25cc0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25cd0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25ce0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25cf0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25d00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
25d10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25d20 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
25d30 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
25d40 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
25d50 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25d60 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25d70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25d80 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
25d90 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
25da0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
25db0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25dc0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25dd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25de0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25df0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25e00 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25e10 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25e20 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25e30 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25e40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25e50 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
25e60 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
25e70 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
25e80 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
25e90 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25ea0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25eb0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25ec0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25ed0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
25ee0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
25ef0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
25f00 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
25f10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
25f20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
25f30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25f40 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
25f50 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  _db_readonly(Int
25f60 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
25f70 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
25f80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25f90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25fa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25fb0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
25fc0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
25fd0 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
25fe0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25ff0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26000 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26010 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26020 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
26030 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
26040 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
26050 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26060 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26070 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
26080 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
26090 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
260a0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
260b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
260c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
260d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
260e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
260f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26100 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26110 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26120 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26130 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26140 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26150 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26160 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
26170 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
26180 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
26190 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
261a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
261b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
261c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
261d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
261e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
261f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26200 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
26210 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26220 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
26230 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26240 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
26250 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
26260 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
26270 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
26280 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
26290 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
262a0 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
262b0 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
262c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
262d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
262e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
262f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26300 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26310 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26320 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26330 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26340 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26350 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26360 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
26370 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
26380 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
26390 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
263a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
263b0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
263c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
263d0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
263e0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
263f0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
26400 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
26410 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26420 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
26430 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
26440 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
26450 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
26460 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
26470 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26480 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26490 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
264a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
264b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
264c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
264d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
264e0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
264f0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
26500 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
26510 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
26520 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
26530 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
26540 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
26550 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
26560 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
26570 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26580 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26590 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
265a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
265b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
265c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
265d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
265e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
265f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26600 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26610 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26620 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26630 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
26640 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
26650 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26660 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26670 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26680 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26690 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
266a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
266b0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
266c0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
266d0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
266e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
266f0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26700 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26710 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
26720 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
26730 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26740 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26750 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26770 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26780 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26790 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
267a0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
267b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
267c0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
267d0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
267e0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
267f0 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
26800 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
26810 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
26820 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
26830 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
26840 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
26850 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
26860 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
26870 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
26880 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
26890 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
268a0 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
268b0 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
268c0 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
268d0 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
268e0 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
268f0 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
26900 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
26910 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26920 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26930 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26940 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26950 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26960 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26970 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26980 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26990 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
269a0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
269b0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
269c0 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
269d0 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
269e0 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
269f0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26a00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26a10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26a20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26a30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26a40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26a50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26a60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26a70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26a80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26a90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26aa0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
26ab0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
26ac0 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
26ad0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
26ae0 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
26af0 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
26b00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26b10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26b20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26b30 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26b40 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26b50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26b60 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26b70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26b80 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26b90 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26ba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26bb0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
26bc0 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
26bd0 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
26be0 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
26bf0 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
26c00 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
26c10 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26c20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26c30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
26c40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
26c50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26c60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
26c70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26c80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
26c90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
26ca0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26cb0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
26cc0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
26cd0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
26ce0 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
26cf0 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
26d00 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
26d10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
26d20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
26d30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26d40 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
26d50 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26d60 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26d70 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26d80 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26d90 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26da0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26db0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
26dc0 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
26dd0 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
26de0 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
26df0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26e00 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
26e10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26e20 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
26e30 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
26e40 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26e50 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
26e60 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26e70 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
26e80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26e90 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
26ea0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
26eb0 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
26ec0 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
26ed0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26ee0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
26ef0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26f00 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
26f10 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
26f20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26f30 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
26f40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26f50 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
26f60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26f70 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
26f80 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
26f90 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e  e3_blob_close(In
26fa0 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
26fb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26fc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26fd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26fe0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26ff0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27000 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27010 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27020 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27030 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27040 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27050 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27060 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  int sqlite3_blob
27070 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c  _bytes(IntPtr bl
27080 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
27090 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
270a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
270b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
270c0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
270d0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
270e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
270f0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27100 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27110 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
27120 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
27130 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
27140 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
27150 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74  _blob_open(IntPt
27160 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
27170 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
27180 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
27190 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c  ame, long rowId,
271a0 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20   int flags, ref 
271b0 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b  IntPtr ptrBlob);
271c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
271d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
271e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
271f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27200 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27210 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27220 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27230 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27240 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27250 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27260 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27270 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
27280 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
27290 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c  b_read(IntPtr bl
272a0 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
272b0 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
272c0 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
272d0 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
272e0 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
272f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27300 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27310 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27320 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27330 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27340 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27350 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
27360 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27370 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
27380 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
27390 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
273a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
273b0 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
273c0 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f  eopen(IntPtr blo
273d0 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  b, long rowId);.
273e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
273f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27400 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27410 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27420 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27430 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27440 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
27450 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
27460 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
27470 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
27480 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27490 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
274a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
274b0 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c  _write(IntPtr bl
274c0 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
274d0 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
274e0 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
274f0 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
27500 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
27510 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
27520 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
27530 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27540 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
27550 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
27560 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27570 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
27580 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27590 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
275a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
275b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
275c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
275d0 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
275e0 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
275f0 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
27600 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27610 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27620 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27630 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27640 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27650 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27660 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
27670 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
27680 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
27690 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
276a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
276b0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
276c0 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
276d0 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
276e0 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
276f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
27700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27740 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27750 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61  // SQLite API ca
27760 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  lls that are pro
27770 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b  vided by "well-k
27780 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73  nown" extensions
27790 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61   that may be sta
277a0 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20  tically..    // 
277b0 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20  linked with the 
277c0 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69  SQLite core nati
277d0 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65  ve library curre
277e0 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ntly in use...  
277f0 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73    #region extens
27800 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63  ion sqlite api c
27810 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
27820 6e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  n virtual table.
27830 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
27840 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
27850 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
27860 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
27870 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27880 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
27890 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
278a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
278b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
278c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
278d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
278e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
278f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
27900 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
27910 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
27920 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
27930 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
27940 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
27950 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
27960 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
27970 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
27980 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
27990 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
279a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
279b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
279c0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
279d0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
279e0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
279f0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
27a00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27a10 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
27a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
27a30 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
27a40 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
27a50 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
27a60 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
27a70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
27a80 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ad0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
27ae0 20 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73 69   session extensi
27af0 6f 6e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  on..#if INTEROP_
27b00 53 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f  SESSION_EXTENSIO
27b10 4e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  N..#if !PLATFORM
27b20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27b30 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
27b40 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
27b50 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
27b60 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
27b70 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27b80 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 53   delegate int xS
27b90 65 73 73 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74  essionFilter(Int
27ba0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74  Ptr context, Int
27bb0 50 74 72 20 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a  Ptr pTblName);..
27bc0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
27bd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27be0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
27bf0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
27c00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27c10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
27c20 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
27c30 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 43  delegate SQLiteC
27c40 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
27c50 52 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e 43  Result xSessionC
27c60 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 63  onflict(IntPtr c
27c70 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43 68  ontext, SQLiteCh
27c80 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54  angeSetConflictT
27c90 79 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74 72  ype type, IntPtr
27ca0 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23   iterator);....#
27cb0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27cc0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27cd0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
27ce0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
27cf0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27d00 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
27d10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
27d20 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
27d30 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 49 6e  rCode xSessionIn
27d40 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  put(IntPtr conte
27d50 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61  xt, IntPtr pData
27d60 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 29  , ref int nData)
27d70 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
27d80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27d90 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
27da0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
27db0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
27dc0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27dd0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
27de0 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  al delegate SQLi
27df0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73  teErrorCode xSes
27e00 73 69 6f 6e 4f 75 74 70 75 74 28 49 6e 74 50 74  sionOutput(IntPt
27e10 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
27e20 72 20 70 44 61 74 61 2c 20 69 6e 74 20 6e 44 61  r pData, int nDa
27e30 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ta);....    ////
27e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
27e90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27ea0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27eb0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27ec0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27ed0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27ee0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27ef0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27f00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27f10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27f20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27f30 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27f40 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27f50 74 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61 74  te3session_creat
27f60 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  e(IntPtr db, byt
27f70 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 72 65 66 20  e[] dbName, ref 
27f80 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
27f90 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27fa0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27fb0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
27fc0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27fd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27fe0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27ff0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28000 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28010 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28020 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28030 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28040 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
28050 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28  3session_delete(
28060 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
28070 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28080 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28090 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
280a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
280b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
280c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
280d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
280e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
280f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28100 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28110 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28120 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
28130 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 49  session_enable(I
28140 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69  ntPtr session, i
28150 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
28160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28180 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28190 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
281a0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
281b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
281c0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
281d0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
281e0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
281f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28200 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28210 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69  int sqlite3sessi
28220 6f 6e 5f 69 6e 64 69 72 65 63 74 28 49 6e 74 50  on_indirect(IntP
28230 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20  tr session, int 
28240 69 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69  indirect);....#i
28250 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
28260 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28270 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
28280 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
28290 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
282a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
282b0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
282c0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
282d0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
282e0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
282f0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
28300 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
28310 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 61 74  qlite3session_at
28320 74 61 63 68 28 49 6e 74 50 74 72 20 73 65 73 73  tach(IntPtr sess
28330 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ion, byte[] tblN
28340 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
28350 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28360 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28370 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28380 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28390 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
283a0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
283b0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
283c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
283d0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
283e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
283f0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
28400 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 74 61  qlite3session_ta
28410 62 6c 65 5f 66 69 6c 74 65 72 28 49 6e 74 50 74  ble_filter(IntPt
28420 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
28430 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65  ionFilter xFilte
28440 72 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  r, IntPtr contex
28450 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
28460 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28470 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
28480 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28490 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
284a0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
284b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
284c0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
284d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
284e0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
284f0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
28500 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
28510 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
28520 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74  ession_changeset
28530 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
28540 20 72 65 66 20 69 6e 74 20 6e 43 68 61 6e 67 65   ref int nChange
28550 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  Set, ref IntPtr 
28560 70 43 68 61 6e 67 65 53 65 74 29 3b 0a 0d 0a 23  pChangeSet);...#
28570 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28580 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28590 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
285a0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
285b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
285c0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
285d0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
285e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
285f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28600 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28610 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28620 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28630 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64  sqlite3session_d
28640 69 66 66 28 49 6e 74 50 74 72 20 73 65 73 73 69  iff(IntPtr sessi
28650 6f 6e 2c 20 62 79 74 65 5b 5d 20 66 72 6f 6d 44  on, byte[] fromD
28660 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
28670 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  lName, ref IntPt
28680 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69  r errMsg);....#i
28690 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
286a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
286b0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
286c0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
286d0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
286e0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
286f0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
28700 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28710 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
28720 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
28730 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
28740 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
28750 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61  qlite3session_pa
28760 74 63 68 73 65 74 28 49 6e 74 50 74 72 20 73 65  tchset(IntPtr se
28770 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e  ssion, ref int n
28780 50 61 74 63 68 53 65 74 2c 20 72 65 66 20 49 6e  PatchSet, ref In
28790 74 50 74 72 20 70 50 61 74 63 68 53 65 74 29 3b  tPtr pPatchSet);
287a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
287b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
287c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
287d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
287e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
287f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28800 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28810 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28820 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28830 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28840 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28850 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
28860 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28  session_isempty(
28870 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
28880 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28890 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
288a0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
288b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
288c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
288d0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
288e0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
288f0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28900 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28910 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28920 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28930 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28940 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28950 67 65 73 65 74 5f 73 74 61 72 74 28 72 65 66 20  geset_start(ref 
28960 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
28970 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
28980 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53   IntPtr pChangeS
28990 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
289a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
289b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
289c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
289d0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
289e0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
289f0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28a00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28a10 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28a20 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28a30 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28a40 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28a50 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28a60 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 5f  changeset_start_
28a70 76 32 28 72 65 66 20 49 6e 74 50 74 72 20 69 74  v2(ref IntPtr it
28a80 65 72 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61  erator, int nCha
28a90 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70  ngeSet, IntPtr p
28aa0 43 68 61 6e 67 65 53 65 74 2c 20 53 51 4c 69 74  ChangeSet, SQLit
28ab0 65 43 68 61 6e 67 65 53 65 74 53 74 61 72 74 46  eChangeSetStartF
28ac0 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a  lags flags);....
28ad0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28ae0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28af0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28b00 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28b10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
28b20 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28b30 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
28b40 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28b50 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
28b60 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
28b70 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28b80 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28b90 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
28ba0 74 5f 6e 65 78 74 28 49 6e 74 50 74 72 20 69 74  t_next(IntPtr it
28bb0 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20  erator);....#if 
28bc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28bd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28be0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28bf0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28c00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28c10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28c20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
28c30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28c40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28c50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28c60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28c70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28c80 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6f 70  ite3changeset_op
28c90 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
28ca0 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 54 62  , ref IntPtr pTb
28cb0 6c 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 6e  lName, ref int n
28cc0 43 6f 6c 75 6d 6e 73 2c 20 72 65 66 20 53 51 4c  Columns, ref SQL
28cd0 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74  iteAuthorizerAct
28ce0 69 6f 6e 43 6f 64 65 20 6f 70 2c 20 72 65 66 20  ionCode op, ref 
28cf0 69 6e 74 20 62 49 6e 64 69 72 65 63 74 29 3b 0d  int bIndirect);.
28d00 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28d10 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28d20 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
28d30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
28d40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
28d50 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28d60 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28d70 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28d80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
28d90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28da0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28db0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28dc0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
28dd0 65 73 65 74 5f 70 6b 28 49 6e 74 50 74 72 20 69  eset_pk(IntPtr i
28de0 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74  terator, ref Int
28df0 50 74 72 20 70 50 72 69 6d 61 72 79 4b 65 79 73  Ptr pPrimaryKeys
28e00 2c 20 72 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d  , ref int nColum
28e10 6e 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ns);....#if !PLA
28e20 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28e30 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28e40 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28e50 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28e60 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28e70 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28e80 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28e90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28ea0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
28eb0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28ec0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
28ed0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28ee0 63 68 61 6e 67 65 73 65 74 5f 6f 6c 64 28 49 6e  changeset_old(In
28ef0 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69  tPtr iterator, i
28f00 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20  nt columnIndex, 
28f10 72 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75  ref IntPtr pValu
28f20 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
28f30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28f40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
28f50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
28f60 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
28f70 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
28f80 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
28f90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
28fa0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28fb0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
28fc0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
28fd0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
28fe0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
28ff0 68 61 6e 67 65 73 65 74 5f 6e 65 77 28 49 6e 74  hangeset_new(Int
29000 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69 6e  Ptr iterator, in
29010 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 2c 20 72  t columnIndex, r
29020 65 66 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65  ef IntPtr pValue
29030 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
29040 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29050 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
29060 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
29070 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
29080 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
29090 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
290a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
290b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
290c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
290d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
290e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
290f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
29100 61 6e 67 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74  angeset_conflict
29110 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
29120 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  , int columnInde
29130 78 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 56  x, ref IntPtr pV
29140 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
29150 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
29160 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
29170 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
29180 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
29190 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
291a0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
291b0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
291c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
291d0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
291e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
291f0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
29200 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
29210 65 33 63 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63  e3changeset_fk_c
29220 6f 6e 66 6c 69 63 74 73 28 49 6e 74 50 74 72 20  onflicts(IntPtr 
29230 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20 69 6e  iterator, ref in
29240 74 20 63 6f 6e 66 6c 69 63 74 73 29 3b 0d 0a 0d  t conflicts);...
29250 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
29260 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29270 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29280 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
29290 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
292a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
292b0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
292c0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
292d0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
292e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
292f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29300 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29310 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
29320 65 74 5f 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50  et_finalize(IntP
29330 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d  tr iterator);...
29340 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
29350 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29360 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29370 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
29380 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
29390 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
293a0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
293b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
293c0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
293d0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
293e0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
293f0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29400 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
29410 65 74 5f 69 6e 76 65 72 74 28 69 6e 74 20 6e 49  et_invert(int nI
29420 6e 2c 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 72  n, IntPtr pIn, r
29430 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72 65 66  ef int nOut, ref
29440 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a   IntPtr pOut);..
29450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
29460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29470 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29480 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
29490 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
294a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
294b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
294c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
294d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
294e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
294f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
29500 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
29510 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
29520 73 65 74 5f 63 6f 6e 63 61 74 28 69 6e 74 20 6e  set_concat(int n
29530 41 2c 20 49 6e 74 50 74 72 20 70 41 2c 20 69 6e  A, IntPtr pA, in
29540 74 20 6e 42 2c 20 49 6e 74 50 74 72 20 70 42 2c  t nB, IntPtr pB,
29550 20 72 65 66 20 69 6e 74 20 6e 4f 75 74 2c 20 72   ref int nOut, r
29560 65 66 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  ef IntPtr pOut);
29570 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
29580 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29590 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
295a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
295b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
295c0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
295d0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
295e0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
295f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29600 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
29610 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29620 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29630 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
29640 67 65 67 72 6f 75 70 5f 6e 65 77 28 72 65 66 20  gegroup_new(ref 
29650 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
29660 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  up);....#if !PLA
29670 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29680 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
29690 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
296a0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
296b0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
296c0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
296d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
296e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
296f0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
29700 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29710 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
29720 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
29730 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 28  changegroup_add(
29740 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f  IntPtr changeGro
29750 75 70 2c 20 69 6e 74 20 6e 44 61 74 61 2c 20 49  up, int nData, I
29760 6e 74 50 74 72 20 70 44 61 74 61 29 3b 0d 0a 0d  ntPtr pData);...
29770 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
29780 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
29790 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
297a0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
297b0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
297c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
297d0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
297e0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
297f0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
29800 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
29810 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29820 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
29830 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  e sqlite3changeg
29840 72 6f 75 70 5f 6f 75 74 70 75 74 28 49 6e 74 50  roup_output(IntP
29850 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
29860 72 65 66 20 69 6e 74 20 6e 44 61 74 61 2c 20 72  ref int nData, r
29870 65 66 20 49 6e 74 50 74 72 20 70 44 61 74 61 29  ef IntPtr pData)
29880 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
29890 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
298a0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
298b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
298c0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
298d0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
298e0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
298f0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
29900 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29910 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
29920 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29930 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
29940 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 64 65  e3changegroup_de
29950 6c 65 74 65 28 49 6e 74 50 74 72 20 63 68 61 6e  lete(IntPtr chan
29960 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23 69 66  geGroup);....#if
29970 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29980 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29990 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
299a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
299b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
299c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
299d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
299e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
299f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29a00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29a10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29a20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29a30 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61  lite3changeset_a
29a40 70 70 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20  pply(IntPtr db, 
29a50 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20  int nChangeSet, 
29a60 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65  IntPtr pChangeSe
29a70 74 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65  t, xSessionFilte
29a80 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65 73 73  r xFilter, xSess
29a90 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43 6f 6e  ionConflict xCon
29aa0 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20 63 6f  flict, IntPtr co
29ab0 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  ntext);....#if !
29ac0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29ad0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
29ae0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29af0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
29b00 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
29b10 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
29b20 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
29b30 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29b40 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
29b50 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29b60 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
29b70 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
29b80 74 65 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70  te3changeset_app
29b90 6c 79 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 64  ly_strm(IntPtr d
29ba0 62 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  b, xSessionInput
29bb0 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20   xInput, IntPtr 
29bc0 70 49 6e 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c  pIn, xSessionFil
29bd0 74 65 72 20 78 46 69 6c 74 65 72 2c 20 78 53 65  ter xFilter, xSe
29be0 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78 43  ssionConflict xC
29bf0 6f 6e 66 6c 69 63 74 2c 20 49 6e 74 50 74 72 20  onflict, IntPtr 
29c00 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66  context);....#if
29c10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29c20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29c30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29c40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
29c50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
29c60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29c70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29c80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29c90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29ca0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29cb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29cc0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29cd0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63  lite3changeset_c
29ce0 6f 6e 63 61 74 5f 73 74 72 6d 28 78 53 65 73 73  oncat_strm(xSess
29cf0 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 41  ionInput xInputA
29d00 2c 20 49 6e 74 50 74 72 20 70 49 6e 41 2c 20 78  , IntPtr pInA, x
29d10 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
29d20 70 75 74 42 2c 20 49 6e 74 50 74 72 20 70 49 6e  putB, IntPtr pIn
29d30 42 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  B, xSessionOutpu
29d40 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
29d50 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
29d60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
29d70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29d80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29d90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
29da0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
29db0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
29dc0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
29dd0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29de0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
29df0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
29e00 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
29e10 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
29e20 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 69 6e  ite3changeset_in
29e30 76 65 72 74 5f 73 74 72 6d 28 78 53 65 73 73 69  vert_strm(xSessi
29e40 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
29e50 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73  IntPtr pIn, xSes
29e60 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70  sionOutput xOutp
29e70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29  ut, IntPtr pOut)
29e80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
29e90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29ea0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
29eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
29ec0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29ed0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
29ee0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
29ef0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
29f00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29f10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
29f20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29f30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
29f40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
29f50 6e 67 65 73 65 74 5f 73 74 61 72 74 5f 73 74 72  ngeset_start_str
29f60 6d 28 72 65 66 20 49 6e 74 50 74 72 20 69 74 65  m(ref IntPtr ite
29f70 72 61 74 6f 72 2c 20 78 53 65 73 73 69 6f 6e 49  rator, xSessionI
29f80 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74  nput xInput, Int
29f90 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66  Ptr pIn);....#if
29fa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29fb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29fc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29fd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
29fe0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
29ff0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a000 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
2a010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2a020 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
2a030 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
2a040 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a050 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a060 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73  lite3changeset_s
2a070 74 61 72 74 5f 76 32 5f 73 74 72 6d 28 72 65 66  tart_v2_strm(ref
2a080 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
2a090 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  , xSessionInput 
2a0a0 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
2a0b0 49 6e 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  In, SQLiteChange
2a0c0 53 65 74 53 74 61 72 74 46 6c 61 67 73 20 66 6c  SetStartFlags fl
2a0d0 61 67 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ags);....#if !PL
2a0e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a0f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
2a100 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a110 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
2a120 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
2a130 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2a140 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
2a150 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a160 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
2a170 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2a180 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
2a190 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
2a1a0 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73  3session_changes
2a1b0 65 74 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73  et_strm(IntPtr s
2a1c0 65 73 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e  ession, xSession
2a1d0 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20  Output xOutput, 
2a1e0 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d  IntPtr pOut);...
2a1f0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2a200 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a210 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
2a220 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
2a230 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
2a240 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a250 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
2a260 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
2a270 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
2a280 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
2a290 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2a2a0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2a2b0 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e  e sqlite3session
2a2c0 5f 70 61 74 63 68 73 65 74 5f 73 74 72 6d 28 49  _patchset_strm(I
2a2d0 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78  ntPtr session, x
2a2e0 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
2a2f0 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
2a300 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
2a310 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a320 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
2a330 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2a340 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
2a350 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
2a360 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a370 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
2a380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a390 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
2a3a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
2a3b0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
2a3c0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
2a3d0 63 68 61 6e 67 65 67 72 6f 75 70 5f 61 64 64 5f  changegroup_add_
2a3e0 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61 6e  strm(IntPtr chan
2a3f0 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69 6f  geGroup, xSessio
2a400 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
2a410 6e 74 50 74 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23  ntPtr pIn);....#
2a420 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a430 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a440 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
2a450 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
2a460 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
2a470 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2a480 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
2a490 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2a4a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
2a4b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
2a4c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2a4d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a4e0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
2a4f0 75 70 5f 6f 75 74 70 75 74 5f 73 74 72 6d 28 49  up_output_strm(I
2a500 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75  ntPtr changeGrou
2a510 70 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  p, xSessionOutpu
2a520 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
2a530 72 20 70 4f 75 74 29 3b 0d 0a 23 65 6e 64 69 66  r pOut);..#endif
2a540 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2a550 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
2a560 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
2a5c0 6f 6e 20 73 71 6c 69 74 65 20 69 6e 74 65 72 6f  on sqlite intero
2a5d0 70 20 61 70 69 20 63 61 6c 6c 73 20 28 2e 4e 45  p api calls (.NE
2a5e0 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2a5f0 6f 72 6b 20 6f 6e 6c 79 29 0d 0a 23 69 66 20 50  ork only)..#if P
2a600 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a610 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
2a620 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
2a630 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
2a640 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
2a650 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
2a660 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
2a670 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
2a680 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49 6e 74  owid_interop(Int
2a690 50 74 72 20 64 62 2c 20 72 65 66 20 6c 6f 6e 67  Ptr db, ref long
2a6a0 20 72 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowId);....    
2a6b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2a6c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2a6d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2a6e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
2a6f0 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 5f 69 6e 74  _memory_used_int
2a700 65 72 6f 70 28 72 65 66 20 6c 6f 6e 67 20 62 79  erop(ref long by
2a710 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  tes);....    [Dl
2a720 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2a730 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2a740 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2a750 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65   void sqlite3_me
2a760 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 5f 69  mory_highwater_i
2a770 6e 74 65 72 6f 70 28 69 6e 74 20 72 65 73 65 74  nterop(int reset
2a780 46 6c 61 67 2c 20 72 65 66 20 6c 6f 6e 67 20 62  Flag, ref long b
2a790 79 74 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  ytes);....    [D
2a7a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
2a7b0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
2a7c0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
2a7d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2a7e0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  e sqlite3_bind_d
2a7f0 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
2a800 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
2a810 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
2a820 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
2a830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
2a840 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
2a850 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
2a860 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
2a870 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
2a880 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
2a890 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
2a8a0 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e 67 20  index, ref long 
2a8b0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b  value);....    [
2a8c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
2a8d0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
2a8e0 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69 6e 64   = "sqlite3_bind
2a8f0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 22 29  _int64_interop")
2a900 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2a910 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
2a920 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
2a930 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
2a940 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
2a950 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
2a960 2c 20 72 65 66 20 75 6c 6f 6e 67 20 76 61 6c 75  , ref ulong valu
2a970 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
2a980 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
2a990 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
2a9a0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
2a9b0 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
2a9c0 6d 6e 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  mn_double_intero
2a9d0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
2a9e0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 64 6f  nt index, ref do
2a9f0 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
2aa00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2aa10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
2aa20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2aa30 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
2aa40 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36  ite3_column_int6
2aa50 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
2aa60 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
2aa70 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75 65  , ref long value
2aa80 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
2aa90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
2aaa0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2aab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
2aac0 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  id sqlite3_value
2aad0 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
2aae0 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 64 6f  IntPtr p, ref do
2aaf0 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
2ab00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
2ab10 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
2ab20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
2ab30 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
2ab40 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
2ab50 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
2ab60 70 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  p, ref Int64 val
2ab70 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
2ab80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2ab90 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2aba0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2abb0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
2abc0 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72  ult_double_inter
2abd0 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
2abe0 74 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61  t, ref double va
2abf0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lue);....    [Dl
2ac00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2ac10 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2ac20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ac30 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
2ac40 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72  sult_int64_inter
2ac50 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
2ac60 74 2c 20 72 65 66 20 49 6e 74 36 34 20 76 61 6c  t, ref Int64 val
2ac70 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
2ac80 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
2ac90 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
2aca0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
2acb0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 73 69  void sqlite3_msi
2acc0 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
2acd0 72 20 70 2c 20 72 65 66 20 75 6c 6f 6e 67 20 73  r p, ref ulong s
2ace0 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  ize);....    [Dl
2acf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
2ad00 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
2ad10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
2ad20 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
2ad30 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
2ad40 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
2ad50 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2ad60 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61 6d  r db, IntPtr nam
2ad70 65 2c 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c  e, IntPtr pModul
2ad80 65 2c 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 2c  e, int iVersion,
2ad90 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74 65   xCreate xCreate
2ada0 2c 0d 0a 20 20 20 20 20 20 20 20 78 43 6f 6e 6e  ,..        xConn
2adb0 65 63 74 20 78 43 6f 6e 6e 65 63 74 2c 20 78 42  ect xConnect, xB
2adc0 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49 6e  estIndex xBestIn
2add0 64 65 78 2c 20 78 44 69 73 63 6f 6e 6e 65 63 74  dex, xDisconnect
2ade0 20 78 44 69 73 63 6f 6e 6e 65 63 74 2c 0d 0a 20   xDisconnect,.. 
2adf0 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 20         xDestroy 
2ae00 78 44 65 73 74 72 6f 79 2c 20 78 4f 70 65 6e 20  xDestroy, xOpen 
2ae10 78 4f 70 65 6e 2c 20 78 43 6c 6f 73 65 20 78 43  xOpen, xClose xC
2ae20 6c 6f 73 65 2c 20 78 46 69 6c 74 65 72 20 78 46  lose, xFilter xF
2ae30 69 6c 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  ilter,..        
2ae40 78 4e 65 78 74 20 78 4e 65 78 74 2c 20 78 45 6f  xNext xNext, xEo
2ae50 66 20 78 45 6f 66 2c 20 78 43 6f 6c 75 6d 6e 20  f xEof, xColumn 
2ae60 78 43 6f 6c 75 6d 6e 2c 20 78 52 6f 77 49 64 20  xColumn, xRowId 
2ae70 78 52 6f 77 49 64 2c 20 78 55 70 64 61 74 65 20  xRowId, xUpdate 
2ae80 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20  xUpdate,..      
2ae90 20 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 2c    xBegin xBegin,
2aea0 20 78 53 79 6e 63 20 78 53 79 6e 63 2c 20 78 43   xSync xSync, xC
2aeb0 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 2c 20 78  ommit xCommit, x
2aec0 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61  Rollback xRollba
2aed0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 78 46 69  ck,..        xFi
2aee0 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64  ndFunction xFind
2aef0 46 75 6e 63 74 69 6f 6e 2c 20 78 52 65 6e 61 6d  Function, xRenam
2af00 65 20 78 52 65 6e 61 6d 65 2c 20 78 53 61 76 65  e xRename, xSave
2af10 70 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74  point xSavepoint
2af20 2c 0d 0a 20 20 20 20 20 20 20 20 78 52 65 6c 65  ,..        xRele
2af30 61 73 65 20 78 52 65 6c 65 61 73 65 2c 20 78 52  ase xRelease, xR
2af40 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c 62  ollbackTo xRollb
2af50 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 20 70 43  ackTo, IntPtr pC
2af60 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20  lientData,..    
2af70 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75      xDestroyModu
2af80 6c 65 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  le xDestroyModul
2af90 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
2afa0 20 2f 2f 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d   // PLATFORM_COM
2afb0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26  PACTFRAMEWORK &&
2afc0 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
2afd0 44 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  D..    #endregio
2afe0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b030 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2b040 69 6f 6e 20 4e 61 74 69 76 65 20 44 65 6c 65 67  ion Native Deleg
2b050 61 74 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ates..#if INTERO
2b060 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
2b070 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b080 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b090 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b0a0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b0b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b0c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b0d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b0e0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b0f0 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
2b100 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b110 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Db,..        Int
2b120 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
2b130 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
2b140 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2b150 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  v,..        ref 
2b160 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2b170 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2b180 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b  r pError..    );
2b190 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1e0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2b1f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b200 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2b210 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2b220 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2b230 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2b240 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2b250 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2b260 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e  teErrorCode xCon
2b270 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49  nect(..        I
2b280 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
2b290 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
2b2a0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
2b2b0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
2b2c0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
2b2d0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
2b2e0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
2b2f0 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
2b300 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2b360 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2b370 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b380 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2b390 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2b3a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2b3b0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2b3c0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2b3d0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2b3e0 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  de xBestIndex(..
2b3f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b400 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49  Vtab,..        I
2b410 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20  ntPtr pIndex..  
2b420 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b470 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2b480 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2b490 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2b4a0 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2b4b0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2b4c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2b4d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2b4e0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2b4f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2b500 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
2b510 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2b520 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
2b530 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b580 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b590 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b5a0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b5b0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b5c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b5d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b5e0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b5f0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b600 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
2b610 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b620 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d  pVtab..    );...
2b630 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2b690 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b6a0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2b6b0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2b6c0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2b6d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2b6e0 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2b6f0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2b700 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
2b710 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b720 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2b730 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
2b740 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  or..    );....  
2b750 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b7a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b7b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b7c0 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b7d0 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b7e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b7f0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b800 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b810 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b820 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
2b830 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2b840 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d  ursor..    );...
2b850 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2b8b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b8c0 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2b8d0 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2b8e0 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2b8f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2b900 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2b910 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2b920 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72  rrorCode xFilter
2b930 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2b940 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
2b950 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d      int idxNum,.
2b960 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2b970 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
2b980 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
2b990 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
2b9a0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2ba00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2ba10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2ba20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2ba30 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2ba40 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2ba50 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2ba60 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2ba70 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2ba80 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  de xNext(..     
2ba90 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2baa0 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
2bab0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2bac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bb00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2bb10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2bb20 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2bb30 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2bb40 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2bb50 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2bb60 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2bb70 67 61 74 65 20 69 6e 74 20 78 45 6f 66 28 0d 0a  gate int xEof(..
2bb80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2bb90 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  Cursor..    );..
2bba0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbf0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2bc00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2bc10 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2bc20 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2bc30 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2bc40 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2bc50 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2bc60 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2bc70 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
2bc80 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  n(..        IntP
2bc90 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
2bca0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
2bcb0 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 69  text,..        i
2bcc0 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 29 3b  nt index..    );
2bcd0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2bce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd20 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2bd30 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2bd40 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2bd50 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2bd60 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2bd70 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2bd80 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2bd90 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2bda0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77  teErrorCode xRow
2bdb0 49 64 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  Id(..        Int
2bdc0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
2bdd0 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
2bde0 6f 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  owId..    );....
2bdf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2be40 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2be50 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2be60 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2be70 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2be80 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2be90 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2bea0 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2beb0 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2bec0 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
2bed0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2bee0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2bef0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
2bf00 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2bf10 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f  ..        ref lo
2bf20 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 29 3b  ng rowId..    );
2bf30 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf80 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2bf90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2bfa0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2bfb0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2bfc0 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2bfd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2bfe0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2bff0 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  ic delegate SQLi
2c000 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
2c010 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  in(..        Int
2c020 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2c030 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c080 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2c090 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c0a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2c0b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2c0c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2c0d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2c0e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2c0f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2c100 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79  iteErrorCode xSy
2c110 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  nc(..        Int
2c120 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2c130 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2c190 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2c1a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2c1b0 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2c1c0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2c1d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2c1e0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2c1f0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2c200 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
2c210 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 49  mmit(..        I
2c220 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2c230 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2c290 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c2a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2c2b0 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2c2c0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2c2d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2c2e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2c2f0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2c300 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2c310 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
2c320 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2c330 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2c390 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2c3a0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2c3b0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2c3c0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2c3d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2c3e0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2c3f0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2c400 74 65 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  te int xFindFunc
2c410 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 49  tion(..        I
2c420 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2c430 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
2c440 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
2c450 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
2c460 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
2c470 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
2c480 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2c490 20 70 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20   pUserData..    
2c4a0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2c500 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2c510 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2c520 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2c530 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2c540 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2c550 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2c560 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2c570 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2c580 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
2c590 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2c5a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
2c5b0 65 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ew..    );....  
2c5c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2c610 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2c620 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2c630 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2c640 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2c650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2c660 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2c670 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2c680 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2c690 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74  rCode xSavepoint
2c6a0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2c6b0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2c6c0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
2c6d0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2c730 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2c740 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2c750 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2c760 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2c770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2c780 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2c790 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2c7a0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2c7b0 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
2c7c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2c7d0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  tab,..        in
2c7e0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
2c7f0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c840 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2c850 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2c860 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2c870 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2c880 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2c890 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2c8a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2c8b0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2c8c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2c8d0 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20  xRollbackTo(..  
2c8e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2c8f0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2c900 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2c910 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c960 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2c970 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2c980 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2c990 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2c9a0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2c9b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2c9c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2c9d0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
2c9e0 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64 75  oid xDestroyModu
2c9f0 6c 65 28 49 6e 74 50 74 72 20 70 43 6c 69 65 6e  le(IntPtr pClien
2ca00 74 44 61 74 61 29 3b 0d 0a 23 65 6e 64 69 66 0d  tData);..#endif.
2ca10 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
2ca20 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca70 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
2ca80 6e 20 4e 61 74 69 76 65 20 53 74 72 75 63 74 75  n Native Structu
2ca90 72 65 73 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  res..#if INTEROP
2caa0 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
2cab0 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
2cac0 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
2cad0 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
2cae0 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
2caf0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
2cb00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a     {..        /*
2cb10 20 20 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69     0 */ public i
2cb20 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0d 0a 20 20  nt iVersion;..  
2cb30 20 20 20 20 20 20 2f 2a 20 20 20 38 20 2a 2f 20        /*   8 */ 
2cb40 70 75 62 6c 69 63 20 78 43 72 65 61 74 65 20 78  public xCreate x
2cb50 43 72 65 61 74 65 3b 0d 0a 20 20 20 20 20 20 20  Create;..       
2cb60 20 2f 2a 20 20 31 36 20 2a 2f 20 70 75 62 6c 69   /*  16 */ publi
2cb70 63 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e  c xConnect xConn
2cb80 65 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ect;..        /*
2cb90 20 20 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 78    24 */ public x
2cba0 42 65 73 74 49 6e 64 65 78 20 78 42 65 73 74 49  BestIndex xBestI
2cbb0 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndex;..        /
2cbc0 2a 20 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20  *  32 */ public 
2cbd0 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
2cbe0 63 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20 20 20 20  connect;..      
2cbf0 20 20 2f 2a 20 20 34 30 20 2a 2f 20 70 75 62 6c    /*  40 */ publ
2cc00 69 63 20 78 44 65 73 74 72 6f 79 20 78 44 65 73  ic xDestroy xDes
2cc10 74 72 6f 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f  troy;..        /
2cc20 2a 20 20 34 38 20 2a 2f 20 70 75 62 6c 69 63 20  *  48 */ public 
2cc30 78 4f 70 65 6e 20 78 4f 70 65 6e 3b 0d 0a 20 20  xOpen xOpen;..  
2cc40 20 20 20 20 20 20 2f 2a 20 20 35 36 20 2a 2f 20        /*  56 */ 
2cc50 70 75 62 6c 69 63 20 78 43 6c 6f 73 65 20 78 43  public xClose xC
2cc60 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lose;..        /
2cc70 2a 20 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20  *  64 */ public 
2cc80 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72 3b  xFilter xFilter;
2cc90 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 37 32  ..        /*  72
2cca0 20 2a 2f 20 70 75 62 6c 69 63 20 78 4e 65 78 74   */ public xNext
2ccb0 20 78 4e 65 78 74 3b 0d 0a 20 20 20 20 20 20 20   xNext;..       
2ccc0 20 2f 2a 20 20 38 30 20 2a 2f 20 70 75 62 6c 69   /*  80 */ publi
2ccd0 63 20 78 45 6f 66 20 78 45 6f 66 3b 0d 0a 20 20  c xEof xEof;..  
2cce0 20 20 20 20 20 20 2f 2a 20 20 38 38 20 2a 2f 20        /*  88 */ 
2ccf0 70 75 62 6c 69 63 20 78 43 6f 6c 75 6d 6e 20 78  public xColumn x
2cd00 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
2cd10 20 2f 2a 20 20 39 36 20 2a 2f 20 70 75 62 6c 69   /*  96 */ publi
2cd20 63 20 78 52 6f 77 49 64 20 78 52 6f 77 49 64 3b  c xRowId xRowId;
2cd30 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 30 34  ..        /* 104
2cd40 20 2a 2f 20 70 75 62 6c 69 63 20 78 55 70 64 61   */ public xUpda
2cd50 74 65 20 78 55 70 64 61 74 65 3b 0d 0a 20 20 20  te xUpdate;..   
2cd60 20 20 20 20 20 2f 2a 20 31 31 32 20 2a 2f 20 70       /* 112 */ p
2cd70 75 62 6c 69 63 20 78 42 65 67 69 6e 20 78 42 65  ublic xBegin xBe
2cd80 67 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  gin;..        /*
2cd90 20 31 32 30 20 2a 2f 20 70 75 62 6c 69 63 20 78   120 */ public x
2cda0 53 79 6e 63 20 78 53 79 6e 63 3b 0d 0a 20 20 20  Sync xSync;..   
2cdb0 20 20 20 20 20 2f 2a 20 31 32 38 20 2a 2f 20 70       /* 128 */ p
2cdc0 75 62 6c 69 63 20 78 43 6f 6d 6d 69 74 20 78 43  ublic xCommit xC
2cdd0 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20  ommit;..        
2cde0 2f 2a 20 31 33 36 20 2a 2f 20 70 75 62 6c 69 63  /* 136 */ public
2cdf0 20 78 52 6f 6c 6c 62 61 63 6b 20 78 52 6f 6c 6c   xRollback xRoll
2ce00 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 2f  back;..        /
2ce10 2a 20 31 34 34 20 2a 2f 20 70 75 62 6c 69 63 20  * 144 */ public 
2ce20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 78 46  xFindFunction xF
2ce30 69 6e 64 46 75 6e 63 74 69 6f 6e 3b 0d 0a 20 20  indFunction;..  
2ce40 20 20 20 20 20 20 2f 2a 20 31 35 32 20 2a 2f 20        /* 152 */ 
2ce50 70 75 62 6c 69 63 20 78 52 65 6e 61 6d 65 20 78  public xRename x
2ce60 52 65 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  Rename;..       
2ce70 20 2f 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   /* The methods 
2ce80 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
2ce90 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71  sion 1 of the sq
2cea0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
2ceb0 20 20 20 20 20 20 20 2a 20 6f 62 6a 65 63 74 2e         * object.
2cec0 20 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72    Those below ar
2ced0 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  e for version 2 
2cee0 61 6e 64 20 67 72 65 61 74 65 72 2e 20 2a 2f 0d  and greater. */.
2cef0 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 30 20  .        /* 160 
2cf00 2a 2f 20 70 75 62 6c 69 63 20 78 53 61 76 65 70  */ public xSavep
2cf10 6f 69 6e 74 20 78 53 61 76 65 70 6f 69 6e 74 3b  oint xSavepoint;
2cf20 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36 38  ..        /* 168
2cf30 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 65 6c 65   */ public xRele
2cf40 61 73 65 20 78 52 65 6c 65 61 73 65 3b 0d 0a 20  ase xRelease;.. 
2cf50 20 20 20 20 20 20 20 2f 2a 20 31 37 36 20 2a 2f         /* 176 */
2cf60 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
2cf70 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 3b  kTo xRollbackTo;
2cf80 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2cfe0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
2cff0 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
2d000 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
2d010 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
2d020 69 74 65 33 5f 76 74 61 62 0d 0a 20 20 20 20 7b  ite3_vtab..    {
2d030 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 30 20  ..        /*  0 
2d040 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2d050 20 70 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20   pModule;..     
2d060 20 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c     /*  8 */ publ
2d070 69 63 20 69 6e 74 20 6e 52 65 66 3b 20 2f 2a 20  ic int nRef; /* 
2d080 4e 4f 20 4c 4f 4e 47 45 52 20 55 53 45 44 20 2a  NO LONGER USED *
2d090 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  /..        /* 16
2d0a0 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74   */ public IntPt
2d0b0 72 20 7a 45 72 72 4d 73 67 3b 0d 0a 20 20 20 20  r zErrMsg;..    
2d0c0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
2d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
2d120 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
2d130 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
2d140 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2d150 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
2d160 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20  tab_cursor..    
2d170 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20  {..        /* 0 
2d180 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2d190 20 70 56 54 61 62 3b 0d 0a 20 20 20 20 7d 0d 0a   pVTab;..    }..
2d1a0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1f0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2d200 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2d210 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2d220 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2d230 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
2d240 78 5f 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  x_constraint..  
2d250 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
2d260 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
2d270 78 5f 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  x_constraint(.. 
2d280 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d290 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
2d2a0 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20   constraint..   
2d2b0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2d2c0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2d2d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d2e0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
2d2f0 73 74 72 61 69 6e 74 20 21 3d 20 6e 75 6c 6c 29  straint != null)
2d300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d320 20 69 43 6f 6c 75 6d 6e 20 3d 20 63 6f 6e 73 74   iColumn = const
2d330 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a  raint.iColumn;..
2d340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d350 6f 70 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  op = constraint.
2d360 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
2d370 20 20 20 20 20 75 73 61 62 6c 65 20 3d 20 63 6f       usable = co
2d380 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 3b  nstraint.usable;
2d390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d3a0 20 20 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20    iTermOffset = 
2d3b0 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d  constraint.iTerm
2d3c0 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
2d3d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d3e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2d3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d430 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d440 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69  /* 0 */ public i
2d450 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20  nt iColumn;..   
2d460 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62       /* 4 */ pub
2d470 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43  lic SQLiteIndexC
2d480 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d  onstraintOp op;.
2d490 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 20 2a 2f  .        /* 5 */
2d4a0 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
2d4b0 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ble;..        /*
2d4c0 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   8 */ public int
2d4d0 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
2d4e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
2d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d530 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b  ///////....    [
2d540 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
2d550 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
2d560 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
2d570 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
2d580 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 0d  3_index_orderby.
2d590 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
2d5a0 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f 69  public sqlite3_i
2d5b0 6e 64 65 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20  ndex_orderby(.. 
2d5c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d5d0 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 6f 72  eIndexOrderBy or
2d5e0 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
2d5f0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2d600 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2d610 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d620 20 20 20 69 66 20 28 6f 72 64 65 72 42 79 20 21     if (orderBy !
2d630 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2d640 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d650 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
2d660 3d 20 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d  = orderBy.iColum
2d670 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
2d680 20 20 20 20 64 65 73 63 20 3d 20 6f 72 64 65 72      desc = order
2d690 42 79 2e 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  By.desc;..      
2d6a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d6b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d700 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d710 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63 20   /* 0 */ public 
2d720 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 2f 2a 20  int iColumn; /* 
2d730 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
2d740 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34 20 2a  ..        /* 4 *
2d750 2f 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65  / public byte de
2d760 73 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f  sc;   /* True fo
2d770 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66  r DESC.  False f
2d780 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20  or ASC. */..    
2d790 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
2d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72  ////....    [Str
2d7f0 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74  uctLayout(Layout
2d800 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29  Kind.Sequential)
2d810 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
2d820 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
2d830 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
2d840 75 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  usage..    {..  
2d850 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c        public sql
2d860 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
2d870 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20  raint_usage(..  
2d880 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2d890 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
2d8a0 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
2d8b0 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
2d8c0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2d8d0 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
2d8e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d8f0 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74    if (constraint
2d900 55 73 61 67 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Usage != null)..
2d910 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
2d930 72 67 76 49 6e 64 65 78 20 3d 20 63 6f 6e 73 74  rgvIndex = const
2d940 72 61 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49  raintUsage.argvI
2d950 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
2d960 20 20 20 20 20 20 20 6f 6d 69 74 20 3d 20 63 6f         omit = co
2d970 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
2d980 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it;..           
2d990 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2d9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2d9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
2da00 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
2da10 3b 20 2f 2a 20 69 66 20 3e 30 2c 20 63 6f 6e 73  ; /* if >0, cons
2da20 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f  traint is part o
2da30 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
2da40 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 70 75  r */..        pu
2da50 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 20  blic byte omit; 
2da60 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f      /* Do not co
2da70 64 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68  de a test for th
2da80 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f  is constraint */
2da90 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2daa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2daf0 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
2db00 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
2db10 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  ntial)]..    int
2db20 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c  ernal struct sql
2db30 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d  ite3_index_info.
2db40 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
2db50 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20  /* Inputs */..  
2db60 20 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70        /*  0 */ p
2db70 75 62 6c 69 63 20 69 6e 74 20 6e 43 6f 6e 73 74  ublic int nConst
2db80 72 61 69 6e 74 3b 20 2f 2a 20 4e 75 6d 62 65 72  raint; /* Number
2db90 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
2dba0 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
2dbb0 20 20 20 20 20 20 20 2f 2a 20 20 38 20 2a 2f 20         /*  8 */ 
2dbc0 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 61 43  public IntPtr aC
2dbd0 6f 6e 73 74 72 61 69 6e 74 3b 0d 0a 20 20 20 20  onstraint;..    
2dbe0 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62      /* 16 */ pub
2dbf0 6c 69 63 20 69 6e 74 20 6e 4f 72 64 65 72 42 79  lic int nOrderBy
2dc00 3b 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  ;    /* Number o
2dc10 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 4f 72  f entries in aOr
2dc20 64 65 72 42 79 20 2a 2f 0d 0a 20 20 20 20 20 20  derBy */..      
2dc30 20 20 2f 2a 20 32 34 20 2a 2f 20 70 75 62 6c 69    /* 24 */ publi
2dc40 63 20 49 6e 74 50 74 72 20 61 4f 72 64 65 72 42  c IntPtr aOrderB
2dc50 79 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 4f  y;..        /* O
2dc60 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
2dc70 20 20 20 2f 2a 20 33 32 20 2a 2f 20 70 75 62 6c     /* 32 */ publ
2dc80 69 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74  ic IntPtr aConst
2dc90 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
2dca0 20 20 20 20 20 2f 2a 20 34 30 20 2a 2f 20 70 75       /* 40 */ pu
2dcb0 62 6c 69 63 20 69 6e 74 20 69 64 78 4e 75 6d 3b  blic int idxNum;
2dcc0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
2dcd0 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
2dce0 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
2dcf0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  */..        /* 4
2dd00 38 20 2a 2f 20 70 75 62 6c 69 63 20 73 74 72 69  8 */ public stri
2dd10 6e 67 20 69 64 78 53 74 72 3b 20 20 20 20 20 20  ng idxStr;      
2dd20 20 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73    /* String, pos
2dd30 73 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  sibly obtained f
2dd40 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
2dd50 6f 63 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  oc */..        /
2dd60 2a 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 56 */ public i
2dd70 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  nt needToFreeIdx
2dd80 53 74 72 3b 20 2f 2a 20 46 72 65 65 20 69 64 78  Str; /* Free idx
2dd90 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
2dda0 33 5f 66 72 65 65 28 29 20 69 66 20 74 72 75 65  3_free() if true
2ddb0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2ddc0 36 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74  60 */ public int
2ddd0 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
2dde0 3b 20 20 2f 2a 20 54 72 75 65 20 69 66 20 6f 75  ;  /* True if ou
2ddf0 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20  tput is already 
2de00 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20  ordered */..    
2de10 20 20 20 20 2f 2a 20 36 34 20 2a 2f 20 70 75 62      /* 64 */ pub
2de20 6c 69 63 20 64 6f 75 62 6c 65 20 65 73 74 69 6d  lic double estim
2de30 61 74 65 64 43 6f 73 74 3b 20 2f 2a 20 45 73 74  atedCost; /* Est
2de40 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
2de50 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20  sing this index 
2de60 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 37  */..        /* 7
2de70 32 20 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67  2 */ public long
2de80 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 20   estimatedRows; 
2de90 20 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 6e    /* Estimated n
2dea0 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65  umber of rows re
2deb0 74 75 72 6e 65 64 20 2a 2f 0d 0a 20 20 20 20 20  turned */..     
2dec0 20 20 20 2f 2a 20 38 30 20 2a 2f 20 70 75 62 6c     /* 80 */ publ
2ded0 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  ic SQLiteIndexFl
2dee0 61 67 73 20 69 64 78 46 6c 61 67 73 3b 20 2f 2a  ags idxFlags; /*
2def0 20 4d 61 73 6b 20 6f 66 20 53 51 4c 49 54 45 5f   Mask of SQLITE_
2df00 49 4e 44 45 58 5f 53 43 41 4e 5f 2a 20 66 6c 61  INDEX_SCAN_* fla
2df10 67 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  gs */..        /
2df20 2a 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 6c  * 88 */ public l
2df30 6f 6e 67 20 63 6f 6c 55 73 65 64 3b 20 20 20 20  ong colUsed;    
2df40 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 3a 20 4d       /* Input: M
2df50 61 73 6b 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 75  ask of columns u
2df60 73 65 64 20 62 79 20 73 74 61 74 65 6d 65 6e 74  sed by statement
2df70 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64   */..    }..#end
2df80 69 66 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  if..    #endregi
2df90 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72  on..  }..  #endr
2dfa0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
2dfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dff0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
2e000 65 67 69 6f 6e 20 2e 4e 45 54 20 43 6f 6d 70 61  egion .NET Compa
2e010 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 28 6f 6e  ct Framework (on
2e020 6c 79 29 20 43 72 69 74 69 63 61 6c 48 61 6e 64  ly) CriticalHand
2e030 6c 65 20 43 6c 61 73 73 0d 0a 23 69 66 20 50 4c  le Class..#if PL
2e040 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2e050 41 4d 45 57 4f 52 4b 0d 0a 20 20 69 6e 74 65 72  AMEWORK..  inter
2e060 6e 61 6c 20 61 62 73 74 72 61 63 74 20 63 6c 61  nal abstract cla
2e070 73 73 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  ss CriticalHandl
2e080 65 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  e : IDisposable.
2e090 0a 20 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74  .  {..    privat
2e0a0 65 20 62 6f 6f 6c 20 5f 69 73 43 6c 6f 73 65 64  e bool _isClosed
2e0b0 3b 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ;..    protected
2e0c0 20 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 3b 0d   IntPtr handle;.
2e0d0 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e0e0 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28   CriticalHandle(
2e0f0 49 6e 74 50 74 72 20 69 6e 76 61 6c 69 64 48 61  IntPtr invalidHa
2e100 6e 64 6c 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  ndleValue)..    
2e110 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20  {..      handle 
2e120 3d 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  = invalidHandleV
2e130 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 5f 69 73  alue;..      _is
2e140 43 6c 6f 73 65 64 20 3d 20 66 61 6c 73 65 3b 0d  Closed = false;.
2e150 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 7e 43  .    }....    ~C
2e160 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 28 29 0d  riticalHandle().
2e170 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
2e180 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
2e190 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
2e1a0 61 74 65 20 76 6f 69 64 20 43 6c 65 61 6e 75 70  ate void Cleanup
2e1b0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
2e1c0 20 69 66 20 28 21 49 73 43 6c 6f 73 65 64 29 0d   if (!IsClosed).
2e1d0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
2e1e0 20 20 74 68 69 73 2e 5f 69 73 43 6c 6f 73 65 64    this._isClosed
2e1f0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2e200 20 20 69 66 20 28 21 49 73 49 6e 76 61 6c 69 64    if (!IsInvalid
2e210 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2e220 20 20 20 20 20 20 20 20 52 65 6c 65 61 73 65 48          ReleaseH
2e230 61 6e 64 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  andle();..      
2e240 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
2e250 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
2e260 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e270 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2e280 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f   public void Clo
2e290 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  se()..    {..   
2e2a0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
2e2b0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2e2c0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
2e2d0 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
2e2e0 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
2e2f0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
2e300 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
2e310 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  al void Dispose(
2e320 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
2e330 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 6c  .    {..      Cl
2e340 65 61 6e 75 70 28 29 3b 0d 0a 20 20 20 20 7d 0d  eanup();..    }.
2e350 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e360 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 52   abstract bool R
2e370 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
2e380 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
2e390 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 28   void SetHandle(
2e3a0 49 6e 74 50 74 72 20 76 61 6c 75 65 29 0d 0a 20  IntPtr value).. 
2e3b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 68 61 6e 64     {..      hand
2e3c0 6c 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  le = value;..   
2e3d0 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63   }....    public
2e3e0 20 76 6f 69 64 20 53 65 74 48 61 6e 64 6c 65 41   void SetHandleA
2e3f0 73 49 6e 76 61 6c 69 64 28 29 0d 0a 20 20 20 20  sInvalid()..    
2e400 7b 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73  {..      _isClos
2e410 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
2e420 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
2e430 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
2e440 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
2e450 63 20 62 6f 6f 6c 20 49 73 43 6c 6f 73 65 64 0d  c bool IsClosed.
2e460 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
2e470 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 73 43 6c  t { return _isCl
2e480 6f 73 65 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  osed; }..    }..
2e490 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62 73  ..    public abs
2e4a0 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 76  tract bool IsInv
2e4b0 61 6c 69 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  alid..    {..   
2e4c0 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a     get;..    }..
2e4d0 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ..  }..#endif.. 
2e4e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2e4f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2e540 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
2e550 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2e560 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2e570 2f 2f 20 48 61 6e 64 6c 65 73 20 74 68 65 20 75  // Handles the u
2e580 6e 6d 61 6e 61 67 65 64 20 64 61 74 61 62 61 73  nmanaged databas
2e590 65 20 70 6f 69 6e 74 65 72 2c 20 61 6e 64 20 70  e pointer, and p
2e5a0 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
2e5b0 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 20 73 75 70  tion..    // sup
2e5c0 70 6f 72 74 20 66 6f 72 20 69 74 2e 0d 0a 20 20  port for it...  
2e5d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
2e5e0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f  d class SQLiteCo
2e5f0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 3a  nnectionHandle :
2e600 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d   CriticalHandle.
2e610 0a 20 20 20 20 7b 0d 0a 23 69 66 20 53 51 4c 49  .    {..#if SQLI
2e620 54 45 5f 53 54 41 4e 44 41 52 44 20 26 26 20 21  TE_STANDARD && !
2e630 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2e640 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2e650 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
2e660 67 61 74 65 20 76 6f 69 64 20 43 6c 6f 73 65 43  gate void CloseC
2e670 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
2e680 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2e690 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2e6a0 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
2e6b0 74 72 20 64 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  tr db);....     
2e6c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2e6d0 69 63 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  ic CloseConnecti
2e6e0 6f 6e 43 61 6c 6c 62 61 63 6b 20 63 6c 6f 73 65  onCallback close
2e6f0 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 0d 0a 20 20  Connection =..  
2e700 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2e710 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2e720 74 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  tion;..#endif...
2e730 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e780 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
2e790 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e7a0 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  K..        inter
2e7b0 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a  nal readonly obj
2e7c0 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
2e7d0 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65  ew object();..#e
2e7e0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e840 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
2e850 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  ownHandle;....  
2e860 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e8b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2e8c0 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
2e8d0 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28  operator IntPtr(
2e8e0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2e8f0 48 61 6e 64 6c 65 20 64 62 29 0d 0a 20 20 20 20  Handle db)..    
2e900 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e910 20 20 20 69 66 20 28 64 62 20 21 3d 20 6e 75 6c     if (db != nul
2e920 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2e930 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2e940 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2e950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e960 20 20 6c 6f 63 6b 20 28 64 62 2e 73 79 6e 63 52    lock (db.syncR
2e970 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2e980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2e990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9a0 20 20 20 20 20 72 65 74 75 72 6e 20 64 62 2e 68       return db.h
2e9b0 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
2e9c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2e9d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2e9e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
2e9f0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2ea00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ea10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ea60 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
2ea70 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
2ea80 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 6f  le(IntPtr db, bo
2ea90 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20  ol ownHandle).. 
2eaa0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2eab0 73 28 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20  s(ownHandle)..  
2eac0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2ead0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2eae0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2eaf0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2eb00 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2eb10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2eb20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
2eb30 2e 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 6f 77 6e  .ownHandle = own
2eb40 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Handle;..       
2eb50 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2eb60 6c 65 28 64 62 29 3b 0d 0a 20 20 20 20 20 20 20  le(db);..       
2eb70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2eb80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ebe0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f  private SQLiteCo
2ebf0 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 62  nnectionHandle(b
2ec00 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65 29 0d 0a  ool ownHandle)..
2ec10 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
2ec20 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
2ec30 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2ec40 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2ec50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 77            if (ow
2ec60 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2ec70 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2ec80 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
2ec90 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2eca0 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2ecb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2ecc0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2ecd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed10 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2ed20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2ed30 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2ed40 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2ed50 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2ed60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2ed70 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2ed80 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
2ed90 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2eda0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2edb0 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 77 6e          if (!own
2edc0 48 61 6e 64 6c 65 29 20 72 65 74 75 72 6e 20 74  Handle) return t
2edd0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2ede0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2edf0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2ee00 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
2ee10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ee20 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2ee30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f         IntPtr lo
2ee40 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65  calHandle = Inte
2ee50 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65  rlocked.Exchange
2ee60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ee70 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c         ref handl
2ee80 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  e, IntPtr.Zero);
2ee90 0d 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53  ....#if SQLITE_S
2eea0 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
2eeb0 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63           if (loc
2eec0 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50  alHandle != IntP
2eed0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c                cl
2eef0 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68  oseConnection(th
2ef00 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  is, localHandle)
2ef10 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
2ef20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
2ef30 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74  calHandle != Int
2ef40 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2ef60 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43  QLiteBase.CloseC
2ef70 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20  onnection(this, 
2ef80 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23  localHandle);..#
2ef90 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 4e 45  endif....#if !NE
2efa0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2efb0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2efd0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2efe0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2eff0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
2f000 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
2f010 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
2f020 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2f040 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2f050 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f070 20 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63      "CloseConnec
2f080 74 69 6f 6e 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61  tion: {0}", loca
2f090 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68  lHandle)); /* th
2f0a0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2f0b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2f0c0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2f0d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f0e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f0f0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
2f100 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2f110 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2f120 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
2f130 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2f150 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74  f (handle != Int
2f160 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2f170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2f180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f190 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2f1a0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2f1b0 74 69 6f 6e 28 74 68 69 73 2c 20 68 61 6e 64 6c  tion(this, handl
2f1c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2f1e0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
2f1f0 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2f200 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f210 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f220 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
2f230 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2f240 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2f250 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2f260 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63 6f  ref DebugData.co
2f270 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b 0d  nnectionCount);.
2f280 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
2f290 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
2f2a0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2f2b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2f2c0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
2f2d0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
2f2e0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
2f2f0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2f300 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
2f310 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
2f320 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
2f330 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
2f340 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2f350 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
2f360 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2f370 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2f380 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
2f390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f3a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f3b0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
2f3c0 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
2f3d0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2f3e0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2f400 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2f410 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f430 20 20 20 22 43 6c 6f 73 65 43 6f 6e 6e 65 63 74     "CloseConnect
2f440 69 6f 6e 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74  ion: {0}, except
2f450 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  ion: {1}",..    
2f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f470 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b      handle, e));
2f480 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2f4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4b0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2f4c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f4d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
2f4e0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2f4f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2f500 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
2f510 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2f520 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2f530 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2f540 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2f550 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2f560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f580 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2f590 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20  eAsInvalid();.. 
2f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f5c0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2f5d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
2f5e0 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alse;..#else..  
2f5f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f600 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
2f610 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2f620 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f670 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
2f680 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2f690 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64   int WasReleased
2f6a0 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Ok()..        {.
2f6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2f6c0 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
2f6d0 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
2f6e0 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69  bugData.connecti
2f6f0 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  onCount);..     
2f700 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2f710 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2f760 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2f770 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  c bool OwnHandle
2f780 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2f790 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
2f7a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
2f7b0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f7c0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f7d0 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
2f7e0 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
2f7f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2f800 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f810 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f820 72 6e 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20  rn ownHandle;.. 
2f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2f850 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2f860 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f8b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2f8c0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73  override bool Is
2f8d0 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20  Invalid..       
2f8e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f8f0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2f900 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2f910 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2f920 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2f930 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2f940 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2f950 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f970 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c     return (handl
2f980 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2f990 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f9a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2f9b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2f9c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2f9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa10 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d  //....#if DEBUG.
2fa20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2fa30 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
2fa40 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20  ToString()..    
2fa50 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2fa60 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2fa70 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2fa80 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2fa90 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
2faa0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fab0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2fac0 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67   handle.ToString
2fad0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2fae0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23   }..        }..#
2faf0 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20  endif..    }..  
2fb00 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2fb10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fb60 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
2fb70 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2fb80 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
2fb90 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
2fba0 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
2fbb0 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
2fbc0 51 4c 69 74 65 20 73 74 61 74 65 6d 65 6e 74 73  QLite statements
2fbd0 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
2fbe0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
2fbf0 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
2fc00 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
2fc10 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
2fc20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2fc30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2fc40 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
2fc50 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
2fc60 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
2fc70 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
2fc80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2fcd0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2fce0 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
2fcf0 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
2fd00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
2fd60 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
2fd70 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
2fd80 50 74 72 28 53 51 4c 69 74 65 53 74 61 74 65 6d  Ptr(SQLiteStatem
2fd90 65 6e 74 48 61 6e 64 6c 65 20 73 74 6d 74 29 0d  entHandle stmt).
2fda0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2fdb0 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
2fdc0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2fdd0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2fde0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2fdf0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2fe00 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2fe10 74 6d 74 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  tmt.syncRoot)..#
2fe20 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2fe30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2fe50 74 75 72 6e 20 73 74 6d 74 2e 68 61 6e 64 6c 65  turn stmt.handle
2fe60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2fe70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2fe80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2fe90 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2fea0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2feb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2ff10 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 53 74 61  ternal SQLiteSta
2ff20 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 53 51 4c  tementHandle(SQL
2ff30 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
2ff40 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20  dle cnn, IntPtr 
2ff50 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20 20  stmt)..         
2ff60 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2ff70 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2ff80 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ff90 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2ffa0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2ffb0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2ffc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ffd0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2ffe0 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20  cnn = cnn;..    
2fff0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
30000 61 6e 64 6c 65 28 73 74 6d 74 29 3b 0d 0a 20 20  andle(stmt);..  
30010 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30030 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30070 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
30080 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
30090 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64  iteStatementHand
300a0 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  le()..          
300b0 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e    : base(IntPtr.
300c0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b  Zero)..        {
300d0 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
300e0 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
300f0 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72  Interlocked.Incr
30100 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
30110 61 74 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75  ata.statementCou
30120 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
30130 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30140 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30190 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
301a0 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
301b0 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
301c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
301d0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
301e0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
301f0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
30200 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
30210 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
30220 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
30230 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
30240 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
30250 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
30260 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
30270 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
30280 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
30290 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
302a0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
302b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
302c0 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53  teBase.FinalizeS
302d0 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 6c 6f  tatement(cnn, lo
302e0 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23  calHandle);....#
302f0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
30300 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
30310 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30320 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
30330 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30350 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
30360 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
30370 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
30380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30390 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
303a0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
303b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
303c0 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61 6c            "Final
303d0 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b 30  izeStatement: {0
303e0 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  }", localHandle)
303f0 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30410 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30420 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
30430 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30440 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
30450 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20  #endif..#else.. 
30460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
30470 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
30480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30490 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
304a0 20 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c         if (handl
304b0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
304c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
304d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
304e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304f0 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e    SQLiteBase.Fin
30500 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 63  alizeStatement(c
30510 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20  nn, handle);..  
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30530 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28        SetHandle(
30540 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
30550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30560 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30570 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
30580 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
30590 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
305a0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44     Interlocked.D
305b0 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ecrement(ref Deb
305c0 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65 6e 74  ugData.statement
305d0 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d  Count);..#endif.
305e0 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
305f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30600 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66  rn true;..#endif
30610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30620 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
30630 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
30640 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
30650 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
30660 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c  xception e)..#el
30670 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
30680 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
30690 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d  eption)..#endif.
306a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
306b0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
306c0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
306d0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
306e0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
306f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30710 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
30720 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
30730 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
30740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30750 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
30760 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
30770 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30780 20 20 20 20 20 20 20 20 20 20 20 22 46 69 6e 61             "Fina
30790 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 3a 20 7b  lizeStatement: {
307a0 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
307b0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
307d0 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
307e0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
307f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30800 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
30810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30820 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30830 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
30840 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30850 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
30860 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
30870 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
30880 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
30890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
308b0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
308c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
308d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308e0 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
308f0 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
30900 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30910 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
30920 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
30930 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
30940 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
30950 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
30960 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
30970 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
30980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
309d0 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
309e0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
309f0 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
30a00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30a10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
30a20 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
30a30 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
30a40 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
30a50 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
30a60 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
30a70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ab0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30ac0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
30ad0 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
30ae0 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
30af0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
30b00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
30b10 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
30b20 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
30b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
30b40 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
30b50 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
30b60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30b80 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
30b90 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
30ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30bc0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
30bd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30c20 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
30c30 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
30c40 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
30c50 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
30c60 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
30c70 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
30c90 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
30ca0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
30cb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30cc0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
30cd0 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
30ce0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30cf0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
30d00 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
30d10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
30d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30d70 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
30d80 42 61 63 6b 75 70 48 61 6e 64 6c 65 20 43 6c 61  BackupHandle Cla
30d90 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69  ss..    // Provi
30da0 64 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e  des finalization
30db0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d   support for unm
30dc0 61 6e 61 67 65 64 20 53 51 4c 69 74 65 20 62 61  anaged SQLite ba
30dd0 63 6b 75 70 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  ckup objects... 
30de0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
30df0 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42  ed class SQLiteB
30e00 61 63 6b 75 70 48 61 6e 64 6c 65 20 3a 20 43 72  ackupHandle : Cr
30e10 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
30e20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30e30 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30e40 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
30e50 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
30e60 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
30e70 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
30e80 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
30e90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ed0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30ee0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
30ef0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
30f00 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
30f10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30f60 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
30f70 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
30f80 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
30f90 69 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 20  iteBackupHandle 
30fa0 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20 20 20  backup)..       
30fb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30fc0 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e 75  if (backup != nu
30fd0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30fe0 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
30ff0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31000 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
31010 20 20 20 6c 6f 63 6b 20 28 62 61 63 6b 75 70 2e     lock (backup.
31020 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
31030 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
31040 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31050 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
31060 20 62 61 63 6b 75 70 2e 68 61 6e 64 6c 65 3b 0d   backup.handle;.
31070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31080 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31090 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  }..            r
310a0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
310b0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
310c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ....        inte
31120 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 63 6b 75  rnal SQLiteBacku
31130 70 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  pHandle(SQLiteCo
31140 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
31150 6e 6e 2c 20 49 6e 74 50 74 72 20 62 61 63 6b 75  nn, IntPtr backu
31160 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p)..            
31170 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20  : this()..      
31180 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
31190 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
311a0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
311b0 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d  lock (syncRoot).
311c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
311d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
311e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e          this.cnn
311f0 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20   = cnn;..       
31200 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
31210 6c 65 28 62 61 63 6b 75 70 29 3b 0d 0a 20 20 20  le(backup);..   
31220 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31230 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31280 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31290 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
312a0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 29  teBackupHandle()
312b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
312c0 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  base(IntPtr.Zero
312d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
312e0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
312f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65              Inte
31300 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e  rlocked.Incremen
31310 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e  t(ref DebugData.
31320 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 23  backupCount);..#
31330 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
31340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
31350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31390 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
313a0 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
313b0 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
313c0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
313d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
313e0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
313f0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
31400 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31410 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
31420 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
31430 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
31440 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
31450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31460 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
31470 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31490 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
314a0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
314b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
314c0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
314d0 46 69 6e 69 73 68 42 61 63 6b 75 70 28 63 6e 6e  FinishBackup(cnn
314e0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d  , localHandle);.
314f0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
31500 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
31510 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
31520 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
31530 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31550 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
31560 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
31570 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
31580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31590 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
315a0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
315b0 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
315c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
315d0 69 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d  inishBackup: {0}
315e0 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
315f0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
31600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31620 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
31630 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31640 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
31650 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
31660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
31670 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
31680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316a0 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
316b0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
316c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
316e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316f0 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69   SQLiteBase.Fini
31700 73 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 68 61  shBackup(cnn, ha
31710 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndle);..        
31720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31730 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  SetHandle(IntPtr
31740 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
31750 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31770 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 43  }..#endif..#if C
31780 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
31790 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
317a0 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65  erlocked.Decreme
317b0 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74 61  nt(ref DebugData
317c0 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a  .backupCount);..
317d0 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
317e0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
317f0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
31800 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31810 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
31820 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
31830 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
31840 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
31850 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
31860 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
31870 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
31880 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
31890 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
318a0 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
318b0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
318c0 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
318d0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
318e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
318f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31900 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
31910 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
31920 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
31930 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
31940 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
31950 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
31960 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31980 20 20 22 46 69 6e 69 73 68 42 61 63 6b 75 70 3a    "FinishBackup:
31990 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a   {0}, exception:
319a0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319c0 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20  handle, e)); /* 
319d0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
319e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
319f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
31a00 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
31a10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31a20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
31a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
31a50 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
31a60 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
31a70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
31a80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
31a90 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
31aa0 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ad0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49      SetHandleAsI
31ae0 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20  nvalid();..     
31af0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31b00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
31b10 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
31b20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
31b30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
31b40 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
31b50 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  e;..#endif..    
31b60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31b70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
31bc0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
31bd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
31be0 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29   WasReleasedOk()
31bf0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
31c00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31c10 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
31c20 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
31c30 61 74 61 2e 62 61 63 6b 75 70 43 6f 75 6e 74 29  ata.backupCount)
31c40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
31c50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
31c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
31cb0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31cc0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
31cd0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
31ce0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
31cf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31d00 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
31d10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
31d20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
31d30 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
31d40 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
31d50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31d60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31d70 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
31d80 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
31d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31db0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31dc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31e10 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
31e20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31e30 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
31e40 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
31e50 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
31e60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
31e70 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
31e80 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
31e90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
31ea0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31eb0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
31ec0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
31ed0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31ee0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
31ef0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
31f00 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
31f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
31f60 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
31f70 6c 6f 62 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  lobHandle Class.
31f80 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73  .    // Provides
31f90 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75   finalization su
31fa0 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61  pport for unmana
31fb0 67 65 64 20 53 51 4c 69 74 65 20 62 6c 6f 62 20  ged SQLite blob 
31fc0 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e  objects...    in
31fd0 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
31fe0 61 73 73 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ass SQLiteBlobHa
31ff0 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48  ndle : CriticalH
32000 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69  andle..    {..#i
32010 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
32020 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
32030 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65       internal re
32040 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79  adonly object sy
32050 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
32060 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ect();..#endif..
32070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
320d0 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65  vate SQLiteConne
320e0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b  ctionHandle cnn;
320f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32140 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
32150 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70  ublic static imp
32160 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49  licit operator I
32170 6e 74 50 74 72 28 53 51 4c 69 74 65 42 6c 6f 62  ntPtr(SQLiteBlob
32180 48 61 6e 64 6c 65 20 62 6c 6f 62 29 0d 0a 20 20  Handle blob)..  
32190 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
321a0 20 20 20 20 20 69 66 20 28 62 6c 6f 62 20 21 3d       if (blob !=
321b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
321c0 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
321d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
321e0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
321f0 20 20 20 20 20 20 6c 6f 63 6b 20 28 62 6c 6f 62        lock (blob
32200 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  .syncRoot)..#end
32210 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
32220 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32230 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32240 6e 20 62 6c 6f 62 2e 68 61 6e 64 6c 65 3b 0d 0a  n blob.handle;..
32250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32260 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
32270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
32280 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
32290 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
322a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
322b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
322f0 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
32300 6e 61 6c 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  nal SQLiteBlobHa
32310 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ndle(SQLiteConne
32320 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c  ctionHandle cnn,
32330 20 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20   IntPtr blob).. 
32340 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
32350 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
32360 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
32370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
32380 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
32390 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
323a0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
323b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
323c0 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
323d0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
323e0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 6c      SetHandle(bl
323f0 6f 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ob);..          
32400 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
32410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32460 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
32470 76 61 74 65 20 53 51 4c 69 74 65 42 6c 6f 62 48  vate SQLiteBlobH
32480 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
32490 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
324a0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
324b0 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
324c0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
324d0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
324e0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
324f0 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74  ugData.blobCount
32500 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
32510 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32520 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32560 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32570 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
32580 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65  erride bool Rele
32590 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  aseHandle()..   
325a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
325b0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
325c0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
325d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
325e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
325f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 6c          IntPtr l
32600 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74  ocalHandle = Int
32610 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67  erlocked.Exchang
32620 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
32630 20 20 20 20 20 20 20 20 72 65 66 20 68 61 6e 64          ref hand
32640 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  le, IntPtr.Zero)
32650 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32660 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
32670 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
32680 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
32690 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
326a0 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63  Base.CloseBlob(c
326b0 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29  nn, localHandle)
326c0 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
326d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
326e0 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  E_HANDLE..      
326f0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
32700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
32710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32720 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
32730 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
32740 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
32750 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32760 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
32770 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
32780 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
32790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327a0 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b 30 7d 22  "CloseBlob: {0}"
327b0 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b  , localHandle));
327c0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
327d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
327e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
327f0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
32800 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32810 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
32820 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ndif..#else..   
32830 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
32840 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
32850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
32860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32870 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 20       if (handle 
32880 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
32890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
328a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
328b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
328c0 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65  SQLiteBase.Close
328d0 42 6c 6f 62 28 63 6e 6e 2c 20 68 61 6e 64 6c 65  Blob(cnn, handle
328e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
328f0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48              SetH
32900 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72  andle(IntPtr.Zer
32910 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
32920 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32930 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
32940 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54  endif..#if COUNT
32950 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
32960 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f           Interlo
32970 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
32980 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f  ef DebugData.blo
32990 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  bCount);..#endif
329a0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
329b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
329c0 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
329d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
329e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
329f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
32a00 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
32a10 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
32a20 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
32a30 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
32a40 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
32a50 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66  ception)..#endif
32a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32a70 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
32a80 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41  T_20 && TRACE_HA
32a90 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20  NDLE..          
32aa0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
32ab0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ad0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
32ae0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
32af0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
32b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b10 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
32b20 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
32b30 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32b40 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f              "Clo
32b50 73 65 42 6c 6f 62 3a 20 7b 30 7d 2c 20 65 78 63  seBlob: {0}, exc
32b60 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
32b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b80 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
32b90 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
32ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32bb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32bc0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
32bd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32bf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
32c00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32c10 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
32c20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
32c30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
32c40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
32c50 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
32c60 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
32c70 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
32c80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32c90 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
32ca0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
32cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32cc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32cd0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
32ce0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32cf0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
32d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
32d10 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
32d20 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
32d30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32d80 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
32d90 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
32da0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
32db0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
32dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32dd0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
32de0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
32df0 20 44 65 62 75 67 44 61 74 61 2e 62 6c 6f 62 43   DebugData.blobC
32e00 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ount);..        
32e10 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
32e20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32e70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
32e80 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49 73 49  verride bool IsI
32e90 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20 20 20  nvalid..        
32ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
32eb0 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
32ec0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
32ed0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
32ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32ef0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
32f00 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
32f10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f30 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64 6c 65    return (handle
32f40 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
32f50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32f60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32f70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
32f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fd0 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  /....#if DEBUG..
32fe0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
32ff0 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
33000 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
33010 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
33020 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
33030 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
33040 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
33050 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
33060 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33070 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
33080 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e 67 28  handle.ToString(
33090 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
330a0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  }..        }..#e
330b0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  ndif..    }..   
330c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..