System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ed3a17592fe1c57d2d6cdafda292ff469a3f5fd5:


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 70 72 65 70 61 72 69 6e 67 20 61 20 71 75 65   preparing a que
4e20: 72 79 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ry should be log
4e30: 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ged...      /// 
4e40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4e50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4e60: 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20  e="flags">..    
4e70: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4e80: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4e90: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
4ea0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
4eb0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4ec0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
4ed0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
4ee0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
4ef0: 65 20 71 75 65 72 79 20 70 72 65 70 61 72 61 74  e query preparat
4f00: 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ion should be lo
4f10: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
4f20: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
4f30: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4f40: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4f50: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50 72 65 70  tic bool LogPrep
4f60: 61 72 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  are(..          
4f70: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
4f80: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
4f90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4fa0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
4fb0: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
4fc0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50  ectionFlags.LogP
4fd0: 72 65 70 61 72 65 3b 0d 0a 20 20 20 20 20 20 20  repare;..       
4fe0: 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73     return (flags
4ff0: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
5000: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 50 72 65  tionFlags.LogPre
5010: 70 61 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  pare);..      }.
5020: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5070: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
5080: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5090: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
50a0: 20 70 72 65 2d 70 61 72 61 6d 65 74 65 72 20 62   pre-parameter b
50b0: 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  inding should be
50c0: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
50d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
50e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
50f0: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
5100: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
5110: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
5120: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5130: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5140: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5150: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5160: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5170: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5180: 66 20 74 68 65 20 70 72 65 2d 70 61 72 61 6d 65  f the pre-parame
5190: 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f 75  ter binding shou
51a0: 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74  ld be logged; ot
51b0: 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
51c0: 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
51d0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
51e0: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
51f0: 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 50  static bool LogP
5200: 72 65 42 69 6e 64 28 0d 0a 20 20 20 20 20 20 20  reBind(..       
5210: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5220: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
5230: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5240: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5250: 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43  flags &= SQLiteC
5260: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5270: 6f 67 50 72 65 42 69 6e 64 3b 0d 0a 20 20 20 20  ogPreBind;..    
5280: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c        return (fl
5290: 61 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  ags == SQLiteCon
52a0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
52b0: 50 72 65 42 69 6e 64 29 3b 0d 0a 20 20 20 20 20  PreBind);..     
52c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5320: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5330: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
5340: 20 69 66 20 70 61 72 61 6d 65 74 65 72 20 62 69   if parameter bi
5350: 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20  nding should be 
5360: 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f  logged...      /
5370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5380: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
5390: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
53a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61       /// The fla
53b0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
53c0: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
53d0: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
53e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
53f0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5400: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
5410: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
5420: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 62   the parameter b
5430: 69 6e 64 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  inding should be
5440: 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69   logged; otherwi
5450: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  se, zero...     
5460: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
5470: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
5480: 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42  static bool LogB
5490: 69 6e 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ind(..          
54a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
54b0: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
54c0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
54d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61  {..          fla
54e0: 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs &= SQLiteConn
54f0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42  ectionFlags.LogB
5500: 69 6e 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ind;..          
5510: 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d  return (flags ==
5520: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
5530: 6e 46 6c 61 67 73 2e 4c 6f 67 42 69 6e 64 29 3b  nFlags.LogBind);
5540: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5550: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
55a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
55b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
55c0: 65 72 6d 69 6e 65 73 20 69 66 20 61 6e 20 65 78  ermines if an ex
55d0: 63 65 70 74 69 6f 6e 20 69 6e 20 61 20 6e 61 74  ception in a nat
55e0: 69 76 65 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f  ive callback sho
55f0: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
5600: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5610: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5620: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
5630: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
5640: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
5650: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
5660: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
5670: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
5680: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
5690: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
56a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
56b0: 7a 65 72 6f 20 69 66 20 74 68 65 20 65 78 63 65  zero if the exce
56c0: 70 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20  ption should be 
56d0: 6c 6f 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73  logged; otherwis
56e0: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
56f0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
5700: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
5710: 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 43 61  tatic bool LogCa
5720: 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 73  llbackExceptions
5730: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c  (..          SQL
5740: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
5750: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
5760: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
5770: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
5780: 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  &= SQLiteConnect
5790: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c  ionFlags.LogCall
57a0: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 3b 0d 0a  backException;..
57b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
57c0: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
57d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
57e0: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
57f0: 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ption);..      }
5800: 0d 0a 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5850: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5860: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5870: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5880: 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72  f backup API err
5890: 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ors should be lo
58a0: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
58b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
58c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
58d0: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
58e0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
58f0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5900: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5910: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5920: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5930: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5940: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5950: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5960: 68 65 20 62 61 63 6b 75 70 20 41 50 49 20 65 72  he backup API er
5970: 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ror should be lo
5980: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
5990: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
59a0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
59b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
59c0: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b  tic bool LogBack
59d0: 75 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  up(..          S
59e0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
59f0: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
5a00: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
5a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
5a20: 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  s &= SQLiteConne
5a30: 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61  ctionFlags.LogBa
5a40: 63 6b 75 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  ckup;..         
5a50: 20 72 65 74 75 72 6e 20 28 66 6c 61 67 73 20 3d   return (flags =
5a60: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
5a70: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b 75  onFlags.LogBacku
5a80: 70 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  p);..      }....
5a90: 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
5aa0: 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20  UAL_TABLE..     
5ab0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
5b00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5b10: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
5b20: 6d 69 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e 67  mines if logging
5b30: 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72   for the <see cr
5b40: 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
5b50: 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a 20  " /> class is.. 
5b60: 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c 65       /// disable
5b70: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
5b80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5b90: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5ba0: 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20 20  "flags">..      
5bb0: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73  /// The flags as
5bc0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
5bd0: 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
5be0: 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  ion object...   
5bf0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
5c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
5c10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
5c20: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67 67  Non-zero if logg
5c30: 69 6e 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65  ing for the <see
5c40: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
5c50: 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73  ule" /> class is
5c60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61  ..      /// disa
5c70: 62 6c 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  bled; otherwise,
5c80: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
5c90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
5ca0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5cb0: 74 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d 6f  tic bool NoLogMo
5cc0: 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
5cd0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
5ce0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
5cf0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
5d00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c   {..          fl
5d10: 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f 6e  ags &= SQLiteCon
5d20: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c  nectionFlags.NoL
5d30: 6f 67 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  ogModule;..     
5d40: 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 6c 61       return (fla
5d50: 67 73 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  gs == SQLiteConn
5d60: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f  ectionFlags.NoLo
5d70: 67 4d 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20  gModule);..     
5d80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5de0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5df0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
5e00: 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   if <see cref="S
5e10: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
5e20: 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65  errors should be
5e30: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
5e40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5e50: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
5e60: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
5e70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
5e80: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
5e90: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5ea0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5eb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5ec0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5ed0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5ee0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5ef0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
5f00: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
5f10: 3e 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62  > error should b
5f20: 65 20 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20  e logged;..     
5f30: 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20   /// otherwise, 
5f40: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
5f50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
5f60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
5f70: 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c  ic bool LogModul
5f80: 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
5f90: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5fa0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
5fb0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5fc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5fd0: 66 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43  flags &= SQLiteC
5fe0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
5ff0: 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 3b 0d 0a  ogModuleError;..
6000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6010: 20 28 66 6c 61 67 73 20 3d 3d 20 53 51 4c 69 74   (flags == SQLit
6020: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
6030: 2e 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 29  .LogModuleError)
6040: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
6050: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
60a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
60b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65  y>..      /// De
60c0: 74 65 72 6d 69 6e 65 73 20 69 66 20 3c 73 65 65  termines if <see
60d0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
60e0: 75 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69 6f  ule" /> exceptio
60f0: 6e 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20  ns should be..  
6100: 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d      /// logged..
6110: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
6120: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6130: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
6140: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
6150: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
6160: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
6170: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
6180: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
6190: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
61a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
61b0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
61c0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
61d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
61e0: 64 75 6c 65 22 20 2f 3e 20 65 78 63 65 70 74 69  dule" /> excepti
61f0: 6f 6e 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20  on should be..  
6200: 20 20 20 20 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20      /// logged; 
6210: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
6220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
6230: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
6240: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
6250: 6f 6c 20 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65  ol LogModuleExce
6260: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
6270: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
6280: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
6290: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
62a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66    {..          f
62b0: 6c 61 67 73 20 26 3d 20 53 51 4c 69 74 65 43 6f  lags &= SQLiteCo
62c0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
62d0: 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e  gModuleException
62e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ;..          ret
62f0: 75 72 6e 20 28 66 6c 61 67 73 20 3d 3d 20 53 51  urn (flags == SQ
6300: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
6310: 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c 65 45 78 63  ags.LogModuleExc
6320: 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  eption);..      
6330: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
6340: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
6390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
63a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
63b0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 63  ermines if the c
63c0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 69  urrent process i
63d0: 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 6f 6e 65  s running on one
63e0: 20 6f 66 20 74 68 65 20 57 69 6e 64 6f 77 73 0d   of the Windows.
63f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 5b 73 75 62 2d  .      /// [sub-
6400: 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d 0a 20 20 20  ]platforms...   
6410: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6420: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
6430: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
6440: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77 68 65 6e 20  / Non-zero when 
6450: 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f  running on Windo
6460: 77 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a  ws; otherwise, z
6470: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ero...      /// 
6480: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
6490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
64a0: 63 20 62 6f 6f 6c 20 49 73 57 69 6e 64 6f 77 73  c bool IsWindows
64b0: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
64c0: 20 20 20 20 20 20 20 50 6c 61 74 66 6f 72 6d 49         PlatformI
64d0: 44 20 70 6c 61 74 66 6f 72 6d 49 64 20 3d 20 45  D platformId = E
64e0: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f 53 56 65 72  nvironment.OSVer
64f0: 73 69 6f 6e 2e 50 6c 61 74 66 6f 72 6d 3b 0d 0a  sion.Platform;..
6500: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
6510: 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50  (platformId == P
6520: 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 53  latformID.Win32S
6530: 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
6540: 20 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20      (platformId 
6550: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
6560: 6e 33 32 57 69 6e 64 6f 77 73 29 20 7c 7c 0d 0a  n32Windows) ||..
6570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
6580: 6c 61 74 66 6f 72 6d 49 64 20 3d 3d 20 50 6c 61  latformId == Pla
6590: 74 66 6f 72 6d 49 44 2e 57 69 6e 33 32 4e 54 29  tformID.Win32NT)
65a0: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
65b0: 20 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d     (platformId =
65c0: 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e  = PlatformID.Win
65d0: 43 45 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  CE))..          
65e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
65f0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
6600: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
6610: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
6620: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alse;..      }..
6630: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
6690: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
66a0: 2f 20 54 68 69 73 20 69 73 20 61 20 77 72 61 70  / This is a wrap
66b0: 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 0d 0a  per around the..
66c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
66d0: 72 65 66 3d 22 53 74 72 69 6e 67 2e 46 6f 72 6d  ref="String.Form
66e0: 61 74 28 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  at(IFormatProvid
66f0: 65 72 2c 53 74 72 69 6e 67 2c 4f 62 6a 65 63 74  er,String,Object
6700: 5b 5d 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  [])" /> method..
6710: 0a 20 20 20 20 20 20 2f 2f 2f 20 4f 6e 20 4d 6f  .      /// On Mo
6720: 6e 6f 2c 20 69 74 20 68 61 73 20 74 6f 20 63 61  no, it has to ca
6730: 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 20 6f 76  ll the method ov
6740: 65 72 6c 6f 61 64 20 77 69 74 68 6f 75 74 20 74  erload without t
6750: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
6760: 65 65 20 63 72 65 66 3d 22 49 46 6f 72 6d 61 74  ee cref="IFormat
6770: 50 72 6f 76 69 64 65 72 22 20 2f 3e 20 70 61 72  Provider" /> par
6780: 61 6d 65 74 65 72 2c 20 64 75 65 20 74 6f 20 61  ameter, due to a
6790: 20 62 75 67 20 69 6e 20 4d 6f 6e 6f 2e 0d 0a 20   bug in Mono... 
67a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
67b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
67c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76  param name="prov
67d0: 69 64 65 72 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ider">..      //
67e0: 2f 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66  / This is used f
67f0: 6f 72 20 63 75 6c 74 75 72 65 2d 73 70 65 63 69  or culture-speci
6800: 66 69 63 20 66 6f 72 6d 61 74 74 69 6e 67 2e 0d  fic formatting..
6810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
6820: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
6830: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d  param name="form
6840: 61 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  at">..      /// 
6850: 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  The format strin
6860: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
6870: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
6880: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
6890: 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rgs">..      ///
68a0: 20 41 6e 20 61 72 72 61 79 20 74 68 65 20 6f 62   An array the ob
68b0: 6a 65 63 74 73 20 74 6f 20 66 6f 72 6d 61 74 2e  jects to format.
68c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
68d0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
68e0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
68f0: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
6900: 6e 67 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  ng string...    
6910: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
6920: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
6930: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53   static string S
6940: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
6950: 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50          IFormatP
6960: 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65 72  rovider provider
6970: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ,..          str
6980: 69 6e 67 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20  ing format,..   
6990: 20 20 20 20 20 20 20 70 61 72 61 6d 73 20 6f 62         params ob
69a0: 6a 65 63 74 5b 5d 20 61 72 67 73 0d 0a 20 20 20  ject[] args..   
69b0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
69c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
69d0: 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a 20 20 20 20  (IsMono())..    
69e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
69f0: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 66   String.Format(f
6a00: 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20  ormat, args);.. 
6a10: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
6a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6a30: 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  urn String.Forma
6a40: 74 28 70 72 6f 76 69 64 65 72 2c 20 66 6f 72 6d  t(provider, form
6a50: 61 74 2c 20 61 72 67 73 29 3b 0d 0a 20 20 20 20  at, args);..    
6a60: 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
6a70: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6ad0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
6ae0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
6af0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
6b00: 72 69 6e 67 20 54 6f 44 69 73 70 6c 61 79 53 74  ring ToDisplaySt
6b10: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
6b20: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
6b30: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6b40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
6b50: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
6b60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6b70: 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 4e   return DisplayN
6b80: 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20  ullObject;....  
6b90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
6ba0: 74 72 69 6e 67 56 61 6c 75 65 20 3d 20 76 61 6c  tringValue = val
6bb0: 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  ue.ToString();..
6bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
6bd0: 73 74 72 69 6e 67 56 61 6c 75 65 2e 4c 65 6e 67  stringValue.Leng
6be0: 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  th == 0)..      
6bf0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
6c00: 69 73 70 6c 61 79 45 6d 70 74 79 53 74 72 69 6e  isplayEmptyStrin
6c10: 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  g;....          
6c20: 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e  if (stringValue.
6c30: 49 6e 64 65 78 4f 66 41 6e 79 28 53 70 61 63 65  IndexOfAny(Space
6c40: 43 68 61 72 73 29 20 3c 20 30 29 0d 0a 20 20 20  Chars) < 0)..   
6c50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6c60: 6e 20 73 74 72 69 6e 67 56 61 6c 75 65 3b 0d 0a  n stringValue;..
6c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
6c80: 72 6e 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  rn HelperMethods
6c90: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
6cb0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
6cc0: 61 6e 74 43 75 6c 74 75 72 65 2c 20 44 69 73 70  antCulture, Disp
6cd0: 6c 61 79 53 74 72 69 6e 67 46 6f 72 6d 61 74 2c  layStringFormat,
6ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6cf0: 73 74 72 69 6e 67 56 61 6c 75 65 29 3b 0d 0a 20  stringValue);.. 
6d00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6d60: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
6d70: 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c 61   string ToDispla
6d80: 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  yString(..      
6d90: 20 20 20 20 41 72 72 61 79 20 61 72 72 61 79 0d      Array array.
6da0: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
6db0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6dc0: 20 69 66 20 28 61 72 72 61 79 20 3d 3d 20 6e 75   if (array == nu
6dd0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6de0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
6df0: 79 4e 75 6c 6c 41 72 72 61 79 3b 0d 0a 0d 0a 20  yNullArray;.... 
6e00: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72           if (arr
6e10: 61 79 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d  ay.Length == 0).
6e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
6e30: 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
6e40: 74 79 41 72 72 61 79 3b 0d 0a 0d 0a 20 20 20 20  tyArray;....    
6e50: 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c        StringBuil
6e60: 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  der result = new
6e70: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
6e80: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
6e90: 6f 72 65 61 63 68 20 28 6f 62 6a 65 63 74 20 76  oreach (object v
6ea0: 61 6c 75 65 20 69 6e 20 61 72 72 61 79 29 0d 0a  alue in array)..
6eb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6ec0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
6ed0: 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30  esult.Length > 0
6ee0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6ef0: 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65       result.Appe
6f00: 6e 64 28 45 6c 65 6d 65 6e 74 53 65 70 61 72 61  nd(ElementSepara
6f10: 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tor);....       
6f20: 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
6f30: 70 65 6e 64 28 54 6f 44 69 73 70 6c 61 79 53 74  pend(ToDisplaySt
6f40: 72 69 6e 67 28 76 61 6c 75 65 29 29 3b 0d 0a 20  ring(value));.. 
6f50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
6f60: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75          if (resu
6f70: 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a  lt.Length > 0)..
6f80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
6f90: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
6fa0: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
6fb0: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
6fc0: 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79  .Insert(0, Array
6fd0: 4f 70 65 6e 2e 54 6f 53 74 72 69 6e 67 28 29 29  Open.ToString())
6fe0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
6ff0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 49          result.I
7000: 6e 73 65 72 74 28 30 2c 20 41 72 72 61 79 4f 70  nsert(0, ArrayOp
7010: 65 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  en);..#endif....
7020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7030: 73 75 6c 74 2e 41 70 70 65 6e 64 28 41 72 72 61  sult.Append(Arra
7040: 79 43 6c 6f 73 65 29 3b 0d 0a 20 20 20 20 20 20  yClose);..      
7050: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7060: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
7070: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
7080: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
7090: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20  dregion..  }..  
70a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7100: 0a 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76  .  #region Nativ
7110: 65 20 4c 69 62 72 61 72 79 20 48 65 6c 70 65 72  e Library Helper
7120: 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f 20 3c 73   Class..  /// <s
7130: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
7140: 68 69 73 20 73 74 61 74 69 63 20 63 6c 61 73 73  his static class
7150: 20 70 72 6f 76 69 64 65 73 20 61 20 74 68 69 6e   provides a thin
7160: 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
7170: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
7180: 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f 61 64 69 6e  ry..  /// loadin
7190: 67 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68  g features of th
71a0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 70 6c 61  e underlying pla
71b0: 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  tform...  /// </
71c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65  summary>..  inte
71d0: 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
71e0: 73 20 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48  s NativeLibraryH
71f0: 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a 20 20 20 20  elper..  {..    
7200: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
7210: 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20  e Delegates..   
7220: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7230: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
7240: 20 64 65 6c 65 67 61 74 65 20 69 73 20 75 73 65   delegate is use
7250: 64 20 74 6f 20 77 72 61 70 20 74 68 65 20 63 6f  d to wrap the co
7260: 6e 63 65 70 74 20 6f 66 20 6c 6f 61 64 69 6e 67  ncept of loading
7270: 20 61 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20   a native..     
7280: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2c 20 62 61   /// library, ba
7290: 73 65 64 20 6f 6e 20 61 20 66 69 6c 65 20 6e 61  sed on a file na
72a0: 6d 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 69 6e  me, and returnin
72b0: 67 20 74 68 65 20 6c 6f 61 64 65 64 20 6d 6f 64  g the loaded mod
72c0: 75 6c 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  ule..      /// h
72d0: 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  andle...      //
72e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
72f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7300: 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d  ame="fileName">.
7310: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  .      /// The f
7320: 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ile name of the 
7330: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74  native library t
7340: 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o load...      /
7350: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7360: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7370: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
7380: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
7390: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
73a0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
73b0: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
73c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
73d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
73e0: 61 74 65 20 64 65 6c 65 67 61 74 65 20 49 6e 74  ate delegate Int
73f0: 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 43  Ptr LoadLibraryC
7400: 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  allback(..      
7410: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
7420: 61 6d 65 0d 0a 20 20 20 20 20 20 29 3b 0d 0a 0d  ame..      );...
7430: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
7490: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
74a0: 2f 2f 20 54 68 69 73 20 64 65 6c 65 67 61 74 65  // This delegate
74b0: 20 69 73 20 75 73 65 64 20 74 6f 20 77 72 61 70   is used to wrap
74c0: 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 20   the concept of 
74d0: 71 75 65 72 79 69 6e 67 20 74 68 65 20 6d 61 63  querying the mac
74e0: 68 69 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hine..      /// 
74f0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75 72 72  name of the curr
7500: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
7510: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7520: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
7530: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
7540: 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65 20 6e  // The machine n
7550: 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75 72 72  ame for the curr
7560: 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
7570: 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75 72 65   null on failure
7580: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7590: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
75a0: 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65 20  rivate delegate 
75b0: 73 74 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e  string GetMachin
75c0: 65 43 61 6c 6c 62 61 63 6b 28 29 3b 0d 0a 20 20  eCallback();..  
75d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
75e0: 0d 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7630: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
7640: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
7650: 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ds..      /// <s
7660: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7670: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
7680: 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69 65  oad the specifie
7690: 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  d native library
76a0: 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20   file using the 
76b0: 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 2f 2f 2f  Win32..      ///
76c0: 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   API...      ///
76d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
76e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
76f0: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
7700: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
7710: 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  le name of the n
7720: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f  ative library to
7730: 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   load...      //
7740: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7750: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
7760: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  .      /// The n
7770: 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e  ative module han
7780: 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73  dle upon success
7790: 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72   -OR- IntPtr.Zer
77a0: 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  o on failure... 
77b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
77c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ns>..      priva
77d0: 74 65 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  te static IntPtr
77e0: 20 4c 6f 61 64 4c 69 62 72 61 72 79 57 69 6e 33   LoadLibraryWin3
77f0: 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  2(..          st
7800: 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  ring fileName.. 
7810: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
7820: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
7830: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
7840: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 4c  veMethodsWin32.L
7850: 6f 61 64 4c 69 62 72 61 72 79 28 66 69 6c 65 4e  oadLibrary(fileN
7860: 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ame);..      }..
7870: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
78d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
78e0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
78f0: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
7900: 63 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68  chine name of th
7910: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
7920: 73 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20 2f  s using..      /
7930: 2f 2f 20 74 68 65 20 57 69 6e 33 32 20 41 50 49  // the Win32 API
7940: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
7950: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7960: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7970: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68      /// The mach
7980: 69 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ine name for the
7990: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
79a0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61   -OR- null on fa
79b0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
79c0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
79d0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
79e0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63  ic string GetMac
79f0: 68 69 6e 65 57 69 6e 33 32 28 29 0d 0a 20 20 20  hineWin32()..   
7a00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7a10: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
7a20: 20 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e   NOTE: When runn
7a30: 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 2c 20  ing on Windows, 
7a40: 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
7a50: 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33 32 0d  he native Win32.
7a60: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
7a70: 20 20 20 20 41 50 49 20 66 75 6e 63 74 69 6f 6e      API function
7a80: 20 28 76 69 61 20 50 2f 49 6e 76 6f 6b 65 29 20   (via P/Invoke) 
7a90: 74 68 61 74 20 63 61 6e 20 70 72 6f 76 69 64 65  that can provide
7aa0: 20 75 73 20 77 69 74 68 20 74 68 65 0d 0a 20 20   us with the..  
7ab0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7ac0: 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
7ad0: 74 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  tecture...      
7ae0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7af0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
7b00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7b10: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
7b20: 74 68 6f 64 73 57 69 6e 33 32 2e 53 59 53 54 45  thodsWin32.SYSTE
7b30: 4d 5f 49 4e 46 4f 20 73 79 73 74 65 6d 49 6e 66  M_INFO systemInf
7b40: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
7b50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7b60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 51        // NOTE: Q
7b70: 75 65 72 79 20 74 68 65 20 73 79 73 74 65 6d 20  uery the system 
7b80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 76 69 61 20  information via 
7b90: 50 2f 49 6e 76 6f 6b 65 2c 20 74 68 75 73 0d 0a  P/Invoke, thus..
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7bb0: 20 20 20 20 20 20 20 66 69 6c 6c 69 6e 67 20 74         filling t
7bc0: 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  he structure... 
7bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
7be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55  .              U
7bf0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7c00: 64 73 57 69 6e 33 32 2e 47 65 74 53 79 73 74 65  dsWin32.GetSyste
7c10: 6d 49 6e 66 6f 28 6f 75 74 20 73 79 73 74 65 6d  mInfo(out system
7c20: 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Info);....      
7c30: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7c40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
7c50: 45 3a 20 52 65 74 75 72 6e 20 74 68 65 20 70 72  E: Return the pr
7c60: 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
7c70: 74 75 72 65 20 76 61 6c 75 65 20 61 73 20 61 20  ture value as a 
7c80: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
7c90: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7ca0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7cb0: 73 79 73 74 65 6d 49 6e 66 6f 2e 77 50 72 6f 63  systemInfo.wProc
7cc0: 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
7cd0: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
7ce0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
7cf0: 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
7d00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7d10: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
7d20: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
7d30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7d40: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7d50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
7db0: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
7dc0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
7dd0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7de0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65  ..      /// Atte
7df0: 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74 68 65  mpts to load the
7e00: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
7e10: 65 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 75  e library file u
7e20: 73 69 6e 67 20 74 68 65 20 50 4f 53 49 58 0d 0a  sing the POSIX..
7e30: 20 20 20 20 20 20 2f 2f 2f 20 41 50 49 2e 0d 0a        /// API...
7e40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7e50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7e60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
7e70: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
7e80: 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d 65  // The file name
7e90: 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c   of the native l
7ea0: 69 62 72 61 72 79 20 74 6f 20 6c 6f 61 64 2e 0d  ibrary to load..
7eb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
7ec0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7ed0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7ee0: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
7ef0: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
7f00: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
7f10: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
7f20: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
7f30: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7f40: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
7f50: 69 63 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69  ic IntPtr LoadLi
7f60: 62 72 61 72 79 50 6f 73 69 78 28 0d 0a 20 20 20  braryPosix(..   
7f70: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
7f80: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
7f90: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
7fa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
7fb0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
7fc0: 64 73 50 6f 73 69 78 2e 64 6c 6f 70 65 6e 28 0d  dsPosix.dlopen(.
7fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
7fe0: 69 6c 65 4e 61 6d 65 2c 20 55 6e 73 61 66 65 4e  ileName, UnsafeN
7ff0: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
8000: 78 2e 52 54 4c 44 5f 44 45 46 41 55 4c 54 29 3b  x.RTLD_DEFAULT);
8010: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
8020: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8070: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8080: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
8090: 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65 72  ttempts to deter
80a0: 6d 69 6e 65 20 74 68 65 20 6d 61 63 68 69 6e 65  mine the machine
80b0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75 72   name of the cur
80c0: 72 65 6e 74 20 70 72 6f 63 65 73 73 20 75 73 69  rent process usi
80d0: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
80e0: 65 20 50 4f 53 49 58 20 41 50 49 2e 0d 0a 20 20  e POSIX API...  
80f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8100: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
8110: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
8120: 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65 20 6e  // The machine n
8130: 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75 72 72  ame for the curr
8140: 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d  ent process -OR-
8150: 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75 72 65   null on failure
8160: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
8170: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
8180: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
8190: 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e 65 50  ring GetMachineP
81a0: 6f 73 69 78 28 29 0d 0a 20 20 20 20 20 20 7b 0d  osix()..      {.
81b0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
81c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
81d0: 3a 20 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  : When running o
81e0: 6e 20 50 4f 53 49 58 20 28 6e 6f 6e 2d 57 69 6e  n POSIX (non-Win
81f0: 64 6f 77 73 29 2c 20 61 74 74 65 6d 70 74 20 74  dows), attempt t
8200: 6f 20 71 75 65 72 79 20 74 68 65 0d 0a 20 20 20  o query the..   
8210: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
8220: 6d 61 63 68 69 6e 65 20 66 72 6f 6d 20 74 68 65  machine from the
8230: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
8240: 6d 20 76 69 61 20 75 6e 61 6d 65 28 29 2e 0d 0a  m via uname()...
8250: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
8260: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8270: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8280: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
8290: 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69 78  tiveMethodsPosix
82a0: 2e 75 74 73 6e 61 6d 65 20 75 74 73 4e 61 6d 65  .utsname utsName
82b0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
82c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 55 6e            if (Un
82d0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
82e0: 73 50 6f 73 69 78 2e 47 65 74 4f 73 56 65 72 73  sPosix.GetOsVers
82f0: 69 6f 6e 49 6e 66 6f 28 72 65 66 20 75 74 73 4e  ionInfo(ref utsN
8300: 61 6d 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ame) &&..       
8310: 20 20 20 20 20 20 20 20 20 20 20 28 75 74 73 4e             (utsN
8320: 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ame != null)).. 
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 72 65 74 75 72 6e 20 75 74 73 4e 61 6d 65    return utsName
8360: 2e 6d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20  .machine;..     
8370: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8380: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8390: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
83a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
83b0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
83c0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ng...          }
83d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
83e0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
83f0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
8400: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
8410: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
8420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8460: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
8470: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
8480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
8490: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
84a0: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61   Attempts to loa
84b0: 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  d the specified 
84c0: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66  native library f
84d0: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
84e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
84f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8500: 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20  e="fileName">.. 
8510: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
8520: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61  e name of the na
8530: 74 69 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20  tive library to 
8540: 6c 6f 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  load...      ///
8550: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8560: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
8570: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
8580: 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64  tive module hand
8590: 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20  le upon success 
85a0: 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  -OR- IntPtr.Zero
85b0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
85c0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
85d0: 73 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  s>..      public
85e0: 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c   static IntPtr L
85f0: 6f 61 64 4c 69 62 72 61 72 79 28 0d 0a 20 20 20  oadLibrary(..   
8600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
8610: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
8620: 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
8630: 20 20 20 20 20 20 20 20 4c 6f 61 64 4c 69 62 72          LoadLibr
8640: 61 72 79 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  aryCallback call
8650: 62 61 63 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61  back = LoadLibra
8660: 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20  ryWin32;....#if 
8670: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
8680: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8690: 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70 65        if (!Helpe
86a0: 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f  rMethods.IsWindo
86b0: 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ws())..         
86c0: 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20       callback = 
86d0: 4c 6f 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78  LoadLibraryPosix
86e0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
86f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
8700: 6c 6c 62 61 63 6b 28 66 69 6c 65 4e 61 6d 65 29  llback(fileName)
8710: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
8720: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8770: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8790: 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  Attempts to dete
87a0: 72 6d 69 6e 65 20 74 68 65 20 6d 61 63 68 69 6e  rmine the machin
87b0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75  e name of the cu
87c0: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
87d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
87e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
87f0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
8800: 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69 6e 65   /// The machine
8810: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 63 75   name for the cu
8820: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 2d 4f  rrent process -O
8830: 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69 6c 75  R- null on failu
8840: 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  re...      /// <
8850: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
8860: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
8870: 74 72 69 6e 67 20 47 65 74 4d 61 63 68 69 6e 65  tring GetMachine
8880: 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
8890: 20 20 20 20 20 20 20 47 65 74 4d 61 63 68 69 6e         GetMachin
88a0: 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
88b0: 63 6b 20 3d 20 47 65 74 4d 61 63 68 69 6e 65 57  ck = GetMachineW
88c0: 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  in32;....#if !PL
88d0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
88e0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
88f0: 20 20 20 69 66 20 28 21 48 65 6c 70 65 72 4d 65     if (!HelperMe
8900: 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73 28  thods.IsWindows(
8910: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
8920: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 47 65 74    callback = Get
8930: 4d 61 63 68 69 6e 65 50 6f 73 69 78 3b 0d 0a 23  MachinePosix;..#
8940: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
8950: 20 20 20 72 65 74 75 72 6e 20 63 61 6c 6c 62 61     return callba
8960: 63 6b 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ck();..      }..
8970: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8980: 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
8990: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
89f0: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
8a00: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
8a10: 61 74 69 63 20 43 6c 61 73 73 20 28 50 4f 53 49  atic Class (POSI
8a20: 58 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  X)..#if !PLATFOR
8a30: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8a40: 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  RK..  /// <summa
8a50: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
8a60: 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20 50  class declares P
8a70: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20  /Invoke methods 
8a80: 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 50  to call native P
8a90: 4f 53 49 58 20 41 50 49 73 2e 0d 0a 20 20 2f 2f  OSIX APIs...  //
8aa0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8ab0: 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67  [SuppressUnmanag
8ac0: 65 64 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d  edCodeSecurity].
8ad0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74  .  internal stat
8ae0: 69 63 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e  ic class UnsafeN
8af0: 61 74 69 76 65 4d 65 74 68 6f 64 73 50 6f 73 69  ativeMethodsPosi
8b00: 78 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  x..  {..      //
8b10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8b20: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75     /// This stru
8b30: 63 74 75 72 65 20 69 73 20 75 73 65 64 20 77 68  cture is used wh
8b40: 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 50 4f  en running on PO
8b50: 53 49 58 20 6f 70 65 72 61 74 69 6e 67 20 73 79  SIX operating sy
8b60: 73 74 65 6d 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  stems..      ///
8b70: 20 74 6f 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d   to store inform
8b80: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
8b90: 63 75 72 72 65 6e 74 20 6d 61 63 68 69 6e 65 2c  current machine,
8ba0: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 0d 0a   including the..
8bb0: 20 20 20 20 20 20 2f 2f 2f 20 68 75 6d 61 6e 20        /// human 
8bc0: 72 65 61 64 61 62 6c 65 20 6e 61 6d 65 20 6f 66  readable name of
8bd0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
8be0: 79 73 74 65 6d 20 61 73 20 77 65 6c 6c 20 61 73  ystem as well as
8bf0: 20 74 68 61 74 20 6f 66 0d 0a 20 20 20 20 20 20   that of..      
8c00: 2f 2f 2f 20 74 68 65 20 75 6e 64 65 72 6c 79 69  /// the underlyi
8c10: 6e 67 20 68 61 72 64 77 61 72 65 2e 0d 0a 20 20  ng hardware...  
8c20: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8c30: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
8c40: 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
8c50: 75 74 73 6e 61 6d 65 0d 0a 20 20 20 20 20 20 7b  utsname..      {
8c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
8c70: 69 63 20 73 74 72 69 6e 67 20 73 79 73 6e 61 6d  ic string sysnam
8c80: 65 3b 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74  e;  /* Name of t
8c90: 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  his implementati
8ca0: 6f 6e 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20  on of..         
8cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cc0: 20 20 20 20 20 20 20 20 20 20 2a 20 74 68 65 20            * the 
8cd0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
8ce0: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  . */..          
8cf0: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 6e 6f  public string no
8d00: 64 65 6e 61 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20  dename; /* Name 
8d10: 6f 66 20 74 68 69 73 20 6e 6f 64 65 20 77 69 74  of this node wit
8d20: 68 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hin the..       
8d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d40: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
8d50: 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 20 6e 65 74  mmunications net
8d60: 77 6f 72 6b 20 74 6f 20 77 68 69 63 68 0d 0a 20  work to which.. 
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d90: 20 20 2a 20 74 68 69 73 20 6e 6f 64 65 20 69 73    * this node is
8da0: 20 61 74 74 61 63 68 65 64 2c 20 69 66 20 61 6e   attached, if an
8db0: 79 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  y. */..         
8dc0: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 72   public string r
8dd0: 65 6c 65 61 73 65 3b 20 20 2f 2a 20 43 75 72 72  elease;  /* Curr
8de0: 65 6e 74 20 72 65 6c 65 61 73 65 20 6c 65 76 65  ent release leve
8df0: 6c 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20  l of this..     
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
8e20: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
8e30: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
8e40: 62 6c 69 63 20 73 74 72 69 6e 67 20 76 65 72 73  blic string vers
8e50: 69 6f 6e 3b 20 20 2f 2a 20 43 75 72 72 65 6e 74  ion;  /* Current
8e60: 20 76 65 72 73 69 6f 6e 20 6c 65 76 65 6c 20 6f   version level o
8e70: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  f this..        
8e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e90: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 6c             * rel
8ea0: 65 61 73 65 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ease. */..      
8eb0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
8ec0: 67 20 6d 61 63 68 69 6e 65 3b 20 20 2f 2a 20 4e  g machine;  /* N
8ed0: 61 6d 65 20 6f 66 20 74 68 65 20 68 61 72 64 77  ame of the hardw
8ee0: 61 72 65 20 74 79 70 65 20 6f 6e 0d 0a 20 20 20  are type on..   
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f10: 2a 20 77 68 69 63 68 20 74 68 65 20 73 79 73 74  * which the syst
8f20: 65 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 2a  em is running. *
8f30: 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  /..      }....  
8f40: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8f90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
8fa0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
8fb0: 54 68 69 73 20 73 74 72 75 63 74 75 72 65 20 69  This structure i
8fc0: 73 20 70 61 73 73 65 64 20 64 69 72 65 63 74 6c  s passed directl
8fd0: 79 20 74 6f 20 74 68 65 20 50 2f 49 6e 76 6f 6b  y to the P/Invok
8fe0: 65 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  e method to..   
8ff0: 20 20 20 2f 2f 2f 20 6f 62 74 61 69 6e 20 74 68     /// obtain th
9000: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  e information ab
9010: 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20  out the current 
9020: 6d 61 63 68 69 6e 65 2c 20 69 6e 63 6c 75 64 69  machine, includi
9030: 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  ng..      /// th
9040: 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65  e human readable
9050: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65   name of the ope
9060: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 73  rating system as
9070: 20 77 65 6c 6c 20 61 73 0d 0a 20 20 20 20 20 20   well as..      
9080: 2f 2f 2f 20 74 68 61 74 20 6f 66 20 74 68 65 20  /// that of the 
9090: 75 6e 64 65 72 6c 79 69 6e 67 20 68 61 72 64 77  underlying hardw
90a0: 61 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  are...      /// 
90b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
90c0: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
90d0: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
90e0: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 70  ntial)]..      p
90f0: 72 69 76 61 74 65 20 73 74 72 75 63 74 20 75 74  rivate struct ut
9100: 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 0d 0a 20  sname_interop.. 
9110: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9120: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9130: 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 66 6f 6c  // NOTE: The fol
9140: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 66 69  lowing string fi
9150: 65 6c 64 73 20 73 68 6f 75 6c 64 20 62 65 20 70  elds should be p
9160: 72 65 73 65 6e 74 20 69 6e 0d 0a 20 20 20 20 20  resent in..     
9170: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
9180: 69 73 20 62 75 66 66 65 72 2c 20 61 6c 6c 20 6f  is buffer, all o
9190: 66 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20  f which will be 
91a0: 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 3a  zero-terminated:
91b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
91c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
91d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91e0: 20 20 73 79 73 6e 61 6d 65 0d 0a 20 20 20 20 20    sysname..     
91f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
9200: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64               nod
9210: 65 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  ename..         
9220: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20   //             
9230: 20 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65           release
9240: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
9250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9260: 20 20 20 20 76 65 72 73 69 6f 6e 0d 0a 20 20 20      version..   
9270: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
9290: 61 63 68 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  achine..        
92a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
92b0: 5b 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e  [MarshalAs(Unman
92c0: 61 67 65 64 54 79 70 65 2e 42 79 56 61 6c 41 72  agedType.ByValAr
92d0: 72 61 79 2c 20 53 69 7a 65 43 6f 6e 73 74 20 3d  ray, SizeConst =
92e0: 20 34 30 39 36 29 5d 0d 0a 20 20 20 20 20 20 20   4096)]..       
92f0: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d     public byte[]
9300: 20 62 75 66 66 65 72 3b 0d 0a 20 20 20 20 20 20   buffer;..      
9310: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
9320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9360: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
9370: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9380: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
9390: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
93a0: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
93b0: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 75 6e  e native Unix un
93c0: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ame..      /// f
93d0: 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68  unction.  See th
93e0: 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74  e POSIX document
93f0: 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64  ation for full d
9400: 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69  etails on what i
9410: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65  t..      /// doe
9420: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9430: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9440: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9450: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  "name">..      /
9460: 2f 2f 20 53 74 72 75 63 74 75 72 65 20 63 6f 6e  // Structure con
9470: 74 61 69 6e 69 6e 67 20 61 20 70 72 65 61 6c 6c  taining a preall
9480: 6f 63 61 74 65 64 20 62 79 74 65 20 62 75 66 66  ocated byte buff
9490: 65 72 20 74 6f 20 66 69 6c 6c 20 77 69 74 68 20  er to fill with 
94a0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72  the..      /// r
94b0: 65 71 75 65 73 74 65 64 20 69 6e 66 6f 72 6d 61  equested informa
94c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
94d0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
94e0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
94f0: 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 20 66        /// Zero f
9500: 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 6c  or success and l
9510: 65 73 73 20 74 68 61 6e 20 7a 65 72 6f 20 75 70  ess than zero up
9520: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9530: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
9540: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
9550: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
9560: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 63 22 2c  llImport("libc",
9570: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 5b  ..#else..      [
9580: 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e 74  DllImport("__Int
9590: 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  ernal",..#endif.
95a0: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
95b0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
95c0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
95d0: 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 20 20  .Cdecl)]..      
95e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65  private static e
95f0: 78 74 65 72 6e 20 69 6e 74 20 75 6e 61 6d 65 28  xtern int uname(
9600: 6f 75 74 20 75 74 73 6e 61 6d 65 5f 69 6e 74 65  out utsname_inte
9610: 72 6f 70 20 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  rop name);....  
9620: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
9670: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9680: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
9690: 69 73 20 69 73 20 74 68 65 20 50 2f 49 6e 76 6f  is is the P/Invo
96a0: 6b 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 77  ke method that w
96b0: 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 65 20  raps the native 
96c0: 55 6e 69 78 20 64 6c 6f 70 65 6e 0d 0a 20 20 20  Unix dlopen..   
96d0: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
96e0: 20 20 53 65 65 20 74 68 65 20 50 4f 53 49 58 20    See the POSIX 
96f0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
9700: 72 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f  r full details o
9710: 6e 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20  n what it..     
9720: 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20   /// does...    
9730: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
9750: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
9760: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
9770: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
9780: 78 65 63 75 74 61 62 6c 65 20 6c 69 62 72 61 72  xecutable librar
9790: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
97a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
97b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
97c0: 6f 64 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ode">..      ///
97d0: 20 54 68 69 73 20 6d 75 73 74 20 62 65 20 61 20   This must be a 
97e0: 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74  combination of t
97f0: 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 62 69  he individual bi
9800: 74 20 66 6c 61 67 73 20 52 54 4c 44 5f 4c 41 5a  t flags RTLD_LAZ
9810: 59 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 54  Y,..      /// RT
9820: 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44 5f 47 4c 4f  LD_NOW, RTLD_GLO
9830: 42 41 4c 2c 20 61 6e 64 2f 6f 72 20 52 54 4c 44  BAL, and/or RTLD
9840: 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20 20 20 20 2f  _LOCAL...      /
9850: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9860: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
9870: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
9880: 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
9890: 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63 65 73  ndle upon succes
98a0: 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e 5a 65  s -OR- IntPtr.Ze
98b0: 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a  ro on failure...
98c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
98d0: 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54  rns>..#if NET_ST
98e0: 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20 20  ANDARD_20..     
98f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62   [DllImport("lib
9900: 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  dl",..#else..   
9910: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
9920: 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e  _Internal",..#en
9930: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 45  dif..          E
9940: 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c 6f  ntryPoint = "dlo
9950: 70 65 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  pen",..         
9960: 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
9970: 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
9980: 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68  ention.Cdecl, Ch
9990: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
99a0: 41 6e 73 69 2c 0d 0a 20 20 20 20 20 20 20 20 20  Ansi,..         
99b0: 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20   BestFitMapping 
99c0: 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e  = false, ThrowOn
99d0: 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d  UnmappableChar =
99e0: 20 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20   true,..        
99f0: 20 20 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d    SetLastError =
9a00: 20 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69   true)]..      i
9a10: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
9a20: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 64 6c 6f  xtern IntPtr dlo
9a30: 70 65 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e  pen(string fileN
9a40: 61 6d 65 2c 20 69 6e 74 20 6d 6f 64 65 29 3b 0d  ame, int mode);.
9a50: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9aa0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
9ab0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9ac0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50  // This is the P
9ad0: 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74  /Invoke method t
9ae0: 68 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61  hat wraps the na
9af0: 74 69 76 65 20 55 6e 69 78 20 64 6c 63 6c 6f 73  tive Unix dlclos
9b00: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  e..      /// fun
9b10: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
9b20: 50 4f 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74  POSIX documentat
9b30: 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74  ion for full det
9b40: 61 69 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d  ails on what it.
9b50: 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e  .      /// does.
9b60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9b70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9b80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
9b90: 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  odule">..      /
9ba0: 2f 2f 20 54 68 65 20 68 61 6e 64 6c 65 20 74 6f  // The handle to
9bb0: 20 74 68 65 20 6c 6f 61 64 65 64 20 6e 61 74 69   the loaded nati
9bc0: 76 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  ve library...   
9bd0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9be0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9bf0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9c00: 5a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  Zero upon succes
9c10: 73 20 2d 4f 52 2d 20 6e 6f 6e 2d 7a 65 72 6f 20  s -OR- non-zero 
9c20: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
9c30: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
9c40: 3e 0d 0a 23 69 66 20 4e 45 54 5f 53 54 41 4e 44  >..#if NET_STAND
9c50: 41 52 44 5f 32 30 0d 0a 20 20 20 20 20 20 5b 44  ARD_20..      [D
9c60: 6c 6c 49 6d 70 6f 72 74 28 22 6c 69 62 64 6c 22  llImport("libdl"
9c70: 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ,..#else..      
9c80: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f 5f 49 6e  [DllImport("__In
9c90: 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e 64 69 66  ternal",..#endif
9ca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 45 6e 74 72  ..          Entr
9cb0: 79 50 6f 69 6e 74 20 3d 20 22 64 6c 63 6c 6f 73  yPoint = "dlclos
9cc0: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 43  e",..          C
9cd0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9ce0: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9cf0: 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 53 65 74 4c  tion.Cdecl, SetL
9d00: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
9d10: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
9d20: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
9d30: 69 6e 74 20 64 6c 63 6c 6f 73 65 28 49 6e 74 50  int dlclose(IntP
9d40: 74 72 20 6d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  tr module);.... 
9d50: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9da0: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
9db0: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
9dc0: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  s..      /// <su
9dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9de0: 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68 20 64  / For use with d
9df0: 6c 6f 70 65 6e 28 29 2c 20 62 69 6e 64 20 66 75  lopen(), bind fu
9e00: 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 6c 61 7a  nction calls laz
9e10: 69 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ily...      /// 
9e20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9e30: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
9e40: 20 69 6e 74 20 52 54 4c 44 5f 4c 41 5a 59 20 3d   int RTLD_LAZY =
9e50: 20 30 78 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x1;....      /
9e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
9eb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9ec0: 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65       /// For use
9ed0: 20 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20   with dlopen(), 
9ee0: 62 69 6e 64 20 66 75 6e 63 74 69 6f 6e 20 63 61  bind function ca
9ef0: 6c 6c 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  lls immediately.
9f00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9f10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
9f20: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74  ternal const int
9f30: 20 52 54 4c 44 5f 4e 4f 57 20 3d 20 30 78 32 3b   RTLD_NOW = 0x2;
9f40: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
9f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
9fa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9fb0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
9fc0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6d 61 6b 65 20   dlopen(), make 
9fd0: 73 79 6d 62 6f 6c 73 20 67 6c 6f 62 61 6c 6c 79  symbols globally
9fe0: 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
9ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a000: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
a010: 6c 20 63 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44  l const int RTLD
a020: 5f 47 4c 4f 42 41 4c 20 3d 20 30 78 31 30 30 3b  _GLOBAL = 0x100;
a030: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
a090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a0a0: 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69 74 68  /// For use with
a0b0: 20 64 6c 6f 70 65 6e 28 29 2c 20 6f 70 70 6f 73   dlopen(), oppos
a0c0: 69 74 65 20 6f 66 20 52 54 4c 44 5f 47 4c 4f 42  ite of RTLD_GLOB
a0d0: 41 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61  AL, and the defa
a0e0: 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
a0f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a100: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
a110: 20 69 6e 74 20 52 54 4c 44 5f 4c 4f 43 41 4c 20   int RTLD_LOCAL 
a120: 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a 20 20 20 20  = 0x000;....    
a130: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
a180: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a190: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20  ..      /// For 
a1a0: 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e 28  use with dlopen(
a1b0: 29 2c 20 74 68 65 20 64 65 66 61 75 6c 74 73 20  ), the defaults 
a1c0: 75 73 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  used by this cla
a1d0: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
a1e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a1f0: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
a200: 69 6e 74 20 52 54 4c 44 5f 44 45 46 41 55 4c 54  int RTLD_DEFAULT
a210: 20 3d 20 52 54 4c 44 5f 4e 4f 57 20 7c 20 52 54   = RTLD_NOW | RT
a220: 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a 20 20 20 20  LD_GLOBAL;..    
a230: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a240: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a290: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a2a0: 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
a2b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a2c0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
a2d0: 65 73 65 20 61 72 65 20 74 68 65 20 63 68 61 72  ese are the char
a2e0: 61 63 74 65 72 73 20 75 73 65 64 20 74 6f 20 73  acters used to s
a2f0: 65 70 61 72 61 74 65 20 74 68 65 20 73 74 72 69  eparate the stri
a300: 6e 67 20 66 69 65 6c 64 73 20 77 69 74 68 69 6e  ng fields within
a310: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
a320: 72 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72  raw buffer retur
a330: 6e 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20  ned by the <see 
a340: 63 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20  cref="uname" /> 
a350: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e  P/Invoke method.
a360: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
a380: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
a390: 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 75 74 73  donly char[] uts
a3a0: 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73 20 3d  NameSeparators =
a3b0: 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a 20 20 20 20   { '\0' };..    
a3c0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a3d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a420: 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
a430: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
a440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a450: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a460: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
a470: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
a480: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
a490: 75 6e 61 6d 65 22 20 2f 3e 20 50 2f 49 6e 76 6f  uname" /> P/Invo
a4a0: 6b 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ke..      /// me
a4b0: 74 68 6f 64 20 74 68 61 74 20 65 78 74 72 61 63  thod that extrac
a4c0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
a4d0: 68 65 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  he human readabl
a4e0: 65 20 73 74 72 69 6e 67 73 20 66 72 6f 6d 0d 0a  e strings from..
a4f0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 61        /// the ra
a500: 77 20 62 75 66 66 65 72 2e 0d 0a 20 20 20 20 20  w buffer...     
a510: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
a530: 6d 20 6e 61 6d 65 3d 22 75 74 73 4e 61 6d 65 22  m name="utsName"
a540: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
a550: 73 20 73 74 72 75 63 74 75 72 65 2c 20 77 68 69  s structure, whi
a560: 63 68 20 63 6f 6e 74 61 69 6e 73 20 73 74 72 69  ch contains stri
a570: 6e 67 73 2c 20 77 69 6c 6c 20 62 65 20 66 69 6c  ngs, will be fil
a580: 6c 65 64 20 62 61 73 65 64 20 6f 6e 20 74 68 65  led based on the
a590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
a5a0: 20 70 6c 61 63 65 64 20 69 6e 20 74 68 65 20 72   placed in the r
a5b0: 61 77 20 62 75 66 66 65 72 20 72 65 74 75 72 6e  aw buffer return
a5c0: 65 64 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  ed by the <see c
a5d0: 72 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 0d 0a  ref="uname" />..
a5e0: 20 20 20 20 20 20 2f 2f 2f 20 50 2f 49 6e 76 6f        /// P/Invo
a5f0: 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  ke method...    
a600: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a610: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
a620: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ns>..      /// N
a630: 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
a640: 63 65 73 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  cess; otherwise,
a650: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
a660: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a670: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
a680: 74 69 63 20 62 6f 6f 6c 20 47 65 74 4f 73 56 65  tic bool GetOsVe
a690: 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20  rsionInfo(..    
a6a0: 20 20 20 20 20 20 72 65 66 20 75 74 73 6e 61 6d        ref utsnam
a6b0: 65 20 75 74 73 4e 61 6d 65 0d 0a 20 20 20 20 20  e utsName..     
a6c0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
a6d0: 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a  .          try..
a6e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a6f0: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
a700: 6d 65 5f 69 6e 74 65 72 6f 70 20 75 74 66 4e 61  me_interop utfNa
a710: 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a 0d 0a 20 20  meInterop;....  
a720: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a730: 75 6e 61 6d 65 28 6f 75 74 20 75 74 66 4e 61 6d  uname(out utfNam
a740: 65 49 6e 74 65 72 6f 70 29 20 3c 20 30 29 0d 0a  eInterop) < 0)..
a750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a760: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
a770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a780: 20 69 66 20 28 75 74 66 4e 61 6d 65 49 6e 74 65   if (utfNameInte
a790: 72 6f 70 2e 62 75 66 66 65 72 20 3d 3d 20 6e 75  rop.buffer == nu
a7a0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a7b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a7c0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a7d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 62 75 66        string buf
a7e0: 66 65 72 41 73 53 74 72 69 6e 67 20 3d 20 45 6e  ferAsString = En
a7f0: 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65 74 53  coding.UTF8.GetS
a800: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
a810: 20 20 20 20 20 20 20 20 20 20 75 74 66 4e 61 6d            utfNam
a820: 65 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 29  eInterop.buffer)
a830: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a840: 20 20 20 69 66 20 28 28 62 75 66 66 65 72 41 73     if ((bufferAs
a850: 53 74 72 69 6e 67 20 3d 3d 20 6e 75 6c 6c 29 20  String == null) 
a860: 7c 7c 20 28 75 74 73 4e 61 6d 65 53 65 70 61 72  || (utsNameSepar
a870: 61 74 6f 72 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ators == null)).
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a890: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a8a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a8b0: 20 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67    bufferAsString
a8c0: 20 3d 20 62 75 66 66 65 72 41 73 53 74 72 69 6e   = bufferAsStrin
a8d0: 67 2e 54 72 69 6d 28 75 74 73 4e 61 6d 65 53 65  g.Trim(utsNameSe
a8e0: 70 61 72 61 74 6f 72 73 29 3b 0d 0a 0d 0a 20 20  parators);....  
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a900: 6e 67 5b 5d 20 70 61 72 74 73 20 3d 20 62 75 66  ng[] parts = buf
a910: 66 65 72 41 73 53 74 72 69 6e 67 2e 53 70 6c 69  ferAsString.Spli
a920: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
a930: 20 20 20 20 20 20 75 74 73 4e 61 6d 65 53 65 70        utsNameSep
a940: 61 72 61 74 6f 72 73 2c 20 53 74 72 69 6e 67 53  arators, StringS
a950: 70 6c 69 74 4f 70 74 69 6f 6e 73 2e 52 65 6d 6f  plitOptions.Remo
a960: 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 29 3b  veEmptyEntries);
a970: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a980: 20 20 69 66 20 28 70 61 72 74 73 20 3d 3d 20 6e    if (parts == n
a990: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
a9a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
a9b0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
a9c0: 20 20 20 20 20 20 20 75 74 73 6e 61 6d 65 20 6c         utsname l
a9d0: 6f 63 61 6c 55 74 73 4e 61 6d 65 20 3d 20 6e 65  ocalUtsName = ne
a9e0: 77 20 75 74 73 6e 61 6d 65 28 29 3b 0d 0a 0d 0a  w utsname();....
a9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
aa00: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
aa10: 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1)..          
aa20: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
aa30: 4e 61 6d 65 2e 73 79 73 6e 61 6d 65 20 3d 20 70  Name.sysname = p
aa40: 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  arts[0];....    
aa50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
aa60: 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 32 29  rts.Length >= 2)
aa70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa80: 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65      localUtsName
aa90: 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20 70 61 72 74  .nodename = part
aaa0: 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[1];....       
aab0: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
aac0: 2e 4c 65 6e 67 74 68 20 3e 3d 20 33 29 0d 0a 20  .Length >= 3).. 
aad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aae0: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 72 65   localUtsName.re
aaf0: 6c 65 61 73 65 20 3d 20 70 61 72 74 73 5b 32 5d  lease = parts[2]
ab00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ab10: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
ab20: 67 74 68 20 3e 3d 20 34 29 0d 0a 20 20 20 20 20  gth >= 4)..     
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
ab40: 61 6c 55 74 73 4e 61 6d 65 2e 76 65 72 73 69 6f  alUtsName.versio
ab50: 6e 20 3d 20 70 61 72 74 73 5b 33 5d 3b 0d 0a 0d  n = parts[3];...
ab60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
ab70: 66 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20  f (parts.Length 
ab80: 3e 3d 20 35 29 0d 0a 20 20 20 20 20 20 20 20 20  >= 5)..         
ab90: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74           localUt
aba0: 73 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 20 3d 20  sName.machine = 
abb0: 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d 0a 20 20 20  parts[4];....   
abc0: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61             utsNa
abd0: 6d 65 20 3d 20 6c 6f 63 61 6c 55 74 73 4e 61 6d  me = localUtsNam
abe0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
abf0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
ac00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ac10: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
ac20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ac30: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
ac40: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
ac50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ac60: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
ac70: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
ac80: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d  #endregion..  }.
ac90: 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72  .#endif..  #endr
aca0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  egion....  /////
acb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72  ////////....  #r
ad00: 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20  egion Unmanaged 
ad10: 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20  Interop Methods 
ad20: 53 74 61 74 69 63 20 43 6c 61 73 73 20 28 57 69  Static Class (Wi
ad30: 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d  n32)..  /// <sum
ad40: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
ad50: 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73  s class declares
ad60: 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64   P/Invoke method
ad70: 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65  s to call native
ad80: 20 57 69 6e 33 32 20 41 50 49 73 2e 0d 0a 20 20   Win32 APIs...  
ad90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ada0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
adb0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
adc0: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
add0: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
ade0: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
adf0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
ae00: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
ae10: 65 74 68 6f 64 73 57 69 6e 33 32 0d 0a 20 20 7b  ethodsWin32..  {
ae20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
ae30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
ae80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ae90: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
aea0: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
aeb0: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
aec0: 69 76 65 20 57 69 6e 33 32 20 4c 6f 61 64 4c 69  ive Win32 LoadLi
aed0: 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
aee0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
aef0: 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
af00: 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c 20  tation for full 
af10: 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74 20  details on what 
af20: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  it..      /// do
af30: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
af40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
af50: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
af60: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
af70: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
af80: 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61 62   of the executab
af90: 6c 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  le library...   
afa0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
afb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
afc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
afd0: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
afe0: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
aff0: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
b000: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
b010: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
b020: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 21 50  returns>..#if !P
b030: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
b040: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
b050: 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e  [DllImport("kern
b060: 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20  el32",..#else.. 
b070: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
b080: 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64  "coredll",..#end
b090: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43 61  if..          Ca
b0a0: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
b0b0: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
b0c0: 69 6f 6e 2e 57 69 6e 61 70 69 2c 20 43 68 61 72  ion.Winapi, Char
b0d0: 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75  Set = CharSet.Au
b0e0: 74 6f 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  to,..#if !PLATFO
b0f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
b100: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 42  ORK..          B
b110: 65 73 74 46 69 74 4d 61 70 70 69 6e 67 20 3d 20  estFitMapping = 
b120: 66 61 6c 73 65 2c 20 54 68 72 6f 77 4f 6e 55 6e  false, ThrowOnUn
b130: 6d 61 70 70 61 62 6c 65 43 68 61 72 20 3d 20 74  mappableChar = t
b140: 72 75 65 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue,..#endif..  
b150: 20 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 45          SetLastE
b160: 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20  rror = true)].. 
b170: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
b180: 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
b190: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 73  tr LoadLibrary(s
b1a0: 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 29 3b  tring fileName);
b1b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b200: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
b210: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b220: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
b230: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
b240: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
b250: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 47 65   native Win32 Ge
b260: 74 53 79 73 74 65 6d 49 6e 66 6f 0d 0a 20 20 20  tSystemInfo..   
b270: 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
b280: 20 20 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64    See the MSDN d
b290: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
b2a0: 20 66 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e   full details on
b2b0: 20 77 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20   what it..      
b2c0: 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20  /// does...     
b2d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
b2e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
b2f0: 6d 20 6e 61 6d 65 3d 22 73 79 73 74 65 6d 49 6e  m name="systemIn
b300: 66 6f 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  fo">..      /// 
b310: 54 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  The system infor
b320: 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65  mation structure
b330: 20 74 6f 20 62 65 20 66 69 6c 6c 65 64 20 69 6e   to be filled in
b340: 20 62 79 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   by the function
b350: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
b360: 61 72 61 6d 3e 0d 0a 23 69 66 20 21 50 4c 41 54  aram>..#if !PLAT
b370: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
b380: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 5b 44 6c  EWORK..      [Dl
b390: 6c 49 6d 70 6f 72 74 28 22 6b 65 72 6e 65 6c 33  lImport("kernel3
b3a0: 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  2",..#else..    
b3b0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 63 6f    [DllImport("co
b3c0: 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e 64 69 66 0d  redll",..#endif.
b3d0: 0a 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69  .          Calli
b3e0: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
b3f0: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b400: 2e 57 69 6e 61 70 69 29 5d 0d 0a 20 20 20 20 20  .Winapi)]..     
b410: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
b420: 20 65 78 74 65 72 6e 20 76 6f 69 64 20 47 65 74   extern void Get
b430: 53 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 53  SystemInfo(out S
b440: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
b450: 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  mInfo);....     
b460: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
b4b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b4c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
b4d0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 63 6f 6e 74  enumeration cont
b4e0: 61 69 6e 73 20 74 68 65 20 70 6f 73 73 69 62 6c  ains the possibl
b4f0: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  e values for the
b500: 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
b510: 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74 75    /// architectu
b520: 72 65 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20  re field of the 
b530: 73 79 73 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69  system informati
b540: 6f 6e 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  on structure... 
b550: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b560: 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ry>..      inter
b570: 6e 61 6c 20 65 6e 75 6d 20 50 72 6f 63 65 73 73  nal enum Process
b580: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3a  orArchitecture :
b590: 20 75 73 68 6f 72 74 20 2f 2a 20 43 4f 4d 50 41   ushort /* COMPA
b5a0: 54 3a 20 57 69 6e 33 32 2e 20 2a 2f 0d 0a 20 20  T: Win32. */..  
b5b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b5c0: 20 49 6e 74 65 6c 20 3d 20 30 2c 0d 0a 20 20 20   Intel = 0,..   
b5d0: 20 20 20 20 20 20 20 4d 49 50 53 20 3d 20 31 2c         MIPS = 1,
b5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68  ..          Alph
b5f0: 61 20 3d 20 32 2c 0d 0a 20 20 20 20 20 20 20 20  a = 2,..        
b600: 20 20 50 6f 77 65 72 50 43 20 3d 20 33 2c 0d 0a    PowerPC = 3,..
b610: 20 20 20 20 20 20 20 20 20 20 53 48 78 20 3d 20            SHx = 
b620: 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 41 52  4,..          AR
b630: 4d 20 3d 20 35 2c 0d 0a 20 20 20 20 20 20 20 20  M = 5,..        
b640: 20 20 49 41 36 34 20 3d 20 36 2c 0d 0a 20 20 20    IA64 = 6,..   
b650: 20 20 20 20 20 20 20 41 6c 70 68 61 36 34 20 3d         Alpha64 =
b660: 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 4d   7,..          M
b670: 53 49 4c 20 3d 20 38 2c 0d 0a 20 20 20 20 20 20  SIL = 8,..      
b680: 20 20 20 20 41 4d 44 36 34 20 3d 20 39 2c 0d 0a      AMD64 = 9,..
b690: 20 20 20 20 20 20 20 20 20 20 49 41 33 32 5f 6f            IA32_o
b6a0: 6e 5f 57 69 6e 36 34 20 3d 20 31 30 2c 0d 0a 20  n_Win64 = 10,.. 
b6b0: 20 20 20 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e           Unknown
b6c0: 20 3d 20 30 78 46 46 46 46 0d 0a 20 20 20 20 20   = 0xFFFF..     
b6d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b720: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
b730: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b740: 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63    /// This struc
b750: 74 75 72 65 20 63 6f 6e 74 61 69 6e 73 20 69 6e  ture contains in
b760: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
b770: 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6d 70  the current comp
b780: 75 74 65 72 2e 20 54 68 69 73 0d 0a 20 20 20 20  uter. This..    
b790: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 74    /// includes t
b7a0: 68 65 20 70 72 6f 63 65 73 73 6f 72 20 74 79 70  he processor typ
b7b0: 65 2c 20 70 61 67 65 20 73 69 7a 65 2c 20 6d 65  e, page size, me
b7c0: 6d 6f 72 79 20 61 64 64 72 65 73 73 65 73 2c 20  mory addresses, 
b7d0: 65 74 63 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  etc...      /// 
b7e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b7f0: 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28    [StructLayout(
b800: 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65  LayoutKind.Seque
b810: 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 20 20 69  ntial)]..      i
b820: 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 53  nternal struct S
b830: 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a 20 20 20 20  YSTEM_INFO..    
b840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70    {..          p
b850: 75 62 6c 69 63 20 50 72 6f 63 65 73 73 6f 72 41  ublic ProcessorA
b860: 72 63 68 69 74 65 63 74 75 72 65 20 77 50 72 6f  rchitecture wPro
b870: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b880: 72 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 70  re;..          p
b890: 75 62 6c 69 63 20 75 73 68 6f 72 74 20 77 52 65  ublic ushort wRe
b8a0: 73 65 72 76 65 64 3b 20 2f 2a 20 4e 4f 54 20 55  served; /* NOT U
b8b0: 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
b8c0: 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77    public uint dw
b8d0: 50 61 67 65 53 69 7a 65 3b 20 2f 2a 20 4e 4f 54  PageSize; /* NOT
b8e0: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
b8f0: 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50 74      public IntPt
b900: 72 20 6c 70 4d 69 6e 69 6d 75 6d 41 70 70 6c 69  r lpMinimumAppli
b910: 63 61 74 69 6f 6e 41 64 64 72 65 73 73 3b 20 2f  cationAddress; /
b920: 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
b930: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
b940: 49 6e 74 50 74 72 20 6c 70 4d 61 78 69 6d 75 6d  IntPtr lpMaximum
b950: 41 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65  ApplicationAddre
b960: 73 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ss; /* NOT USED 
b970: 2a 2f 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  */..#if PLATFORM
b980: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
b990: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  K..          pub
b9a0: 6c 69 63 20 75 69 6e 74 20 64 77 41 63 74 69 76  lic uint dwActiv
b9b0: 65 50 72 6f 63 65 73 73 6f 72 4d 61 73 6b 3b 20  eProcessorMask; 
b9c0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
b9d0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
b9e0: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 64   public IntPtr d
b9f0: 77 41 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72  wActiveProcessor
ba00: 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45  Mask; /* NOT USE
ba10: 44 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  D */..#endif..  
ba20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
ba30: 69 6e 74 20 64 77 4e 75 6d 62 65 72 4f 66 50 72  int dwNumberOfPr
ba40: 6f 63 65 73 73 6f 72 73 3b 20 2f 2a 20 4e 4f 54  ocessors; /* NOT
ba50: 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
ba60: 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e 74 20      public uint 
ba70: 64 77 50 72 6f 63 65 73 73 6f 72 54 79 70 65 3b  dwProcessorType;
ba80: 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
ba90: 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69  .          publi
baa0: 63 20 75 69 6e 74 20 64 77 41 6c 6c 6f 63 61 74  c uint dwAllocat
bab0: 69 6f 6e 47 72 61 6e 75 6c 61 72 69 74 79 3b 20  ionGranularity; 
bac0: 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a  /* NOT USED */..
bad0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
bae0: 20 75 73 68 6f 72 74 20 77 50 72 6f 63 65 73 73   ushort wProcess
baf0: 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20 4e 4f 54 20  orLevel; /* NOT 
bb00: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
bb10: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
bb20: 20 77 50 72 6f 63 65 73 73 6f 72 52 65 76 69 73   wProcessorRevis
bb30: 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ion; /* NOT USED
bb40: 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20   */..      }..  
bb50: 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  }..  #endregion.
bb60: 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...  ///////////
bb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbb0: 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20  //....  #region 
bbc0: 55 6e 6d 61 6e 61 67 65 64 20 49 6e 74 65 72 6f  Unmanaged Intero
bbd0: 70 20 4d 65 74 68 6f 64 73 20 53 74 61 74 69 63  p Methods Static
bbe0: 20 43 6c 61 73 73 20 28 53 51 4c 69 74 65 29 0d   Class (SQLite).
bbf0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
bc00: 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61  ..  /// This cla
bc10: 73 73 20 64 65 63 6c 61 72 65 73 20 50 2f 49 6e  ss declares P/In
bc20: 76 6f 6b 65 20 6d 65 74 68 6f 64 73 20 74 6f 20  voke methods to 
bc30: 63 61 6c 6c 20 6e 61 74 69 76 65 20 53 51 4c 69  call native SQLi
bc40: 74 65 20 41 50 49 73 2e 0d 0a 20 20 2f 2f 2f 20  te APIs...  /// 
bc50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
bc60: 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
bc70: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 5b 53  TFRAMEWORK..  [S
bc80: 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64  uppressUnmanaged
bc90: 43 6f 64 65 53 65 63 75 72 69 74 79 5d 0d 0a 23  CodeSecurity]..#
bca0: 65 6e 64 69 66 0d 0a 20 20 69 6e 74 65 72 6e 61  endif..  interna
bcb0: 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 55  l static class U
bcc0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
bcd0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70  ds..  {..      p
bce0: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
bcf0: 6e 67 20 45 78 63 65 70 74 69 6f 6e 4d 65 73 73  ng ExceptionMess
bd00: 61 67 65 46 6f 72 6d 61 74 20 3d 0d 0a 20 20 20  ageFormat =..   
bd10: 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
bd20: 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30  xception in \"{0
bd30: 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22  }\" method: {1}"
bd40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
bd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd90: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
bda0: 65 67 69 6f 6e 20 53 68 61 72 65 64 20 4e 61 74  egion Shared Nat
bdb0: 69 76 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  ive SQLite Libra
bdc0: 72 79 20 50 72 65 2d 4c 6f 61 64 69 6e 67 20 43  ry Pre-Loading C
bdd0: 6f 64 65 0d 0a 20 20 20 20 20 20 23 72 65 67 69  ode..      #regi
bde0: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
bdf0: 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ants..      /// 
be00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
be10: 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78   /// The file ex
be20: 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72  tension used for
be30: 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69   dynamic link li
be40: 62 72 61 72 69 65 73 2e 0d 0a 20 20 20 20 20 20  braries...      
be50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
be60: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
be70: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
be80: 72 69 6e 67 20 44 6c 6c 46 69 6c 65 45 78 74 65  ring DllFileExte
be90: 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c 6c 22 3b 0d  nsion = ".dll";.
bea0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
beb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
bf00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
bf10: 2f 2f 20 54 68 65 20 66 69 6c 65 20 65 78 74 65  // The file exte
bf20: 6e 73 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 74  nsion used for t
bf30: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
bf40: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
bf50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
bf60: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
bf70: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
bf80: 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 46 69 6c  string ConfigFil
bf90: 65 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 63  eExtension = ".c
bfa0: 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20 20 20 20 20  onfig";....     
bfb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
c000: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c010: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c020: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
c030: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
c040: 74 69 6f 6e 20 66 69 6c 65 20 73 70 65 63 69 66  tion file specif
c050: 69 63 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ic to the..     
c060: 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 61   /// System.Data
c070: 2e 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c 79  .SQLite assembly
c080: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c090: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
c0a0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
c0b0: 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d  adonly string Xm
c0c0: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
c0d0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 74 79 70  =..          typ
c0e0: 65 6f 66 28 55 6e 73 61 66 65 4e 61 74 69 76 65  eof(UnsafeNative
c0f0: 4d 65 74 68 6f 64 73 29 2e 4e 61 6d 65 73 70 61  Methods).Namespa
c100: 63 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78 74 65  ce + DllFileExte
c110: 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20 20 20 20 20  nsion +..       
c120: 20 20 20 43 6f 6e 66 69 67 46 69 6c 65 45 78 74     ConfigFileExt
c130: 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20  ension;....     
c140: 20 2f 2f 2f 2f 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 0d 0a 20 20 20 20  //////////..    
c190: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c1a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c1b0: 69 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  is the XML confi
c1c0: 67 75 72 61 74 72 69 6f 6e 20 66 69 6c 65 20 74  guratrion file t
c1d0: 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62  oken that will b
c1e0: 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d  e replaced with.
c1f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71  .      /// the q
c200: 75 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f  ualified path to
c210: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
c220: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 58 4d  ontaining the XM
c230: 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d  L configuration.
c240: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 2e  .      /// file.
c250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c260: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
c270: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
c280: 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 6d 6c  donly string Xml
c290: 43 6f 6e 66 69 67 44 69 72 65 63 74 6f 72 79 54  ConfigDirectoryT
c2a0: 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  oken =..        
c2b0: 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c 69 74    "%PreLoadSQLit
c2c0: 65 5f 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63  e_XmlConfigDirec
c2d0: 74 6f 72 79 25 22 3b 0d 0a 20 20 20 20 20 20 23  tory%";..      #
c2e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
c2f0: 20 20 20 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 2f 2f  ////////////////
c320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c340: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
c350: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 20  ivate Constants 
c360: 28 44 65 73 6b 74 6f 70 20 46 72 61 6d 65 77 6f  (Desktop Framewo
c370: 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 21 50  rk Only)..#if !P
c380: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
c390: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
c3a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c3b0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
c3c0: 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
c3d0: 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 20   variable token 
c3e0: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 70  that will be rep
c3f0: 6c 61 63 65 64 20 77 69 74 68 0d 0a 20 20 20 20  laced with..    
c400: 20 20 2f 2f 2f 20 74 68 65 20 71 75 61 6c 69 66    /// the qualif
c410: 69 65 64 20 70 61 74 68 20 74 6f 20 74 68 65 20  ied path to the 
c420: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
c430: 6e 69 6e 67 20 74 68 69 73 20 61 73 73 65 6d 62  ning this assemb
c440: 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ly...      /// <
c450: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c460: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
c470: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
c480: 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
c490: 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20 20 20  yToken =..      
c4a0: 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53 51 4c      "%PreLoadSQL
c4b0: 69 74 65 5f 41 73 73 65 6d 62 6c 79 44 69 72 65  ite_AssemblyDire
c4c0: 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a 20 20 20 20  ctory%";....    
c4d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
c520: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c530: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
c540: 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d   is the environm
c550: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b  ent variable tok
c560: 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20  en that will be 
c570: 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 61 6e  replaced with an
c580: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 62 62 72  ..      /// abbr
c590: 65 76 69 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  eviation of the 
c5a0: 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
c5b0: 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
c5c0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
c5d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73  ..      /// this
c5e0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
c5f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c600: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
c610: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
c620: 73 74 72 69 6e 67 20 54 61 72 67 65 74 46 72 61  string TargetFra
c630: 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20 3d 0d 0a 20  meworkToken =.. 
c640: 20 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f           "%PreLo
c650: 61 64 53 51 4c 69 74 65 5f 54 61 72 67 65 74 46  adSQLite_TargetF
c660: 72 61 6d 65 77 6f 72 6b 25 22 3b 0d 0a 23 65 6e  ramework%";..#en
c670: 64 69 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  dif..      #endr
c680: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
c6e0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
c6f0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
c700: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c710: 20 20 20 2f 2f 2f 20 54 68 69 73 20 6c 6f 63 6b     /// This lock
c720: 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 6f 74   is used to prot
c730: 65 63 74 20 74 68 65 20 73 74 61 74 69 63 20 5f  ect the static _
c740: 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
c750: 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  leFileName,..   
c760: 20 20 20 2f 2f 2f 20 5f 53 51 4c 69 74 65 4e 61     /// _SQLiteNa
c770: 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65  tiveModuleHandle
c780: 2c 20 61 6e 64 20 70 72 6f 63 65 73 73 6f 72 41  , and processorA
c790: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
c7a0: 6f 72 6d 73 20 66 69 65 6c 64 73 2e 0d 0a 20 20  orms fields...  
c7b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c7c0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
c7d0: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
c7e0: 79 20 6f 62 6a 65 63 74 20 73 74 61 74 69 63 53  y object staticS
c7f0: 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
c800: 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ject();....     
c810: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c820: 2f 2f 2f 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 0d 0a 20 20 20 20  //////////..    
c860: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c870: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c880: 64 69 63 74 69 6f 6e 61 72 79 20 73 74 6f 72 65  dictionary store
c890: 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 62  s the mappings b
c8a0: 65 74 77 65 65 6e 20 70 72 6f 63 65 73 73 6f 72  etween processor
c8b0: 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
c8c0: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 73 20 61       /// names a
c8d0: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65  nd platform name
c8e0: 73 2e 20 20 54 68 65 73 65 20 6d 61 70 70 69 6e  s.  These mappin
c8f0: 67 73 20 61 72 65 20 6e 6f 77 20 75 73 65 64 20  gs are now used 
c900: 66 6f 72 20 74 77 6f 0d 0a 20 20 20 20 20 20 2f  for two..      /
c910: 2f 2f 20 70 75 72 70 6f 73 65 73 2e 20 20 46 69  // purposes.  Fi
c920: 72 73 74 2c 20 74 68 65 79 20 61 72 65 20 75 73  rst, they are us
c930: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
c940: 69 66 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  if the assembly 
c950: 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  code..      /// 
c960: 62 61 73 65 20 73 68 6f 75 6c 64 20 62 65 20 75  base should be u
c970: 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
c980: 68 65 20 6c 6f 63 61 74 69 6f 6e 2c 20 62 61 73  he location, bas
c990: 65 64 20 75 70 6f 6e 20 77 68 65 74 68 65 72 20  ed upon whether 
c9a0: 6f 6e 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  one..      /// o
c9b0: 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 6e 61  r more of the na
c9c0: 6d 65 64 20 73 75 62 2d 64 69 72 65 63 74 6f 72  med sub-director
c9d0: 69 65 73 20 65 78 69 73 74 20 77 69 74 68 69 6e  ies exist within
c9e0: 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 63 6f   the assembly co
c9f0: 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 61  de..      /// ba
ca00: 73 65 2e 20 20 53 65 63 6f 6e 64 2c 20 74 68 65  se.  Second, the
ca10: 79 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 73  y are used to as
ca20: 73 69 73 74 20 69 6e 20 6c 6f 61 64 69 6e 67 20  sist in loading 
ca30: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d  the appropriate.
ca40: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  .      /// SQLit
ca50: 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62  e interop assemb
ca60: 6c 79 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72  ly into the curr
ca70: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
ca80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ca90: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
caa0: 65 20 73 74 61 74 69 63 20 44 69 63 74 69 6f 6e  e static Diction
cab0: 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ary<string, stri
cac0: 6e 67 3e 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ng> processorArc
cad0: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
cae0: 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ms;....      ///
caf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
cb40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cb50: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
cb60: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
cb70: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
cb80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
cb90: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
cba0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d  yDirectory" /> m
cbb0: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
cbc0: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
cbd0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
cbe0: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
cbf0: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
cc00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cc10: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
cc20: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
cc30: 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72  achedAssemblyDir
cc40: 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20  ectory;....     
cc50: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
cca0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ccb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
ccc0: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
ccd0: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
cce0: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
ccf0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
cd00: 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  etAssemblyDirect
cd10: 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ory" /> method w
cd20: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
cd30: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
cd40: 2f 2f 20 73 75 69 74 61 62 6c 65 20 61 73 73 65  // suitable asse
cd50: 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 2e 20  mbly directory. 
cd60: 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
cd70: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61  <see cref="GetCa
cd80: 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
cd90: 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
cda0: 20 77 69 6c 6c 20 63 68 65 63 6b 20 74 68 69 73   will check this
cdb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 69 65 6c  ..      /// fiel
cdc0: 64 20 61 6e 64 20 73 6b 69 70 73 20 63 61 6c 6c  d and skips call
cdd0: 73 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20  s into the <see 
cde0: 63 72 65 66 3d 22 47 65 74 41 73 73 65 6d 62 6c  cref="GetAssembl
cdf0: 79 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 0d 0a  yDirectory" />..
ce00: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
ce10: 20 77 68 65 6e 65 76 65 72 20 69 74 20 69 73 20   whenever it is 
ce20: 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  non-zero...     
ce30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ce40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
ce50: 74 61 74 69 63 20 62 6f 6f 6c 20 6e 6f 41 73 73  tatic bool noAss
ce60: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d  emblyDirectory;.
ce70: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ceb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cec0: 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
ced0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cee0: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 63  // This is the c
cef0: 61 63 68 65 64 20 72 65 74 75 72 6e 20 76 61 6c  ached return val
cf00: 75 65 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ue from the..   
cf10: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
cf20: 3d 22 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69  ="GetXmlConfigFi
cf30: 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  leName" /> metho
cf40: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74  d -OR- null if t
cf50: 68 61 74 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  hat method..    
cf60: 20 20 2f 2f 2f 20 68 61 73 20 6e 65 76 65 72 20    /// has never 
cf70: 72 65 74 75 72 6e 65 64 20 61 20 76 61 6c 69 64  returned a valid
cf80: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
cf90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
cfa0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
cfb0: 74 69 63 20 73 74 72 69 6e 67 20 63 61 63 68 65  tic string cache
cfc0: 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  dXmlConfigFileNa
cfd0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  me;....      ///
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
d030: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d040: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73     /// When this
d050: 20 66 69 65 6c 64 20 69 73 20 6e 6f 6e 2d 7a 65   field is non-ze
d060: 72 6f 2c 20 69 74 20 69 6e 64 69 63 61 74 65 73  ro, it indicates
d070: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
d080: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d090: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d0a0: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 6e   /> method was n
d0b0: 6f 74 20 61 62 6c 65 20 74 6f 20 6c 6f 63 61 74  ot able to locat
d0c0: 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  e a..      /// s
d0d0: 75 69 74 61 62 6c 65 20 58 4d 4c 20 63 6f 6e 66  uitable XML conf
d0e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e  iguration file n
d0f0: 61 6d 65 2e 20 20 54 68 65 0d 0a 20 20 20 20 20  ame.  The..     
d100: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
d110: 47 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66  GetCachedXmlConf
d120: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
d130: 65 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b  ethod will check
d140: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   this..      ///
d150: 20 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73   field and skips
d160: 20 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20   calls into the 
d170: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
d180: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
d190: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d   />..      /// m
d1a0: 65 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69  ethod whenever i
d1b0: 74 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a  t is non-zero...
d1c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d1d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
d1e0: 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
d1f0: 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  noXmlConfigFileN
d200: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ame;..      #end
d210: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
d220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
d270: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d280: 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 6e 6f        /// For no
d290: 77 2c 20 74 68 69 73 20 6d 65 74 68 6f 64 20 73  w, this method s
d2a0: 69 6d 70 6c 79 20 63 61 6c 6c 73 20 74 68 65 20  imply calls the 
d2b0: 49 6e 69 74 69 61 6c 69 7a 65 20 6d 65 74 68 6f  Initialize metho
d2c0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
d2d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d2e0: 73 74 61 74 69 63 20 55 6e 73 61 66 65 4e 61 74  static UnsafeNat
d2f0: 69 76 65 4d 65 74 68 6f 64 73 28 29 0d 0a 20 20  iveMethods()..  
d300: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d310: 20 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a   Initialize();..
d320: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d330: 20 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 2f 2f 2f  ////////////////
d370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
d380: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d390: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
d3a0: 70 74 73 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  pts to initializ
d3b0: 65 20 74 68 69 73 20 63 6c 61 73 73 20 62 79 20  e this class by 
d3c0: 70 72 65 2d 6c 6f 61 64 69 6e 67 20 74 68 65 20  pre-loading the 
d3d0: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
d3e0: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
d3f0: 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73   for the process
d400: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
d410: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  of the current p
d420: 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
d430: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d440: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
d450: 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74 69 61  atic void Initia
d460: 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lize()..      {.
d470: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
d480: 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
d490: 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
d4a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
d4b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
d4c0: 20 43 72 65 61 74 65 20 74 68 65 20 6c 69 73 74   Create the list
d4d0: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
d4e0: 74 68 61 74 20 77 69 6c 6c 20 63 6f 6e 74 61 69  that will contai
d4f0: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  n..          // 
d500: 20 20 20 20 20 20 76 61 72 69 6f 75 73 20 63 6f        various co
d510: 75 6e 74 73 20 75 73 65 64 20 69 6e 20 64 65 62  unts used in deb
d520: 75 67 67 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e  ugging, includin
d530: 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  g the..         
d540: 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65 72   //       number
d550: 20 6f 66 20 74 69 6d 65 73 20 65 61 63 68 20 73   of times each s
d560: 65 74 74 69 6e 67 20 76 61 6c 75 65 20 68 61 73  etting value has
d570: 20 62 65 65 6e 20 72 65 61 64 2e 0d 0a 20 20 20   been read...   
d580: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d590: 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
d5a0: 6e 69 74 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65  nitialize();..#e
d5b0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
d5c0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d5d0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d5e0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
d5f0: 68 65 63 6b 20 69 66 20 61 20 64 65 62 75 67 67  heck if a debugg
d600: 65 72 20 6e 65 65 64 73 20 74 6f 20 62 65 20 61  er needs to be a
d610: 74 74 61 63 68 65 64 20 62 65 66 6f 72 65 20 64  ttached before d
d620: 6f 69 6e 67 20 61 6e 79 0d 0a 20 20 20 20 20 20  oing any..      
d630: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 61      //       rea
d640: 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  l work...       
d650: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d660: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 4d   HelperMethods.M
d670: 61 79 62 65 42 72 65 61 6b 49 6e 74 6f 44 65 62  aybeBreakIntoDeb
d680: 75 67 67 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20  ugger();....#if 
d690: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 20  SQLITE_STANDARD 
d6a0: 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44  || USE_INTEROP_D
d6b0: 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d 5f 43  LL || PLATFORM_C
d6c0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
d6d0: 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e 41 54  .#if PRELOAD_NAT
d6e0: 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20 20 20  IVE_LIBRARY..   
d6f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d700: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
d710: 20 74 68 65 20 22 4e 6f 5f 50 72 65 4c 6f 61 64   the "No_PreLoad
d720: 53 51 4c 69 74 65 22 20 65 6e 76 69 72 6f 6e 6d  SQLite" environm
d730: 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 20  ent variable is 
d740: 73 65 74 20 28 74 6f 0d 0a 20 20 20 20 20 20 20  set (to..       
d750: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 74     //       anyt
d760: 68 69 6e 67 29 2c 20 73 6b 69 70 20 61 6c 6c 20  hing), skip all 
d770: 6f 66 20 6f 75 72 20 73 70 65 63 69 61 6c 20 63  of our special c
d780: 6f 64 65 20 61 6e 64 20 73 69 6d 70 6c 79 20 72  ode and simply r
d790: 65 74 75 72 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eturn...        
d7a0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d7b0: 69 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61  if (GetSettingVa
d7c0: 6c 75 65 28 22 4e 6f 5f 50 72 65 4c 6f 61 64 53  lue("No_PreLoadS
d7d0: 51 4c 69 74 65 22 2c 20 6e 75 6c 6c 29 20 21 3d  QLite", null) !=
d7e0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
d7f0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23        return;..#
d800: 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d  endif..#endif...
d810: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
d820: 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
d830: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
d850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
d860: 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65 20 73 75 72  / TODO: Make sur
d870: 65 20 74 68 69 73 20 6c 69 73 74 20 69 73 20 75  e this list is u
d880: 70 64 61 74 65 64 20 69 66 20 74 68 65 20 73 75  pdated if the su
d890: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20 20  pported..       
d8a0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d8b0: 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
d8c0: 65 63 74 75 72 65 20 6e 61 6d 65 73 20 61 6e 64  ecture names and
d8d0: 2f 6f 72 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  /or platform nam
d8e0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
d8f0: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 6e 67    //       chang
d900: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
d910: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d920: 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
d930: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c  orArchitecturePl
d940: 61 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29  atforms == null)
d950: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d960: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d970: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
d980: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
d990: 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20 6d  TE: Create the m
d9a0: 61 70 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20  ap of processor 
d9b0: 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d  architecture nam
d9c0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
d9d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
d9e0: 6f 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73  o platform names
d9f0: 20 75 73 69 6e 67 20 61 20 63 61 73 65 2d 69 6e   using a case-in
da00: 73 65 6e 73 69 74 69 76 65 20 73 74 72 69 6e 67  sensitive string
da10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da20: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6d      //       com
da30: 70 61 72 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  parer...        
da40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
da50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da60: 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
da70: 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d  cturePlatforms =
da80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da90: 20 20 20 20 20 20 20 20 6e 65 77 20 44 69 63 74          new Dict
daa0: 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
dab0: 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20 20 20  tring>(..       
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65     StringCompare
dae0: 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  r.OrdinalIgnoreC
daf0: 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
db00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db20: 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 75 70 20   // NOTE: Setup 
db30: 74 68 65 20 6c 69 73 74 20 6f 66 20 70 6c 61 74  the list of plat
db40: 66 6f 72 6d 20 6e 61 6d 65 73 20 61 73 73 6f 63  form names assoc
db50: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
db70: 20 20 20 20 20 20 20 74 68 65 20 73 75 70 70 6f         the suppo
db80: 72 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  rted processor a
db90: 72 63 68 69 74 65 63 74 75 72 65 73 2e 0d 0a 20  rchitectures... 
dba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbb0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dbc0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
dbd0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
dbe0: 66 6f 72 6d 73 2e 41 64 64 28 22 78 38 36 22 2c  forms.Add("x86",
dbf0: 20 22 57 69 6e 33 32 22 29 3b 0d 0a 20 20 20 20   "Win32");..    
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
dc10: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
dc20: 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64  urePlatforms.Add
dc30: 28 22 78 38 36 5f 36 34 22 2c 20 22 78 36 34 22  ("x86_64", "x64"
dc40: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
dc50: 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
dc60: 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74 66  rchitecturePlatf
dc70: 6f 72 6d 73 2e 41 64 64 28 22 41 4d 44 36 34 22  orms.Add("AMD64"
dc80: 2c 20 22 78 36 34 22 29 3b 0d 0a 20 20 20 20 20  , "x64");..     
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
dca0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
dcb0: 72 65 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28  rePlatforms.Add(
dcc0: 22 49 41 36 34 22 2c 20 22 49 74 61 6e 69 75 6d  "IA64", "Itanium
dcd0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
dce0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
dcf0: 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61 74  ArchitecturePlat
dd00: 66 6f 72 6d 73 2e 41 64 64 28 22 41 52 4d 22 2c  forms.Add("ARM",
dd10: 20 22 57 69 6e 43 45 22 29 3b 0d 0a 20 20 20 20   "WinCE");..    
dd20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23            }....#
dd30: 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
dd40: 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f  RD || USE_INTERO
dd50: 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52  P_DLL || PLATFOR
dd60: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
dd70: 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f  RK..#if PRELOAD_
dd80: 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a  NATIVE_LIBRARY..
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddb0: 2f 2f 20 42 55 47 42 55 47 3a 20 57 68 61 74 20  // BUGBUG: What 
ddc0: 61 62 6f 75 74 20 6f 74 68 65 72 20 61 70 70 6c  about other appl
ddd0: 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 73 3f  ication domains?
dde0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
de00: 20 20 69 66 20 28 5f 53 51 4c 69 74 65 4e 61 74    if (_SQLiteNat
de10: 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20  iveModuleHandle 
de20: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
de30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
de40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de50: 20 20 20 20 73 74 72 69 6e 67 20 62 61 73 65 44      string baseD
de60: 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
de70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de80: 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 65      string proce
de90: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
dea0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
dec0: 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74   allowBaseDirect
ded0: 6f 72 79 4f 6e 6c 79 20 3d 20 66 61 6c 73 65 3b  oryOnly = false;
dee0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
def0: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
df00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
df10: 20 20 20 20 20 20 20 53 65 61 72 63 68 46 6f 72         SearchFor
df20: 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df40: 20 20 72 65 66 20 62 61 73 65 44 69 72 65 63 74    ref baseDirect
df50: 6f 72 79 2c 20 72 65 66 20 70 72 6f 63 65 73 73  ory, ref process
df60: 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c 0d  orArchitecture,.
df70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df80: 20 20 20 20 20 20 20 72 65 66 20 61 6c 6c 6f 77         ref allow
df90: 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c  BaseDirectoryOnl
dfa0: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
dfb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dfd0: 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  / NOTE: Attempt 
dfe0: 74 6f 20 70 72 65 2d 6c 6f 61 64 20 74 68 65 20  to pre-load the 
dff0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
e000: 61 72 79 20 28 6f 72 0d 0a 20 20 20 20 20 20 20  ary (or..       
e010: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
e020: 20 20 20 20 69 6e 74 65 72 6f 70 20 61 73 73 65      interop asse
e030: 6d 62 6c 79 29 20 61 6e 64 20 73 74 6f 72 65 20  mbly) and store 
e040: 62 6f 74 68 20 74 68 65 20 66 69 6c 65 20 6e 61  both the file na
e050: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
e060: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
e070: 6e 64 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  nd native module
e080: 20 68 61 6e 64 6c 65 20 66 6f 72 20 6c 61 74 65   handle for late
e090: 72 20 75 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  r usage...      
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 20 20 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d    /* IGNORED */.
e0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0e0: 20 20 20 50 72 65 4c 6f 61 64 53 51 4c 69 74 65     PreLoadSQLite
e0f0: 44 6c 6c 28 62 61 73 65 44 69 72 65 63 74 6f 72  Dll(baseDirector
e100: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
e110: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
e120: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 2c  sorArchitecture,
e130: 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74   allowBaseDirect
e140: 6f 72 79 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20  oryOnly,..      
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e160: 72 65 66 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  ref _SQLiteNativ
e170: 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
e180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e190: 20 20 20 20 20 20 20 20 72 65 66 20 5f 53 51 4c          ref _SQL
e1a0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48  iteNativeModuleH
e1b0: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
e1c0: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
e1d0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e1e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
e1f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
e200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e240: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
e250: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
e260: 2f 20 43 6f 6d 62 69 6e 65 73 20 74 77 6f 20 70  / Combines two p
e270: 61 74 68 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  ath strings...  
e280: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e290: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
e2a0: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 31  aram name="path1
e2b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
e2c0: 65 20 66 69 72 73 74 20 70 61 74 68 20 2d 4f 52  e first path -OR
e2d0: 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  - null...      /
e2e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e2f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e300: 6d 65 3d 22 70 61 74 68 32 22 3e 0d 0a 20 20 20  me="path2">..   
e310: 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e     /// The secon
e320: 64 20 70 61 74 68 20 2d 4f 52 2d 20 6e 75 6c 6c  d path -OR- null
e330: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
e340: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
e350: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
e360: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 62 69 6e    /// The combin
e370: 65 64 20 70 61 74 68 20 73 74 72 69 6e 67 20 2d  ed path string -
e380: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 62 6f 74 68  OR- null if both
e390: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
e3a0: 20 70 61 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   path..      ///
e3b0: 20 73 74 72 69 6e 67 73 20 61 72 65 20 6e 75 6c   strings are nul
e3c0: 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
e3d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
e3e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
e3f0: 74 72 69 6e 67 20 4d 61 79 62 65 43 6f 6d 62 69  tring MaybeCombi
e400: 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
e410: 20 20 20 73 74 72 69 6e 67 20 70 61 74 68 31 2c     string path1,
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
e430: 6e 67 20 70 61 74 68 32 0d 0a 20 20 20 20 20 20  ng path2..      
e440: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
e450: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
e460: 74 68 31 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  th1 != null)..  
e470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e480: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74           if (pat
e490: 68 32 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  h2 != null)..   
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e4b0: 65 74 75 72 6e 20 50 61 74 68 2e 43 6f 6d 62 69  eturn Path.Combi
e4c0: 6e 65 28 70 61 74 68 31 2c 20 70 61 74 68 32 29  ne(path1, path2)
e4d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e4e0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
e4f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e500: 70 61 74 68 31 3b 0d 0a 20 20 20 20 20 20 20 20  path1;..        
e510: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
e520: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  lse..          {
e530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e540: 69 66 20 28 70 61 74 68 32 20 21 3d 20 6e 75 6c  if (path2 != nul
e550: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e560: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
e570: 68 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h2;..           
e580: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
e590: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
e5a0: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
e5b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
e5c0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
e5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e610: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e630: 20 52 65 73 65 74 73 20 74 68 65 20 63 61 63 68   Resets the cach
e640: 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  ed XML configura
e650: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76  tion file name v
e660: 61 6c 75 65 2c 20 74 68 75 73 20 66 6f 72 63 69  alue, thus forci
e670: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ng the..      //
e680: 2f 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f 20 3c  / next call to <
e690: 73 65 65 20 63 72 65 66 3d 22 47 65 74 43 61 63  see cref="GetCac
e6a0: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
e6b0: 4e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Name" /> method 
e6c0: 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20 20 20 2f  to rely..      /
e6d0: 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c 73 65 65  // upon the <see
e6e0: 20 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e   cref="GetXmlCon
e6f0: 66 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20  figFileName" /> 
e700: 6d 65 74 68 6f 64 20 74 6f 20 66 65 74 63 68 20  method to fetch 
e710: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 58  the..      /// X
e720: 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ML configuration
e730: 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   file name...   
e740: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e750: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
e760: 20 73 74 61 74 69 63 20 76 6f 69 64 20 52 65 73   static void Res
e770: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
e780: 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20  gFileName()..   
e790: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e7a0: 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75  #region Debug Bu
e7b0: 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45  ild Only..#if DE
e7c0: 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44  BUG..          D
e7d0: 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
e7e0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65  ntOtherCount("Me
e7f0: 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68 65 64  thod_ResetCached
e800: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
e810: 65 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  e");..#endif..  
e820: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
e830: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
e840: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
e850: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
e860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e870: 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69    cachedXmlConfi
e880: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  gFileName = null
e890: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e8a0: 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65   noXmlConfigFile
e8b0: 4e 61 6d 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  Name = false;.. 
e8c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e8d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e920: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
e930: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e940: 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61     /// Queries a
e950: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 63  nd returns the c
e960: 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69 67  ached XML config
e970: 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d  uration file nam
e980: 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  e for the..     
e990: 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 63 6f   /// assembly co
e9a0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6d 61 6e  ntaining the man
e9b0: 61 67 65 64 20 53 79 73 74 65 6d 2e 44 61 74 61  aged System.Data
e9c0: 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f 6e 65 6e  .SQLite componen
e9d0: 74 73 2c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ts, if..      //
e9e0: 2f 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49 66  / available.  If
e9f0: 20 74 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20   the cached XML 
ea00: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
ea10: 6c 65 20 6e 61 6d 65 20 76 61 6c 75 65 20 69 73  le name value is
ea20: 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
ea30: 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c  available, the <
ea40: 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d 6c  see cref="GetXml
ea50: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
ea60: 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a  /> method will..
ea70: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65        /// be use
ea80: 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20  d to obtain the 
ea90: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
eaa0: 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20  n file name...  
eab0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
eac0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
ead0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
eae0: 2f 2f 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69  // The XML confi
eaf0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
eb00: 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  me -OR- null if 
eb10: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
eb20: 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f  ermined..      /
eb30: 2f 2f 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65  // or does not e
eb40: 78 69 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  xist...      ///
eb50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
eb60: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
eb70: 63 20 73 74 72 69 6e 67 20 47 65 74 43 61 63 68  c string GetCach
eb80: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
eb90: 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ame()..      {..
eba0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
ebb0: 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
ebc0: 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
ebd0: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
ebe0: 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
ebf0: 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 47  rCount("Method_G
ec00: 65 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69  etCachedXmlConfi
ec10: 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65  gFileName");..#e
ec20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
ec30: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ec40: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
ec50: 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
ec60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ec70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
ec80: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
ec90: 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
eca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecb0: 20 20 72 65 74 75 72 6e 20 63 61 63 68 65 64 58    return cachedX
ecc0: 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
ecd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ece0: 20 20 20 69 66 20 28 6e 6f 58 6d 6c 43 6f 6e 66     if (noXmlConf
ecf0: 69 67 46 69 6c 65 4e 61 6d 65 29 0d 0a 20 20 20  igFileName)..   
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ed10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
ed20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ed30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
ed40: 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d  XmlConfigFileNam
ed50: 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  e();..      }...
ed60: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
edc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
edd0: 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
ede0: 75 72 6e 73 20 74 68 65 20 58 4d 4c 20 63 6f 6e  urns the XML con
edf0: 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20  figuration file 
ee00: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 61 73 73  name for the ass
ee10: 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  embly..      ///
ee20: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
ee30: 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e 44  managed System.D
ee40: 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70 6f  ata.SQLite compo
ee50: 6e 65 6e 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  nents...      //
ee60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ee70: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
ee80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
ee90: 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69   XML configurati
eea0: 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 20 2d 4f 52  on file name -OR
eeb0: 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
eec0: 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
eed0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  d..      /// or 
eee0: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d  does not exist..
eef0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
ef00: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
ef10: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
ef20: 6e 67 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  ng GetXmlConfigF
ef30: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
ef40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
ef50: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
ef60: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
ef70: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
ef80: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
ef90: 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
efa0: 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46  od_GetXmlConfigF
efb0: 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64  ileName");..#end
efc0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65  if..          #e
efd0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
efe0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
eff0: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
f000: 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
f010: 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  me;....#if !PLAT
f020: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
f030: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
f040: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 41 70 70   directory = App
f050: 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
f060: 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
f070: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ry;..          f
f080: 69 6c 65 4e 61 6d 65 20 3d 20 4d 61 79 62 65 43  ileName = MaybeC
f090: 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65 63  ombinePath(direc
f0a0: 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
f0b0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
f0c0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
f0d0: 45 78 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29  Exists(fileName)
f0e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
f0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
f100: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
f110: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
f120: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f130: 20 20 20 20 20 20 20 20 63 61 63 68 65 64 58 6d          cachedXm
f140: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20  lConfigFileName 
f150: 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  = fileName;..   
f160: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
f170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f180: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
f190: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
f1a0: 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
f1b0: 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74   directory = Get
f1c0: 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
f1d0: 72 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20  rectory();..    
f1e0: 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
f1f0: 20 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74   MaybeCombinePat
f200: 68 28 64 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c  h(directory, Xml
f210: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b  ConfigFileName);
f220: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
f230: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69   (File.Exists(fi
f240: 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
f250: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f260: 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
f270: 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
f280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
f2a0: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
f2b0: 6c 65 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d  leName = fileNam
f2c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
f2d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
f2e0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
f2f0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
f300: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f310: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
f320: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
f330: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f340: 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46 69 6c    noXmlConfigFil
f350: 65 4e 61 6d 65 20 3d 20 74 72 75 65 3b 0d 0a 20  eName = true;.. 
f360: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
f370: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
f380: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ull;..      }...
f390: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
f3f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
f400: 2f 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c  // If necessary,
f410: 20 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75   replaces all su
f420: 70 70 6f 72 74 65 64 20 58 4d 4c 20 63 6f 6e 66  pported XML conf
f430: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
f440: 6f 6b 65 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  okens..      ///
f450: 20 77 69 74 68 20 74 68 65 69 72 20 61 73 73 6f   with their asso
f460: 63 69 61 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a  ciated values...
f470: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f480: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f490: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
f4a0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
f4b0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
f4c0: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f4d0: 74 69 6f 6e 20 66 69 6c 65 20 62 65 69 6e 67 20  tion file being 
f4e0: 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  read...      ///
f4f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
f500: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
f510: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
f520: 20 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76   /// A setting v
f530: 61 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 74  alue read from t
f540: 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  he XML configura
f550: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
f560: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f570: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
f580: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
f590: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
f5a0: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
f5b0: 76 61 6c 75 65 22 20 2f 3e 20 77 69 6c 6c 20 61  value" /> will a
f5c0: 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c  ll supported XML
f5d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  ..      /// conf
f5e0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
f5f0: 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65 64 2e 20  okens replaced. 
f600: 20 4e 6f 20 72 65 74 75 72 6e 20 76 61 6c 75 65   No return value
f610: 20 69 73 20 72 65 73 65 72 76 65 64 0d 0a 20 20   is reserved..  
f620: 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 64 69 63      /// to indic
f630: 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 54  ate an error.  T
f640: 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f  his method canno
f650: 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20 20 20 2f  t fail...      /
f660: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
f670: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
f680: 74 69 63 20 73 74 72 69 6e 67 20 52 65 70 6c 61  tic string Repla
f690: 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54  ceXmlConfigFileT
f6a0: 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20  okens(..        
f6b0: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
f6c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e,..          st
f6d0: 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
f6e0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
f6f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
f700: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
f710: 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20  Empty(value)).. 
f720: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f730: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
f740: 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
f750: 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a  pty(fileName))..
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f780: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
f790: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7b0: 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74     string direct
f7c0: 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
f7d0: 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65  rectoryName(file
f7e0: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
f7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f800: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
f810: 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
f820: 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ory))..         
f830: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f850: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
f860: 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
f870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f890: 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74 6f  XmlConfigDirecto
f8a0: 72 79 54 6f 6b 65 6e 2c 20 64 69 72 65 63 74 6f  ryToken, directo
f8b0: 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
f8c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8e0: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
f8f0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
f900: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
f910: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
f920: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
f930: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
f940: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
f950: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
f960: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
f970: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
f980: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
f990: 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20  TRACE_SHARED..  
f9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9b0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
f9f0: 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
fa00: 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
fa10: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
fa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa30: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
fa40: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
fa50: 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61  e, "Native libra
fa60: 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  ry " +..        
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa80: 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61 64 65        "pre-loade
fa90: 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65 70 6c  r failed to repl
faa0: 61 63 65 20 58 4d 4c 20 22 20 2b 0d 0a 20 20 20  ace XML " +..   
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fac0: 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66             "conf
fad0: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 5c  iguration file \
fae0: 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e 73 3a 20 7b  "{0}\" tokens: {
faf0: 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb10: 20 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29      fileName, e)
fb20: 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
fb60: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
fb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb90: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
fba0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
fbc0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
fbd0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
fbf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
fc00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
fc10: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
fc20: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
fc80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
fc90: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
fca0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c   returns the val
fcb0: 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ue of the specif
fcc0: 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73 69  ied setting, usi
fcd0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ng the..      //
fce0: 2f 20 73 70 65 63 69 66 69 65 64 20 58 4d 4c 20  / specified XML 
fcf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
fd00: 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
fd10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
fd20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
fd30: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
fd40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
fd50: 20 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66   of the XML conf
fd60: 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 74  iguration file t
fd70: 6f 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  o read...      /
fd80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fd90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
fda0: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
fdb0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
fdc0: 66 20 74 68 65 20 73 65 74 74 69 6e 67 2e 0d 0a  f the setting...
fdd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
fde0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
fdf0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75  aram name="defau
fe00: 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lt">..      /// 
fe10: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20  The value to be 
fe20: 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20  returned if the 
fe30: 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74 20  setting has not 
fe40: 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63 69  been set explici
fe50: 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  tly..      /// o
fe60: 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  r cannot be dete
fe70: 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
fe80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fe90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
fea0: 6d 65 3d 22 65 78 70 61 6e 64 22 3e 0d 0a 20 20  me="expand">..  
feb0: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
fec0: 20 74 6f 20 65 78 70 61 6e 64 20 61 6e 79 20 65   to expand any e
fed0: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
fee0: 62 6c 65 20 72 65 66 65 72 65 6e 63 65 73 20 63  ble references c
fef0: 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20  ontained in..   
ff00: 20 20 20 2f 2f 2f 20 74 68 65 20 73 65 74 74 69     /// the setti
ff10: 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  ng value to be r
ff20: 65 74 75 72 6e 65 64 2e 20 20 54 68 69 73 20 68  eturned.  This h
ff30: 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
ff40: 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20  the .NET..      
ff50: 2f 2f 2f 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  /// Compact Fram
ff60: 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 2f 2f  ework...      //
ff70: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ff80: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
ff90: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
ffa0: 61 6c 75 65 20 6f 66 20 74 68 65 20 73 65 74 74  alue of the sett
ffb0: 69 6e 67 20 2d 4f 52 2d 20 74 68 65 20 64 65 66  ing -OR- the def
ffc0: 61 75 6c 74 20 76 61 6c 75 65 20 73 70 65 63 69  ault value speci
ffd0: 66 69 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  fied by..      /
ffe0: 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
fff0: 65 3d 22 64 65 66 61 75 6c 74 22 20 2f 3e 20 69  e="default" /> i
10000 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 65  f it has not bee
10010 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
10020 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63   or..      /// c
10030 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
10040 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
10050 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10060 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10070 20 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69   string GetSetti
10080 6e 67 56 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e  ngValueViaXmlCon
10090 66 69 67 46 69 6c 65 28 0d 0a 20 20 20 20 20 20  figFile(..      
100a0 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
100b0 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ame, /* in */.. 
100c0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
100d0 6e 61 6d 65 2c 20 20 20 20 20 2f 2a 20 69 6e 20  name,     /* in 
100e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  */..          st
100f0 72 69 6e 67 20 40 64 65 66 61 75 6c 74 2c 20 2f  ring @default, /
10100 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
10110 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 20     bool expand  
10120 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
10130 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10140 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72   {..          tr
10150 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  y..          {..
10160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
10170 20 28 28 66 69 6c 65 4e 61 6d 65 20 3d 3d 20 6e   ((fileName == n
10180 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 20 3d 3d  ull) || (name ==
10190 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
101a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
101b0 6e 20 40 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20  n @default;.... 
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c               Xml
101d0 44 6f 63 75 6d 65 6e 74 20 64 6f 63 75 6d 65 6e  Document documen
101e0 74 20 3d 20 6e 65 77 20 58 6d 6c 44 6f 63 75 6d  t = new XmlDocum
101f0 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ent();....      
10200 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
10210 2e 4c 6f 61 64 28 66 69 6c 65 4e 61 6d 65 29 3b  .Load(fileName);
10220 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a   /* throw */....
10230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 6d                Xm
10240 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74  lElement element
10250 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 53 65 6c 65   = document.Sele
10260 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28 0d 0a 20  ctSingleNode(.. 
10270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10280 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
10290 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
102a0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
102b0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
102c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 63               "/c
102d0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 61 70 70  onfiguration/app
102e0 53 65 74 74 69 6e 67 73 2f 61 64 64 5b 40 6b 65  Settings/add[@ke
102f0 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e 61 6d 65 29  y='{0}']", name)
10300 29 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ) as..          
10310 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
10320 6e 74 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  nt; /* throw */.
10330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10340 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 21 3d 20   if (element != 
10350 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10360 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10370 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
10380 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
10390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103a0 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e      if (element.
103b0 48 61 73 41 74 74 72 69 62 75 74 65 28 22 76 61  HasAttribute("va
103c0 6c 75 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  lue"))..        
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
103e0 6c 75 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 47 65  lue = element.Ge
103f0 74 41 74 74 72 69 62 75 74 65 28 22 76 61 6c 75  tAttribute("valu
10400 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e");....        
10410 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
10420 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
10430 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
10440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10450 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
10460 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
10470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10480 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70 61          if (expa
10490 6e 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nd)..           
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
104b0 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65  alue = Environme
104c0 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e  nt.ExpandEnviron
104d0 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 76 61  mentVariables(va
104e0 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue);....       
104f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10500 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65 45 6e  alue = ReplaceEn
10510 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
10520 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65 29 3b 0d  eTokens(value);.
10530 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
10540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10550 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63 65   value = Replace
10560 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 54 6f 6b  XmlConfigFileTok
10570 65 6e 73 28 66 69 6c 65 4e 61 6d 65 2c 20 76 61  ens(fileName, va
10580 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
10590 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
105c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
105d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
105e0 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
105f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10600 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
10610 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
10620 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
10630 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
10640 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
10650 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
10660 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
10670 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
10680 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
10690 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
106a0 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
106b0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
106c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
106d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
106e0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
106f0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
10700 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
10730 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
10740 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
10750 2b 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 22 70 72 65 2d 6c 6f           "pre-lo
10770 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67  ader failed to g
10780 65 74 20 73 65 74 74 69 6e 67 20 5c 22 7b 30 7d  et setting \"{0}
10790 5c 22 20 76 61 6c 75 65 20 22 20 2b 0d 0a 20 20  \" value " +..  
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 20 20 20 20 22 66 72 6f 6d 20 58 4d 4c 20 63 6f      "from XML co
107c0 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
107d0 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32 7d 22 2c 20   \"{1}\": {2}", 
107e0 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  name,..         
107f0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
10800 65 4e 61 6d 65 2c 20 65 29 29 3b 20 2f 2a 20 74  eName, e)); /* t
10810 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
10820 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10830 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10860 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
10870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10880 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
10890 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
108a0 20 20 20 20 72 65 74 75 72 6e 20 40 64 65 66 61      return @defa
108b0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ult;..      }...
108c0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
108d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10910 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
10920 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
10930 52 4b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  RK..      /// <s
10940 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10950 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64  // Attempts to d
10960 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 61 72  etermine the tar
10970 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
10980 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 74 68  tribute value th
10990 61 74 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  at is..      ///
109a0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
109b0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
109c0 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79 2c  anaged assembly,
109d0 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d   if applicable..
109e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
109f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
10a00 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 73   <param name="as
10a10 73 65 6d 62 6c 79 22 3e 0d 0a 20 20 20 20 20 20  sembly">..      
10a20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
10a30 61 73 73 65 6d 62 6c 79 20 74 6f 20 72 65 61 64  assembly to read
10a40 20 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d   the target fram
10a50 65 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20  ework attribute 
10a60 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
10a70 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f   from...      //
10a80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10a90 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10aa0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
10ab0 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61 72 67  alue of the targ
10ac0 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74  et framework att
10ad0 72 69 62 75 74 65 20 76 61 6c 75 65 20 66 6f 72  ribute value for
10ae0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
10af0 20 20 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65        /// manage
10b00 64 20 61 73 73 65 6d 62 6c 79 20 2d 4f 52 2d 20  d assembly -OR- 
10b10 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
10b20 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
10b30 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20    If this..     
10b40 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 20 77 61   /// assembly wa
10b50 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
10b60 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  a version of the
10b70 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
10b80 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20  prior to..      
10b90 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 34 2e 30 2c  /// version 4.0,
10ba0 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
10bb0 6e 65 64 20 4d 41 59 20 72 65 66 6c 65 63 74 20  ned MAY reflect 
10bc0 74 68 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20  that version of 
10bd0 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20  the .NET..      
10be0 2f 2f 2f 20 46 72 61 6d 65 77 6f 72 6b 20 69 6e  /// Framework in
10bf0 73 74 65 61 64 20 6f 66 20 74 68 65 20 6f 6e 65  stead of the one
10c00 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
10c10 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
10c20 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20 2f 2f  anaged..      //
10c30 2f 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20  / assembly...   
10c40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10c50 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
10c60 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
10c70 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74  etAssemblyTarget
10c80 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20  Framework(..    
10c90 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
10ca0 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20  ssembly..       
10cb0 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
10cc0 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
10cd0 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  embly != null)..
10ce0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
10cf0 20 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34   NET_40 || NET_4
10d00 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
10d10 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
10d20 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
10d30 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
10d40 37 20 7c 7c 20 4e 45 54 5f 34 37 31 20 7c 7c 20  7 || NET_471 || 
10d50 4e 45 54 5f 34 37 32 0d 0a 20 20 20 20 20 20 20  NET_472..       
10d60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
10d70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
10d90 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65  f (assembly.IsDe
10da0 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20  fined(..        
10db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dc0 20 20 74 79 70 65 6f 66 28 54 61 72 67 65 74 46    typeof(TargetF
10dd0 72 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74  rameworkAttribut
10de0 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20  e), false))..   
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10e10 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46 72          TargetFr
10e20 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65  ameworkAttribute
10e30 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
10e40 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
10e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 54                (T
10e60 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74  argetFrameworkAt
10e70 74 72 69 62 75 74 65 29 0d 0a 20 20 20 20 20 20  tribute)..      
10e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e90 20 20 20 20 61 73 73 65 6d 62 6c 79 2e 47 65 74      assembly.Get
10ea0 43 75 73 74 6f 6d 41 74 74 72 69 62 75 74 65 73  CustomAttributes
10eb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ed0 20 74 79 70 65 6f 66 28 54 61 72 67 65 74 46 72   typeof(TargetFr
10ee0 61 6d 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65  ameworkAttribute
10ef0 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d  ), false)[0];...
10f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10f10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61         return ta
10f20 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 2e 46 72  rgetFramework.Fr
10f30 61 6d 65 77 6f 72 6b 4e 61 6d 65 3b 0d 0a 20 20  ameworkName;..  
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
10f60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10f70 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
10f80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10f90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
10fa0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
10fb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c            }..#el
10fc0 69 66 20 4e 45 54 5f 33 35 0d 0a 20 20 20 20 20  if NET_35..     
10fd0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10fe0 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 2c 56  ".NETFramework,V
10ff0 65 72 73 69 6f 6e 3d 76 33 2e 35 22 3b 0d 0a 23  ersion=v3.5";..#
11000 65 6c 69 66 20 4e 45 54 5f 32 30 0d 0a 20 20 20  elif NET_20..   
11010 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11020 6e 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b  n ".NETFramework
11030 2c 56 65 72 73 69 6f 6e 3d 76 32 2e 30 22 3b 0d  ,Version=v2.0";.
11040 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
11050 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11060 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
11070 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11080 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
110d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
110e0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 63 63  >..      /// Acc
110f0 65 70 74 73 20 61 20 6c 6f 6e 67 20 74 61 72 67  epts a long targ
11100 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74 74  et framework att
11110 72 69 62 75 74 65 20 76 61 6c 75 65 20 61 6e 64  ribute value and
11120 20 6d 61 6b 65 73 20 69 74 20 69 6e 74 6f 20 61   makes it into a
11130 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 75 63 68  ..      /// much
11140 20 73 68 6f 72 74 65 72 20 76 65 72 73 69 6f 6e   shorter version
11150 2c 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75  , suitable for u
11160 73 65 20 77 69 74 68 20 4e 75 47 65 74 20 70 61  se with NuGet pa
11170 63 6b 61 67 65 73 2e 0d 0a 20 20 20 20 20 20 2f  ckages...      /
11180 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11190 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
111a0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
111b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 6f 6e       /// The lon
111c0 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f  g target framewo
111d0 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61 6c  rk attribute val
111e0 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ue to convert...
111f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
11200 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
11210 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
11220 2f 2f 20 54 68 65 20 73 68 6f 72 74 20 74 61 72  // The short tar
11230 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 61 74  get framework at
11240 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 2d 4f  tribute value -O
11250 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
11260 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nnot..      /// 
11270 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 6f 72  be determined or
11280 20 63 6f 6e 76 65 72 74 65 64 2e 0d 0a 20 20 20   converted...   
11290 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
112a0 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
112b0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 41   static string A
112c0 62 62 72 65 76 69 61 74 65 54 61 72 67 65 74 46  bbreviateTargetF
112d0 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20  ramework(..     
112e0 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
112f0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
11300 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11310 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
11320 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75  NullOrEmpty(valu
11330 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
11340 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
11350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
11360 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c  lue = value.Repl
11370 61 63 65 28 22 2e 4e 45 54 46 72 61 6d 65 77 6f  ace(".NETFramewo
11380 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 22 2c 20 22  rk,Version=v", "
11390 6e 65 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  net");..        
113a0 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e    value = value.
113b0 52 65 70 6c 61 63 65 28 22 2e 22 2c 20 53 74 72  Replace(".", Str
113c0 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 0d 0a 20  ing.Empty);.... 
113d0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
113e0 65 78 20 3d 20 76 61 6c 75 65 2e 49 6e 64 65 78  ex = value.Index
113f0 4f 66 28 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20 20  Of(',');....    
11400 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20        if (index 
11410 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20  != -1)..        
11420 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61        value = va
11430 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c  lue.Substring(0,
11440 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20   index);....    
11450 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
11460 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ue;..      }....
11470 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 0d  ///////////////.
114c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
114d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
114e0 2f 20 49 66 20 6e 65 63 65 73 73 61 72 79 2c 20  / If necessary, 
114f0 72 65 70 6c 61 63 65 73 20 61 6c 6c 20 73 75 70  replaces all sup
11500 70 6f 72 74 65 64 20 65 6e 76 69 72 6f 6e 6d 65  ported environme
11510 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 6b 65  nt variable toke
11520 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  ns..      /// wi
11530 74 68 20 74 68 65 69 72 20 61 73 73 6f 63 69 61  th their associa
11540 74 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  ted values...   
11550 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11560 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
11570 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
11580 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  >..      /// A s
11590 65 74 74 69 6e 67 20 76 61 6c 75 65 20 72 65 61  etting value rea
115a0 64 20 66 72 6f 6d 20 61 6e 20 65 6e 76 69 72 6f  d from an enviro
115b0 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d  nment variable..
115c0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
115d0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
115e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
115f0 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66  /// The value of
11600 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e   the <paramref n
11610 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77  ame="value" /> w
11620 69 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65  ill all supporte
11630 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76  d..      /// env
11640 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
11650 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63 65  e tokens replace
11660 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76 61  d.  No return va
11670 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64 0d  lue is reserved.
11680 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e  .      /// to in
11690 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72 2e  dicate an error.
116a0 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61    This method ca
116b0 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20 20  nnot fail...    
116c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
116d0 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
116e0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52 65  static string Re
116f0 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74  placeEnvironment
11700 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e 73 28 0d  VariableTokens(.
11710 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
11720 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
11730 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
11740 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
11750 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
11760 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
11770 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11780 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
11790 72 65 63 74 6f 72 79 20 3d 20 47 65 74 43 61 63  rectory = GetCac
117a0 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63  hedAssemblyDirec
117b0 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
117c0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
117d0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
117e0 74 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a  ty(directory))..
117f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11810 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11820 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11840 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65     value = value
11850 2e 52 65 70 6c 61 63 65 28 0d 0a 20 20 20 20 20  .Replace(..     
11860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11870 20 20 20 20 20 41 73 73 65 6d 62 6c 79 44 69 72       AssemblyDir
11880 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72  ectoryToken, dir
11890 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  ectory);..      
118a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
118b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
118c0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
118d0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
118e0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
118f0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
11900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11910 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
11920 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
11930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11940 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
11950 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
11960 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
11970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
11980 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
11990 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119b0 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
119c0 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
119d0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
119e0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
119f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a00 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
11a10 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e  rrentCulture, "N
11a20 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20  ative library " 
11a30 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
11a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a50 20 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69   "pre-loader fai
11a60 6c 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 61  led to replace a
11a70 73 73 65 6d 62 6c 79 20 22 20 2b 0d 0a 20 20 20  ssembly " +..   
11a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a90 20 20 20 20 20 20 20 20 20 20 20 22 64 69 72 65             "dire
11aa0 63 74 6f 72 79 20 74 6f 6b 65 6e 3a 20 7b 30 7d  ctory token: {0}
11ab0 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
11ac0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
11ad0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11af0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11b30 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
11b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b50 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
11b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11b80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
11b90 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
11ba0 73 65 6d 62 6c 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  sembly = null;..
11bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11bc0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
11bd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11be0 20 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79          assembly
11bf0 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
11c00 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
11c10 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
11c20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
11c30 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
11c40 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
11c50 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
11c60 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
11c70 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
11c80 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
11c90 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
11ca0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
11cb0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
11cc0 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52  20 && TRACE_SHAR
11cd0 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
11ce0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d10 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
11d20 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
11d30 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
11d40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11d50 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
11d60 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
11d70 43 75 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65  Culture, "Native
11d80 20 6c 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20   library " +..  
11d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11da0 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
11db0 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6f 62  der failed to ob
11dc0 74 61 69 6e 20 65 78 65 63 75 74 69 6e 67 20 22  tain executing "
11dd0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
11de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61                "a
11df0 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
11e00 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
11e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11e30 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
11e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11e60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
11e70 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
11e80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
11e90 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
11ea0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
11eb0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
11ec0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 3d  argetFramework =
11ed0 20 41 62 62 72 65 76 69 61 74 65 54 61 72 67 65   AbbreviateTarge
11ee0 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a 20 20 20  tFramework(..   
11ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
11f00 65 74 41 73 73 65 6d 62 6c 79 54 61 72 67 65 74  etAssemblyTarget
11f10 46 72 61 6d 65 77 6f 72 6b 28 61 73 73 65 6d 62  Framework(assemb
11f20 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly));....       
11f30 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
11f40 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
11f50 28 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (targetFramework
11f60 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11f70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11f80 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
11f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11fb0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76         value = v
11fc0 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 0d 0a 20  alue.Replace(.. 
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 20 20 20 20 20 20 20 54 61 72 67 65 74 46           TargetF
11ff0 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 2c 20 74  rameworkToken, t
12000 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 3b  argetFramework);
12010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12020 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
12030 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
12040 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
12050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
12060 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
12070 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
12080 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
12090 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
120a0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
120b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
120c0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
120d0 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d  && TRACE_SHARED.
120e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120f0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12110 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
12130 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
12140 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
12150 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12170 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
12180 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
12190 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69  ture, "Native li
121a0 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20  brary " +..     
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121c0 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f           "pre-lo
121d0 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72  ader failed to r
121e0 65 70 6c 61 63 65 20 74 61 72 67 65 74 20 22 20  eplace target " 
121f0 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 22 66 72 61 6d 65 77 6f 72 6b 20 74 6f 6b 65   "framework toke
12220 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a  n: {0}", e)); /*
12230 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
12240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12250 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12260 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
12270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12280 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
122b0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
122c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
122d0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
122e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
122f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12300 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12310 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
12320 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  ;..      }..#end
12330 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  if....      ////
12340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
12390 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
123a0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
123b0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  d returns the va
123c0 6c 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  lue of the speci
123d0 66 69 65 64 20 73 65 74 74 69 6e 67 2c 20 75 73  fied setting, us
123e0 69 6e 67 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  ing the XML..   
123f0 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
12400 74 69 6f 6e 20 66 69 6c 65 20 61 6e 64 2f 6f 72  tion file and/or
12410 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
12420 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 74   variables for t
12430 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
12440 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 20 61 6e    /// process an
12450 64 2f 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  d/or the current
12460 20 73 79 73 74 65 6d 2c 20 77 68 65 6e 20 61 76   system, when av
12470 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
12480 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12490 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
124a0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
124b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
124c0 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
124d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
124e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
124f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
12500 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20 2f  fault">..      /
12510 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20  // The value to 
12520 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
12530 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e  he setting has n
12540 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c  ot been set expl
12550 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f  icitly..      //
12560 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64  / or cannot be d
12570 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
12580 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
12590 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
125a0 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
125b0 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
125c0 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65  setting -OR- the
125d0 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73   default value s
125e0 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20  pecified by..   
125f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
12600 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20   name="default" 
12610 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74  /> if it has not
12620 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
12630 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f  itly or..      /
12640 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
12650 65 72 6d 69 6e 65 64 2e 20 20 42 79 20 64 65 66  ermined.  By def
12660 61 75 6c 74 2c 20 61 6c 6c 20 72 65 66 65 72 65  ault, all refere
12670 6e 63 65 73 20 74 6f 20 65 78 69 73 74 69 6e 67  nces to existing
12680 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 6e 76 69  ..      /// envi
12690 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
126a0 73 20 77 69 6c 6c 20 62 65 20 65 78 70 61 6e 64  s will be expand
126b0 65 64 20 74 6f 20 74 68 65 69 72 20 63 6f 72 72  ed to their corr
126c0 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 73  esponding values
126d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68  ..      /// with
126e0 69 6e 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20  in the value to 
126f0 62 65 20 72 65 74 75 72 6e 65 64 20 75 6e 6c 65  be returned unle
12700 73 73 20 65 69 74 68 65 72 20 74 68 65 20 22 4e  ss either the "N
12710 6f 5f 45 78 70 61 6e 64 22 20 6f 72 0d 0a 20 20  o_Expand" or..  
12720 20 20 20 20 2f 2f 2f 20 22 4e 6f 5f 45 78 70 61      /// "No_Expa
12730 6e 64 5f 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  nd_<paramref nam
12740 65 3d 22 6e 61 6d 65 22 20 2f 3e 22 20 65 6e 76  e="name" />" env
12750 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
12760 65 20 69 73 20 73 65 74 20 5b 74 6f 0d 0a 20 20  e is set [to..  
12770 20 20 20 20 2f 2f 2f 20 61 6e 79 74 68 69 6e 67      /// anything
12780 5d 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ]...      /// </
12790 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
127a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
127b0 73 74 72 69 6e 67 20 47 65 74 53 65 74 74 69 6e  string GetSettin
127c0 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  gValue(..       
127d0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
127e0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
127f0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64         string @d
12800 65 66 61 75 6c 74 20 2f 2a 20 69 6e 20 2a 2f 0d  efault /* in */.
12810 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
12820 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
12830 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
12840 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
12850 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
12860 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73  / NOTE: If the s
12870 70 65 63 69 61 6c 20 22 4e 6f 5f 53 51 4c 69 74  pecial "No_SQLit
12880 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  eGetSettingValue
12890 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20  " environment.. 
128a0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
128b0 20 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65    variable is se
128c0 74 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c  t [to anything],
128d0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
128e0 6c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20  l always..      
128f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74      //       ret
12900 75 72 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  urn the default 
12910 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
12920 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12930 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
12940 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
12950 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
12960 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51 4c           "No_SQL
12970 69 74 65 47 65 74 53 65 74 74 69 6e 67 56 61 6c  iteGetSettingVal
12980 75 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ue") != null).. 
12990 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
129a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
129b0 20 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20   @default;..    
129c0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
129d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
129e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
12a30 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
12a40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12a50 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
12a60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
12a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12ac0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
12ad0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
12ae0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
12af0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
12b00 2f 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 61  / NOTE: We are a
12b10 62 6f 75 74 20 74 6f 20 72 65 61 64 20 61 20 73  bout to read a s
12b20 65 74 74 69 6e 67 20 76 61 6c 75 65 20 66 72 6f  etting value fro
12b30 6d 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  m the environmen
12b40 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
12b50 20 20 20 20 20 20 6f 72 20 70 6f 73 73 69 62 6c        or possibl
12b60 79 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 20 63  y from the XML c
12b70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
12b80 65 3b 20 63 72 65 61 74 65 20 6f 72 0d 0a 20 20  e; create or..  
12b90 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
12ba0 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 61   increment the a
12bb0 70 70 72 6f 70 72 69 61 74 65 20 73 74 61 74 69  ppropriate stati
12bc0 73 74 69 63 20 6e 6f 77 2e 0d 0a 20 20 20 20 20  stic now...     
12bd0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
12be0 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
12bf0 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
12c00 64 43 6f 75 6e 74 28 6e 61 6d 65 2c 20 66 61 6c  dCount(name, fal
12c10 73 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  se);..#endif..  
12c20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
12c30 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
12c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
12c90 20 20 20 62 6f 6f 6c 20 65 78 70 61 6e 64 20 3d     bool expand =
12ca0 20 74 72 75 65 3b 20 2f 2a 20 53 48 41 52 45 44   true; /* SHARED
12cb0 3a 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 2d 41  : Environment -A
12cc0 4e 44 2d 20 58 4d 4c 20 63 6f 6e 66 69 67 20 66  ND- XML config f
12cd0 69 6c 65 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  ile. */....     
12ce0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
12d30 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
12d40 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
12d50 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
12d60 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  alue = null;....
12d70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
12d80 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
12d90 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
12da0 28 22 4e 6f 5f 45 78 70 61 6e 64 22 29 20 21 3d  ("No_Expand") !=
12db0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12dc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12dd0 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c 73     expand = fals
12de0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
12df0 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20  .          else 
12e00 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e  if (Environment.
12e10 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61  GetEnvironmentVa
12e20 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  riable(..       
12e30 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
12e40 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
12e50 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
12e60 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
12e70 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
12e80 20 20 20 20 20 20 20 22 4e 6f 5f 45 78 70 61 6e         "No_Expan
12e90 64 5f 7b 30 7d 22 2c 20 6e 61 6d 65 29 29 20 21  d_{0}", name)) !
12ea0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12eb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12ec0 20 20 20 20 65 78 70 61 6e 64 20 3d 20 66 61 6c      expand = fal
12ed0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
12ee0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ....          va
12ef0 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  lue = Environmen
12f00 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74  t.GetEnvironment
12f10 56 61 72 69 61 62 6c 65 28 6e 61 6d 65 29 3b 0d  Variable(name);.
12f20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
12f30 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
12f40 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d 0a  rEmpty(value))..
12f50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12f60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
12f70 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20 20  xpand)..        
12f80 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
12f90 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78  = Environment.Ex
12fa0 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  pandEnvironmentV
12fb0 61 72 69 61 62 6c 65 73 28 76 61 6c 75 65 29 3b  ariables(value);
12fc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12fd0 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61 63    value = Replac
12fe0 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69  eEnvironmentVari
12ff0 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75 65  ableTokens(value
13000 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
13010 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
13020 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
13030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
13040 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 0d 0a  eturn value;....
13050 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13060 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
13070 20 49 66 20 74 68 65 20 22 4e 6f 5f 53 51 4c 69   If the "No_SQLi
13080 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 22  teXmlConfigFile"
13090 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
130a0 69 61 62 6c 65 20 69 73 0d 0a 20 20 20 20 20 20  iable is..      
130b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74      //       set
130c0 20 5b 74 6f 20 61 6e 79 74 68 69 6e 67 5d 2c 20   [to anything], 
130d0 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c  this method will
130e0 20 4e 45 56 45 52 20 72 65 61 64 20 66 72 6f 6d   NEVER read from
130f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20   the..          
13100 2f 2f 20 20 20 20 20 20 20 58 4d 4c 20 63 6f 6e  //       XML con
13110 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e  figuration file.
13120 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
13130 20 20 20 20 20 20 20 20 20 20 69 66 20 28 45 6e            if (En
13140 76 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76  vironment.GetEnv
13150 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
13160 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
13170 20 20 20 22 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c     "No_SQLiteXml
13180 43 6f 6e 66 69 67 46 69 6c 65 22 29 20 21 3d 20  ConfigFile") != 
13190 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
131a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
131b0 20 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c    return @defaul
131c0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  t;..          }.
131d0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
131e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
131f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13230 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
13240 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79  Debug Build Only
13250 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
13260 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
13270 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
13280 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72 65   are about to re
13290 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61 6c  ad a setting val
132a0 75 65 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ue from the XML.
132b0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
132c0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
132d0 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65 20 6f  n file; create o
132e0 72 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20  r increment the 
132f0 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20  appropriate..   
13300 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
13310 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e 0d 0a  statistic now...
13320 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
13330 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61 74          DebugDat
13340 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74 74 69  a.IncrementSetti
13350 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61 6d 65  ngReadCount(name
13360 2c 20 74 72 75 65 29 3b 0d 0a 23 65 6e 64 69 66  , true);..#endif
13370 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
13380 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
13390 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
133e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
133f0 74 53 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61  tSettingValueVia
13400 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a  XmlConfigFile(..
13410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
13420 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  tCachedXmlConfig
13430 46 69 6c 65 4e 61 6d 65 28 29 2c 20 6e 61 6d 65  FileName(), name
13440 2c 20 40 64 65 66 61 75 6c 74 2c 20 65 78 70 61  , @default, expa
13450 6e 64 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  nd);..      }...
13460 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
134b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
134c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
134d0 52 4b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  RK..      privat
134e0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
134f0 4c 69 73 74 54 6f 53 74 72 69 6e 67 28 49 4c 69  ListToString(ILi
13500 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74 29  st<string> list)
13510 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
13520 20 20 20 20 20 69 66 20 28 6c 69 73 74 20 3d 3d       if (list ==
13530 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13540 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
13550 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
13560 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 72 65  StringBuilder re
13570 73 75 6c 74 20 3d 20 6e 65 77 20 53 74 72 69 6e  sult = new Strin
13580 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20  gBuilder();.... 
13590 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
135a0 20 28 73 74 72 69 6e 67 20 65 6c 65 6d 65 6e 74   (string element
135b0 20 69 6e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20   in list)..     
135c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
135d0 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
135e0 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
135f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
13600 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
13610 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
13620 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d  ult.Length > 0).
13630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13640 20 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64     result.Append
13650 28 27 20 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (' ');....      
13660 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
13670 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 29 3b 0d  ppend(element);.
13680 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13690 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
136a0 20 72 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67   result.ToString
136b0 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ();..      }....
136c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
136d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13710 0a 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  ...      private
13720 20 73 74 61 74 69 63 20 69 6e 74 20 43 68 65 63   static int Chec
13730 6b 46 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  kForArchitecture
13740 73 41 6e 64 50 6c 61 74 66 6f 72 6d 73 28 0d 0a  sAndPlatforms(..
13750 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13760 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
13770 20 20 20 20 20 20 20 72 65 66 20 4c 69 73 74 3c         ref List<
13780 73 74 72 69 6e 67 3e 20 6d 61 74 63 68 65 73 0d  string> matches.
13790 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
137a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
137b0 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b   int result = 0;
137c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
137d0 20 28 6d 61 74 63 68 65 73 20 3d 3d 20 6e 75 6c   (matches == nul
137e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
137f0 20 20 6d 61 74 63 68 65 73 20 3d 20 6e 65 77 20    matches = new 
13800 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
13810 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
13820 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
13830 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
13840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
13850 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
13860 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f  lOrEmpty(directo
13870 72 79 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ry) &&..        
13880 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65            (proce
13890 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
138a0 50 6c 61 74 66 6f 72 6d 73 20 21 3d 20 6e 75 6c  Platforms != nul
138b0 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
138c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
138d0 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
138e0 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73 74  (KeyValuePair<st
138f0 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70 61  ring, string> pa
13900 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
13910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13920 69 6e 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68  in processorArch
13930 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d  itecturePlatform
13940 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
13950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13970 66 20 28 44 69 72 65 63 74 6f 72 79 2e 45 78 69  f (Directory.Exi
13980 73 74 73 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  sts(MaybeCombine
13990 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c 20  Path(directory, 
139a0 70 61 69 72 2e 4b 65 79 29 29 29 0d 0a 20 20 20  pair.Key)))..   
139b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
139d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139e0 6d 61 74 63 68 65 73 2e 41 64 64 28 70 61 69 72  matches.Add(pair
139f0 2e 4b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  .Key);..        
13a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a10 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20    result++;..   
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
13a50 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 70 61 69  ring value = pai
13a60 72 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  r.Value;....    
13a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a80 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
13a90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ab0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
13ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ad0 20 20 20 69 66 20 28 44 69 72 65 63 74 6f 72 79     if (Directory
13ae0 2e 45 78 69 73 74 73 28 4d 61 79 62 65 43 6f 6d  .Exists(MaybeCom
13af0 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
13b00 72 79 2c 20 76 61 6c 75 65 29 29 29 0d 0a 20 20  ry, value)))..  
13b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b40 20 6d 61 74 63 68 65 73 2e 41 64 64 28 76 61 6c   matches.Add(val
13b50 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
13b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b70 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
13b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13ba0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13bb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13bc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13bd0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
13be0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
13bf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d  /////////////...
13c40 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
13c50 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b  tatic bool Check
13c60 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73 65  AssemblyCodeBase
13c70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 41 73 73  (..          Ass
13c80 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 2c 0d  embly assembly,.
13c90 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73  .          ref s
13ca0 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a  tring fileName..
13cb0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
13cc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13cd0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
13ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13cf0 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20  if (assembly == 
13d00 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13d10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13d20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
13d30 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
13d40 6f 64 65 42 61 73 65 20 3d 20 61 73 73 65 6d 62  odeBase = assemb
13d50 6c 79 2e 43 6f 64 65 42 61 73 65 3b 0d 0a 0d 0a  ly.CodeBase;....
13d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13d70 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
13d80 72 45 6d 70 74 79 28 63 6f 64 65 42 61 73 65 29  rEmpty(codeBase)
13d90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13da0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
13db0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
13dc0 20 20 20 20 55 72 69 20 75 72 69 20 3d 20 6e 65      Uri uri = ne
13dd0 77 20 55 72 69 28 63 6f 64 65 42 61 73 65 29 3b  w Uri(codeBase);
13de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13df0 73 74 72 69 6e 67 20 6c 6f 63 61 6c 46 69 6c 65  string localFile
13e00 4e 61 6d 65 20 3d 20 75 72 69 2e 4c 6f 63 61 6c  Name = uri.Local
13e10 50 61 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Path;....       
13e20 20 20 20 20 20 20 20 69 66 20 28 21 46 69 6c 65         if (!File
13e30 2e 45 78 69 73 74 73 28 6c 6f 63 61 6c 46 69 6c  .Exists(localFil
13e40 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
13e50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13e60 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
13e70 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13e80 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61 74   directory = Pat
13e90 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61  h.GetDirectoryNa
13ea0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
13eb0 20 20 20 20 20 20 20 6c 6f 63 61 6c 46 69 6c 65         localFile
13ec0 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
13ed0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
13ee0 20 20 20 20 73 74 72 69 6e 67 20 78 6d 6c 43 6f      string xmlCo
13ef0 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 4d  nfigFileName = M
13f00 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
13f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13f20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2c 20 58      directory, X
13f30 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
13f40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13f50 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69      if (File.Exi
13f60 73 74 73 28 78 6d 6c 43 6f 6e 66 69 67 46 69 6c  sts(xmlConfigFil
13f70 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
13f80 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
13f90 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
13fa0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
13fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13fc0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
13fd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ff0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
14000 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
14010 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
14020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14030 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
14040 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
14050 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
14060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14070 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
14080 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
14090 6e 64 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  nd XML configura
140a0 74 69 6f 6e 20 66 69 6c 65 20 22 20 2b 0d 0a 20  tion file " +.. 
140b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140c0 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
140d0 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
140e0 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
140f0 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
14100 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
14110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
14120 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65  mlConfigFileName
14130 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
14140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14150 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14160 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14190 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
141a0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
141b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
141c0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
141d0 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
141e0 61 6d 65 20 3d 20 6c 6f 63 61 6c 46 69 6c 65 4e  ame = localFileN
141f0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
14200 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
14210 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
14220 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14230 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69         List<stri
14240 6e 67 3e 20 6d 61 74 63 68 65 73 20 3d 20 6e 75  ng> matches = nu
14250 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
14260 20 20 20 20 20 69 66 20 28 43 68 65 63 6b 46 6f       if (CheckFo
14270 72 41 72 63 68 69 74 65 63 74 75 72 65 73 41 6e  rArchitecturesAn
14280 64 50 6c 61 74 66 6f 72 6d 73 28 64 69 72 65 63  dPlatforms(direc
14290 74 6f 72 79 2c 20 72 65 66 20 6d 61 74 63 68 65  tory, ref matche
142a0 73 29 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  s) > 0)..       
142b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
142c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
142d0 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e   TRACE_DETECTION
142e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
142f0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
14300 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14320 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
14330 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
14340 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
14350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14360 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
14370 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
14380 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
14390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143a0 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72    "Native librar
143b0 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75  y pre-loader fou
143c0 6e 64 20 6e 61 74 69 76 65 20 73 75 62 2d 64 69  nd native sub-di
143d0 72 65 63 74 6f 72 69 65 73 20 22 20 2b 0d 0a 20  rectories " +.. 
143e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143f0 20 20 20 20 20 20 20 20 20 22 76 69 61 20 63 6f           "via co
14400 64 65 20 62 61 73 65 20 66 6f 72 20 63 75 72 72  de base for curr
14410 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
14420 61 73 73 65 6d 62 6c 79 3a 20 5c 22 7b 30 7d 5c  assembly: \"{0}\
14430 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "",..           
14440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c                 L
14450 69 73 74 54 6f 53 74 72 69 6e 67 28 6d 61 74 63  istToString(matc
14460 68 65 73 29 29 29 3b 20 2f 2a 20 74 68 72 6f 77  hes))); /* throw
14470 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
14480 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
14490 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
144a0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
144b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
144c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
144d0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144f0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
14500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
14510 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 46  ileName = localF
14520 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
14530 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14540 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
14550 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14560 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14570 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
14580 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f      }..#if !NET_
14590 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
145a0 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
145b0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
145c0 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
145d0 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63  ..          catc
145e0 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23  h (Exception)..#
145f0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
14600 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
14610 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
14620 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
14630 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
14640 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
14660 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
14670 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
14680 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
14690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146a0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
146b0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
146c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
146d0 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62       "Native lib
146e0 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
146f0 66 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20  failed to check 
14700 63 6f 64 65 20 62 61 73 65 20 22 20 2b 0d 0a 20  code base " +.. 
14710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14720 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65 6e       "for curren
14730 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61 73  tly executing as
14740 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65 29  sembly: {0}", e)
14750 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
14760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
14780 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
14790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
147a0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
147b0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
147c0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
147d0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
147e0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
147f0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
14800 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
14810 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
14860 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14870 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 65 73  >..      /// Res
14880 65 74 73 20 74 68 65 20 63 61 63 68 65 64 20 61  ets the cached a
14890 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
148a0 79 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66 6f  y value, thus fo
148b0 72 63 69 6e 67 20 74 68 65 20 6e 65 78 74 0d 0a  rcing the next..
148c0 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 20 74        /// call t
148d0 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74  o <see cref="Get
148e0 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69  CachedAssemblyDi
148f0 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
14900 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20 20  od to rely..    
14910 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20 3c    /// upon the <
14920 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
14930 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
14940 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65 74  /> method to fet
14950 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ch the..      //
14960 2f 20 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63  / assembly direc
14970 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tory...      ///
14980 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14990 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
149a0 63 20 76 6f 69 64 20 52 65 73 65 74 43 61 63 68  c void ResetCach
149b0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
149c0 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ory()..      {..
149d0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
149e0 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e  n Debug Build On
149f0 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ly..#if DEBUG.. 
14a00 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
14a10 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68 65  ta.IncrementOthe
14a20 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f 52  rCount("Method_R
14a30 65 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62  esetCachedAssemb
14a40 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a  lyDirectory");..
14a50 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
14a60 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14a70 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
14a80 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
14a90 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
14ab0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
14ac0 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ory = null;..   
14ad0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73             noAss
14ae0 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d  emblyDirectory =
14af0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
14b00 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
14b10 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
14b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
14b70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14b80 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
14b90 75 72 6e 73 20 74 68 65 20 63 61 63 68 65 64 20  urns the cached 
14ba0 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
14bb0 65 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65  e assembly curre
14bc0 6e 74 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ntly..      /// 
14bd0 62 65 69 6e 67 20 65 78 65 63 75 74 65 64 2c 20  being executed, 
14be0 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 49  if available.  I
14bf0 66 20 74 68 65 20 63 61 63 68 65 64 20 61 73 73  f the cached ass
14c00 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72 79 20  embly directory 
14c10 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
14c20 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
14c30 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  e, the <see cref
14c40 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  ="GetAssemblyDir
14c50 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f  ectory" /> metho
14c60 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  d will..      //
14c70 2f 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74  / be used to obt
14c80 61 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c 79  ain the assembly
14c90 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20   directory...   
14ca0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14cb0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
14cc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
14cd0 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20  / The directory 
14ce0 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79  for the assembly
14cf0 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67   currently being
14d00 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d 20 6e   executed -OR- n
14d10 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f  ull if..      //
14d20 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  / it cannot be d
14d30 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
14d40 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
14d50 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
14d60 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
14d70 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79 44  tCachedAssemblyD
14d80 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
14d90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
14da0 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
14db0 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
14dc0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65  UG..          De
14dd0 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e  bugData.Incremen
14de0 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74  tOtherCount("Met
14df0 68 6f 64 5f 47 65 74 43 61 63 68 65 64 41 73 73  hod_GetCachedAss
14e00 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 29  emblyDirectory")
14e10 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
14e20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14e30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  ...          loc
14e40 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
14e50 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
14e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
14e70 66 20 28 63 61 63 68 65 64 41 73 73 65 6d 62 6c  f (cachedAssembl
14e80 79 44 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  yDirectory != nu
14e90 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
14ea0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
14eb0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
14ec0 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
14ed0 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 41 73          if (noAs
14ee0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 29  semblyDirectory)
14ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f00 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
14f10 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
14f20 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
14f30 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72  n GetAssemblyDir
14f40 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20  ectory();..     
14f50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
14f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fa0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
14fb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14fc0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
14fd0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 69  d returns the di
14fe0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
14ff0 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74  assembly current
15000 6c 79 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20  ly being..      
15010 2f 2f 2f 20 65 78 65 63 75 74 65 64 2e 0d 0a 20  /// executed... 
15020 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15030 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
15040 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
15050 2f 2f 2f 20 54 68 65 20 64 69 72 65 63 74 6f 72  /// The director
15060 79 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62  y for the assemb
15070 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
15080 6e 67 20 65 78 65 63 75 74 65 64 20 2d 4f 52 2d  ng executed -OR-
15090 20 6e 75 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20   null if..      
150a0 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62 65  /// it cannot be
150b0 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
150c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
150d0 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  s>..      privat
150e0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
150f0 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
15100 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d  tory()..      {.
15110 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
15120 6f 6e 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f  on Debug Build O
15130 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a  nly..#if DEBUG..
15140 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
15150 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 4f 74 68  ata.IncrementOth
15160 65 72 43 6f 75 6e 74 28 22 4d 65 74 68 6f 64 5f  erCount("Method_
15170 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65 63  GetAssemblyDirec
15180 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d  tory");..#endif.
15190 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
151a0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
151b0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
151c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
151d0 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
151e0 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e  mbly = Assembly.
151f0 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73 65  GetExecutingAsse
15200 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  mbly();....     
15210 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
15220 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
15230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
15240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15250 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
15260 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
15270 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
15280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15290 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44       noAssemblyD
152a0 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b  irectory = true;
152b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
152c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
152d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
152e0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
152f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15300 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
15310 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c   fileName = null
15320 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ;....#if PLATFOR
15330 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
15340 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
15350 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 61    AssemblyName a
15360 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 61 73  ssemblyName = as
15370 73 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29  sembly.GetName()
15380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15390 20 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 4e     if (assemblyN
153a0 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
153b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
153c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153d0 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
153e0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
153f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15410 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72     noAssemblyDir
15420 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d 0a  ectory = true;..
15430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15440 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15450 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15460 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
15470 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15480 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
15490 20 3d 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2e   = assemblyName.
154a0 43 6f 64 65 42 61 73 65 3b 0d 0a 23 65 6c 73 65  CodeBase;..#else
154b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
154c0 69 66 20 28 21 43 68 65 63 6b 41 73 73 65 6d 62  if (!CheckAssemb
154d0 6c 79 43 6f 64 65 42 61 73 65 28 61 73 73 65 6d  lyCodeBase(assem
154e0 62 6c 79 2c 20 72 65 66 20 66 69 6c 65 4e 61 6d  bly, ref fileNam
154f0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
15500 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
15510 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74  = assembly.Locat
15520 69 6f 6e 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ion;..#endif....
15530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15540 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
15550 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
15560 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15580 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
15590 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
155a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
155b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
155c0 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62          noAssemb
155d0 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72  lyDirectory = tr
155e0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
155f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15610 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
15620 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
15630 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
15640 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
15650 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
15660 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b  yName(fileName);
15670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15680 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
15690 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
156a0 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
156b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
156c0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
156d0 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
156e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
156f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15700 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41               noA
15710 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79  ssemblyDirectory
15720 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
15730 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
15740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15750 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
15760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
15770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15780 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
15790 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
157a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
157b0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
157c0 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74  edAssemblyDirect
157d0 6f 72 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b  ory = directory;
157e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
157f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15800 20 20 20 72 65 74 75 72 6e 20 64 69 72 65 63 74     return direct
15810 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
15820 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
15830 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
15840 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
15850 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
15860 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  on e)..#else..  
15870 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
15880 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
15890 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  f..          {..
158a0 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
158b0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 53 48 41  _20 && TRACE_SHA
158c0 52 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RED..           
158d0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
158e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
158f0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
15900 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
15910 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
15920 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
15930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
15940 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
15950 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
15960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15970 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
15980 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
15990 65 64 20 74 6f 20 67 65 74 20 64 69 72 65 63 74  ed to get direct
159a0 6f 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ory " +..       
159b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
159c0 66 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78  for currently ex
159d0 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79  ecuting assembly
159e0 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20  : {0}", e)); /* 
159f0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
15a00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
15a10 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
15a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
15a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15a40 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
15a50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15a60 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
15a70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
15a80 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69       lock (stati
15a90 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  cSyncRoot)..    
15aa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15ab0 20 20 20 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c         noAssembl
15ac0 79 44 69 72 65 63 74 6f 72 79 20 3d 20 74 72 75  yDirectory = tru
15ad0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
15ae0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
15af0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
15b00 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
15b10 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15b70 20 23 72 65 67 69 6f 6e 20 4f 70 74 69 6f 6e 61   #region Optiona
15b80 6c 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20  l Native SQLite 
15b90 4c 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64  Library Pre-Load
15ba0 69 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20  ing Code..      
15bb0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54  //..      // NOT
15bc0 45 3a 20 49 66 20 77 65 20 61 72 65 20 6c 6f 6f  E: If we are loo
15bd0 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 73 74 61  king for the sta
15be0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 44 4c 4c  ndard SQLite DLL
15bf0 20 28 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 29   ("sqlite3.dll")
15c00 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  ,..      //     
15c10 20 20 74 68 65 20 69 6e 74 65 72 6f 70 20 44 4c    the interop DL
15c20 4c 20 28 22 53 51 4c 69 74 65 2e 49 6e 74 65 72  L ("SQLite.Inter
15c30 6f 70 2e 64 6c 6c 22 29 2c 20 6f 72 20 77 65 20  op.dll"), or we 
15c40 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  are running on t
15c50 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  he..      //    
15c60 20 20 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20     .NET Compact 
15c70 46 72 61 6d 65 77 6f 72 6b 2c 20 77 65 20 73 68  Framework, we sh
15c80 6f 75 6c 64 20 69 6e 63 6c 75 64 65 20 74 68 69  ould include thi
15c90 73 20 63 6f 64 65 20 28 6f 6e 6c 79 20 69 66 20  s code (only if 
15ca0 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
15cb0 20 20 20 20 66 65 61 74 75 72 65 20 68 61 73 20      feature has 
15cc0 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 65 6e  actually been en
15cd0 61 62 6c 65 64 29 2e 20 20 54 68 69 73 20 63 6f  abled).  This co
15ce0 64 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 74 61  de would be tota
15cf0 6c 6c 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  lly..      //   
15d00 20 20 20 20 72 65 64 75 6e 64 61 6e 74 20 69 66      redundant if
15d10 20 74 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 73   this module has
15d20 20 62 65 65 6e 20 62 75 6e 64 6c 65 64 20 69 6e   been bundled in
15d30 74 6f 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64  to the mixed-mod
15d40 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  e..      //     
15d50 20 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20    assembly...   
15d60 20 20 20 2f 2f 0d 0a 23 69 66 20 53 51 4c 49 54     //..#if SQLIT
15d70 45 5f 53 54 41 4e 44 41 52 44 20 7c 7c 20 55 53  E_STANDARD || US
15d80 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c  E_INTEROP_DLL ||
15d90 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
15da0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 0d 0a 20 20  TFRAMEWORK....  
15db0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
15dc0 20 4e 4f 54 45 3a 20 4f 6e 6c 79 20 63 6f 6d 70   NOTE: Only comp
15dd0 69 6c 65 20 69 6e 20 74 68 65 20 6e 61 74 69 76  ile in the nativ
15de0 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
15df0 61 64 20 63 6f 64 65 20 69 66 20 74 68 65 20 66  ad code if the f
15e00 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 2f 2f  eature..      //
15e10 20 20 20 20 20 20 20 68 61 73 20 62 65 65 6e 20         has been 
15e20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 68 69 73  enabled for this
15e30 20 62 75 69 6c 64 2e 0d 0a 20 20 20 20 20 20 2f   build...      /
15e40 2f 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44 5f 4e  /..#if PRELOAD_N
15e50 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d 0a 20  ATIVE_LIBRARY.. 
15e60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15e70 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15e80 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e  e name of the en
15e90 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
15ea0 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  le containing th
15eb0 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20  e processor..   
15ec0 20 20 20 2f 2f 2f 20 61 72 63 68 69 74 65 63 74     /// architect
15ed0 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
15ee0 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
15ef0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15f00 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
15f10 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
15f20 20 73 74 72 69 6e 67 20 50 52 4f 43 45 53 53 4f   string PROCESSO
15f30 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 3d  R_ARCHITECTURE =
15f40 0d 0a 20 20 20 20 20 20 20 20 20 20 22 50 52 4f  ..          "PRO
15f50 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54  CESSOR_ARCHITECT
15f60 55 52 45 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  URE";....      /
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
15fc0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
15fd0 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f  e Data..      //
15fe0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15ff0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16000 65 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61  e module file na
16010 6d 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76  me for the nativ
16020 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
16030 20 6f 72 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   or null...     
16040 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16050 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
16060 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f 53  static string _S
16070 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
16080 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  eFileName = null
16090 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
160f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16100 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
16110 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f  module handle fo
16120 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  r the native SQL
16130 69 74 65 20 6c 69 62 72 61 72 79 20 6f 72 20 74  ite library or t
16140 68 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  he value..      
16150 2f 2f 2f 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2e  /// IntPtr.Zero.
16160 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
16170 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
16180 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
16190 50 74 72 20 5f 53 51 4c 69 74 65 4e 61 74 69 76  Ptr _SQLiteNativ
161a0 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20  eModuleHandle = 
161b0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
161c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
161d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
161e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16220 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
16230 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16240 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
16250 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
16260 28 77 69 74 68 6f 75 74 20 61 6e 79 20 64 69 72  (without any dir
16270 65 63 74 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69  ectory informati
16280 6f 6e 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  on)..      /// f
16290 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
162a0 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20  Lite library to 
162b0 62 65 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79  be pre-loaded by
162c0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
162d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
162e0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  y>..      /// <r
162f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
16300 2f 2f 20 54 68 65 20 62 61 73 65 20 66 69 6c 65  // The base file
16310 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 6e 61   name for the na
16320 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
16330 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
16340 61 64 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  aded by..      /
16350 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20 2d 4f  // this class -O
16360 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 73 20 76  R- null if its v
16370 61 6c 75 65 20 63 61 6e 6e 6f 74 20 62 65 20 64  alue cannot be d
16380 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20  etermined...    
16390 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
163a0 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
163b0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
163c0 65 74 4e 61 74 69 76 65 4c 69 62 72 61 72 79 46  etNativeLibraryF
163d0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28 29 0d 0a 20  ileNameOnly().. 
163e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
163f0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
16400 65 4f 6e 6c 79 20 3d 20 47 65 74 53 65 74 74 69  eOnly = GetSetti
16410 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
16420 20 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64          "PreLoad
16430 53 51 4c 69 74 65 5f 4c 69 62 72 61 72 79 46 69  SQLite_LibraryFi
16440 6c 65 4e 61 6d 65 4f 6e 6c 79 22 2c 20 6e 75 6c  leNameOnly", nul
16450 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
16460 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c   if (fileNameOnl
16470 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
16480 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16490 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 3b 0d 0a   fileNameOnly;..
164a0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
164b0 72 6e 20 53 51 4c 49 54 45 5f 44 4c 4c 3b 20 2f  rn SQLITE_DLL; /
164c0 2a 20 43 4f 4d 50 41 54 20 2a 2f 0d 0a 20 20 20  * COMPAT */..   
164d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
164e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16520 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
16530 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16540 20 20 20 20 2f 2f 2f 20 53 65 61 72 63 68 65 73      /// Searches
16550 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20   for the native 
16560 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69  SQLite library i
16570 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  n the directory 
16580 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
16590 20 20 2f 2f 2f 20 74 68 65 20 61 73 73 65 6d 62    /// the assemb
165a0 6c 79 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  ly currently bei
165b0 6e 67 20 65 78 65 63 75 74 65 64 20 61 73 20 77  ng executed as w
165c0 65 6c 6c 20 61 73 20 74 68 65 20 62 61 73 65 20  ell as the base 
165d0 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  directory..     
165e0 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 63 75 72   /// for the cur
165f0 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  rent application
16600 20 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20   domain...      
16610 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16620 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
16630 20 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63   name="baseDirec
16640 74 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  tory">..      //
16650 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
16660 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 77  this parameter w
16670 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ill be modified 
16680 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  to refer to the 
16690 62 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  base..      /// 
166a0 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
166b0 6e 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ning the native 
166c0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
166d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
166e0 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
166f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
16700 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
16710 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  e">..      /// U
16720 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
16730 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
16740 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
16750 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e 61 6d  refer to the nam
16760 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  e..      /// of 
16770 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 64 69  the immediate di
16780 72 65 63 74 6f 72 79 20 28 69 2e 65 2e 20 74 68  rectory (i.e. th
16790 65 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  e offset from th
167a0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
167b0 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  )..      /// con
167c0 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 74 69  taining the nati
167d0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
167e0 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
167f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
16800 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
16810 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
16820 79 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f  yOnly">..      /
16830 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
16840 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
16850 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
16860 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 6e 6c   to non-zero onl
16870 79 20 69 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  y if..      /// 
16880 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
16890 72 79 20 69 74 73 65 6c 66 20 73 68 6f 75 6c 64  ry itself should
168a0 20 62 65 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20   be allowed for 
168b0 6c 6f 61 64 69 6e 67 20 74 68 65 20 6e 61 74 69  loading the nati
168c0 76 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ve..      /// li
168d0 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
168e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
168f0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
16900 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  .      /// Non-z
16910 65 72 6f 20 28 73 75 63 63 65 73 73 29 20 69 66  ero (success) if
16920 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
16930 74 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 66  te library was f
16940 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  ound; otherwise,
16950 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  ..      /// zero
16960 20 28 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20   (failure)...   
16970 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
16980 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
16990 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 61   static bool Sea
169a0 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28  rchForDirectory(
169b0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66 20  ..          ref 
169c0 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65 63  string baseDirec
169d0 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 2f 2a  tory,         /*
169e0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
169f0 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 70 72     ref string pr
16a00 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
16a10 75 72 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ure, /* out */..
16a20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 62 6f            ref bo
16a30 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69 72 65  ol allowBaseDire
16a40 63 74 6f 72 79 4f 6e 6c 79 20 20 20 2f 2a 20 6f  ctoryOnly   /* o
16a50 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
16a60 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
16a70 20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65         if (GetSe
16a80 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20  ttingValue(..   
16a90 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72               "Pr
16aa0 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4e 6f 53 65  eLoadSQLite_NoSe
16ab0 61 72 63 68 46 6f 72 44 69 72 65 63 74 6f 72 79  archForDirectory
16ac0 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c  ", null) != null
16ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
16ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
16af0 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a 20 44  turn false; /* D
16b00 49 53 41 42 4c 45 44 20 2a 2f 0d 0a 20 20 20 20  ISABLED */..    
16b10 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16b20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16b30 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
16b40 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
16b50 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
16b60 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
16b70 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
16b80 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
16b90 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
16ba0 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
16bb0 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
16bc0 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
16bd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
16be0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
16bf0 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
16c00 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
16c10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
16c20 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
16c30 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
16c40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
16c50 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
16c60 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16c70 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64    // NOTE: Build
16c80 20 74 68 65 20 6c 69 73 74 20 6f 66 20 62 61 73   the list of bas
16c90 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 6e  e directories an
16ca0 64 20 70 72 6f 63 65 73 73 6f 72 2f 70 6c 61 74  d processor/plat
16cb0 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20  form..          
16cc0 2f 2f 20 20 20 20 20 20 20 6e 61 6d 65 73 2e 20  //       names. 
16cd0 20 54 68 65 73 65 20 6c 69 73 74 73 20 77 69 6c   These lists wil
16ce0 6c 20 62 65 20 75 73 65 64 20 74 6f 20 68 65 6c  l be used to hel
16cf0 70 20 6c 6f 63 61 74 65 20 74 68 65 20 6e 61 74  p locate the nat
16d00 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ive..          /
16d10 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 63  /       SQLite c
16d20 6f 72 65 20 6c 69 62 72 61 72 79 20 28 6f 72 20  ore library (or 
16d30 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
16d40 29 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20 69 6e  ) to pre-load in
16d50 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  to..          //
16d60 20 20 20 20 20 20 20 74 68 69 73 20 70 72 6f 63         this proc
16d70 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
16d80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  //..          st
16d90 72 69 6e 67 5b 5d 20 64 69 72 65 63 74 6f 72 69  ring[] directori
16da0 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
16db0 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
16dc0 79 44 69 72 65 63 74 6f 72 79 28 29 2c 0d 0a 23  yDirectory(),..#
16dd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
16de0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
16df0 20 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70               App
16e00 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44 6f  Domain.CurrentDo
16e10 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74 6f  main.BaseDirecto
16e20 72 79 2c 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ry,..#endif..   
16e30 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20         };....   
16e40 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 78         string ex
16e50 74 72 61 53 75 62 44 69 72 65 63 74 6f 72 79 20  traSubDirectory 
16e60 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
16e70 20 20 20 20 20 69 66 20 28 28 47 65 74 53 65 74       if ((GetSet
16e80 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
16e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
16ea0 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 41 6c 6c  reLoadSQLite_All
16eb0 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79 4f  owBaseDirectoryO
16ec0 6e 6c 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e  nly", null) != n
16ed0 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ull) ||..       
16ee0 20 20 20 20 20 20 20 28 48 65 6c 70 65 72 4d 65         (HelperMe
16ef0 74 68 6f 64 73 2e 49 73 44 6f 74 4e 65 74 43 6f  thods.IsDotNetCo
16f00 72 65 28 29 20 26 26 20 21 48 65 6c 70 65 72 4d  re() && !HelperM
16f10 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77 73  ethods.IsWindows
16f20 28 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ()))..          
16f30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16f40 20 65 78 74 72 61 53 75 62 44 69 72 65 63 74 6f   extraSubDirecto
16f50 72 79 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  ry = String.Empt
16f60 79 3b 20 2f 2a 20 2e 4e 45 54 20 43 6f 72 65 20  y; /* .NET Core 
16f70 6f 6e 20 50 4f 53 49 58 20 2a 2f 0d 0a 20 20 20  on POSIX */..   
16f80 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16f90 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73        string[] s
16fa0 75 62 44 69 72 65 63 74 6f 72 69 65 73 20 3d 20  ubDirectories = 
16fb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16fc0 20 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63   GetProcessorArc
16fd0 68 69 74 65 63 74 75 72 65 28 29 2c 20 2f 2a 20  hitecture(), /* 
16fe0 65 2e 67 2e 20 22 78 38 36 22 20 2a 2f 0d 0a 20  e.g. "x86" */.. 
16ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
17000 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 28 6e 75 6c  PlatformName(nul
17010 6c 29 2c 20 20 20 20 20 20 2f 2a 20 65 2e 67 2e  l),      /* e.g.
17020 20 22 57 69 6e 33 32 22 20 2a 2f 0d 0a 20 20 20   "Win32" */..   
17030 20 20 20 20 20 20 20 20 20 20 20 65 78 74 72 61             extra
17040 53 75 62 44 69 72 65 63 74 6f 72 79 20 20 20 20  SubDirectory    
17050 20 20 20 20 20 20 20 2f 2a 20 62 61 73 65 20 64         /* base d
17060 69 72 65 63 74 6f 72 79 20 6f 6e 6c 79 3f 20 2a  irectory only? *
17070 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  /..          };.
17080 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
17090 65 61 63 68 20 28 73 74 72 69 6e 67 20 64 69 72  each (string dir
170a0 65 63 74 6f 72 79 20 69 6e 20 64 69 72 65 63 74  ectory in direct
170b0 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20  ories)..        
170c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
170d0 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72 79     if (directory
170e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
170f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
17100 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
17110 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
17120 28 73 74 72 69 6e 67 20 73 75 62 44 69 72 65 63  (string subDirec
17130 74 6f 72 79 20 69 6e 20 73 75 62 44 69 72 65 63  tory in subDirec
17140 74 6f 72 69 65 73 29 0d 0a 20 20 20 20 20 20 20  tories)..       
17150 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17160 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17170 73 75 62 44 69 72 65 63 74 6f 72 79 20 3d 3d 20  subDirectory == 
17180 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
17190 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
171a0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
171b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
171c0 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69  ng fileName = Fi
171d0 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d  xUpDllFileName(M
171e0 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
171f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17200 20 20 20 20 20 20 20 20 4d 61 79 62 65 43 6f 6d          MaybeCom
17210 62 69 6e 65 50 61 74 68 28 64 69 72 65 63 74 6f  binePath(directo
17220 72 79 2c 20 73 75 62 44 69 72 65 63 74 6f 72 79  ry, subDirectory
17230 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
17240 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
17250 6d 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20  meOnly));....   
17260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
17270 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
17280 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
17290 20 74 68 65 20 53 51 4c 69 74 65 20 44 4c 4c 20   the SQLite DLL 
172a0 66 69 6c 65 20 65 78 69 73 74 73 2c 20 72 65 74  file exists, ret
172b0 75 72 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  urn success...  
172c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
172d0 2f 2f 20 20 20 20 20 20 20 50 72 69 6f 72 20 74  //       Prior t
172e0 6f 20 72 65 74 75 72 6e 69 6e 67 2c 20 73 65 74  o returning, set
172f0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
17300 6f 72 79 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ory and..       
17310 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
17320 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
17330 63 68 69 74 65 63 74 75 72 65 20 74 6f 20 72 65  chitecture to re
17340 66 6c 65 63 74 20 74 68 65 20 6c 6f 63 61 74 69  flect the locati
17350 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
17360 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
17370 68 65 72 65 20 69 74 20 77 61 73 20 66 6f 75 6e  here it was foun
17380 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
17390 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
173a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
173b0 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
173c0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
173d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
173e0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
173f0 20 26 26 20 54 52 41 43 45 5f 44 45 54 45 43 54   && TRACE_DETECT
17400 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ION..           
17410 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
17420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17430 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17450 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
17460 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
17470 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
17480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
174a0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
174b0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
174c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174d0 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
174e0 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
174f0 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
17500 20 66 69 6c 65 20 22 20 2b 0d 0a 20 20 20 20 20   file " +..     
17510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17520 20 20 20 20 20 20 20 20 20 22 6e 61 6d 65 20 5c           "name \
17530 22 7b 30 7d 5c 22 2c 20 72 65 74 75 72 6e 69 6e  "{0}\", returnin
17540 67 20 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 31  g directory \"{1
17550 7d 5c 22 20 61 6e 64 20 22 20 2b 0d 0a 20 20 20  }\" and " +..   
17560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17570 20 20 20 20 20 20 20 20 20 20 20 22 73 75 62 2d             "sub-
17580 64 69 72 65 63 74 6f 72 79 20 5c 22 7b 32 7d 5c  directory \"{2}\
17590 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61 6d 65 2c  "...", fileName,
175a0 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20   directory,..   
175b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175c0 20 20 20 20 20 20 20 20 20 20 20 73 75 62 44 69             subDi
175d0 72 65 63 74 6f 72 79 29 29 3b 20 2f 2a 20 74 68  rectory)); /* th
175e0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
175f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17610 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
17620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17630 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17650 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
17660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17670 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
17680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17690 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
176a0 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65 63 74  rectory = direct
176b0 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
176c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63              proc
176d0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
176e0 65 20 3d 20 73 75 62 44 69 72 65 63 74 6f 72 79  e = subDirectory
176f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
17700 20 20 20 20 20 20 20 20 20 61 6c 6c 6f 77 42 61           allowBa
17710 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 20  seDirectoryOnly 
17720 3d 20 28 73 75 62 44 69 72 65 63 74 6f 72 79 2e  = (subDirectory.
17730 4c 65 6e 67 74 68 20 3d 3d 20 30 29 3b 0d 0a 0d  Length == 0);...
17740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17750 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
17760 75 65 3b 20 2f 2a 20 46 4f 55 4e 44 20 2a 2f 0d  ue; /* FOUND */.
17770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17780 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
17790 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
177a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
177b0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2a  return false; /*
177c0 20 4e 4f 54 20 46 4f 55 4e 44 20 2a 2f 0d 0a 20   NOT FOUND */.. 
177d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17820 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
17830 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17840 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65        /// Querie
17850 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
17860 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17870 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
17880 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20  application..   
17890 20 20 20 2f 2f 2f 20 64 6f 6d 61 69 6e 2e 0d 0a     /// domain...
178a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
178b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
178c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
178d0 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 64 69   /// The base di
178e0 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
178f0 63 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74  current applicat
17900 69 6f 6e 20 64 6f 6d 61 69 6e 20 2d 4f 52 2d 20  ion domain -OR- 
17910 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
17920 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20    /// cannot be 
17930 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
17940 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17950 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
17960 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
17970 65 74 42 61 73 65 44 69 72 65 63 74 6f 72 79 28  etBaseDirectory(
17980 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
17990 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
179a0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
179b0 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69  the "PreLoadSQLi
179c0 74 65 5f 42 61 73 65 44 69 72 65 63 74 6f 72 79  te_BaseDirectory
179d0 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  " environment va
179e0 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  riable..        
179f0 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20 73 65    //       is se
17a00 74 2c 20 75 73 65 20 69 74 20 76 65 72 62 61 74  t, use it verbat
17a10 69 6d 20 66 6f 72 20 74 68 65 20 62 61 73 65 20  im for the base 
17a20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20  directory...    
17a30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17a40 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
17a50 74 6f 72 79 20 3d 20 47 65 74 53 65 74 74 69 6e  tory = GetSettin
17a60 67 56 61 6c 75 65 28 22 50 72 65 4c 6f 61 64 53  gValue("PreLoadS
17a70 51 4c 69 74 65 5f 42 61 73 65 44 69 72 65 63 74  QLite_BaseDirect
17a80 6f 72 79 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ory",..         
17a90 20 20 20 20 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20       null);.... 
17aa0 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72           if (dir
17ab0 65 63 74 6f 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  ectory != null).
17ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
17ad0 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
17ae0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
17af0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
17b00 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  RK..          //
17b10 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
17b20 4f 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65  OTE: If the "Pre
17b30 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65 41 73  LoadSQLite_UseAs
17b40 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22  semblyDirectory"
17b50 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20   environment..  
17b60 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
17b70 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74   variable is set
17b80 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 2c 20   (to anything), 
17b90 74 68 65 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  then attempt to 
17ba0 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  use the..       
17bb0 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 72 65     //       dire
17bc0 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
17bd0 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 65   the currently e
17be0 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c  xecuting assembl
17bf0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  y..          // 
17c00 20 20 20 20 20 20 28 69 2e 65 2e 20 53 79 73 74        (i.e. Syst
17c10 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 29 20  em.Data.SQLite) 
17c20 69 6e 74 73 65 61 64 20 6f 66 20 74 68 65 20 61  intsead of the a
17c30 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20  pplication..    
17c40 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
17c50 6f 6d 61 69 6e 20 62 61 73 65 20 64 69 72 65 63  omain base direc
17c60 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  tory...         
17c70 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69   //..          i
17c80 66 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c  f (GetSettingVal
17c90 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
17ca0 20 20 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53         "PreLoadS
17cb0 51 4c 69 74 65 5f 55 73 65 41 73 73 65 6d 62 6c  QLite_UseAssembl
17cc0 79 44 69 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c  yDirectory", nul
17cd0 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  l) != null)..   
17ce0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17cf0 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72          director
17d00 79 20 3d 20 47 65 74 41 73 73 65 6d 62 6c 79 44  y = GetAssemblyD
17d10 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20  irectory();.... 
17d20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
17d30 28 64 69 72 65 63 74 6f 72 79 20 21 3d 20 6e 75  (directory != nu
17d40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
17d50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69         return di
17d60 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
17d70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17d80 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17d90 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77   // NOTE: Otherw
17da0 69 73 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e  ise, fallback on
17db0 20 75 73 69 6e 67 20 74 68 65 20 62 61 73 65 20   using the base 
17dc0 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
17dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
17de0 20 20 20 20 20 63 75 72 72 65 6e 74 20 61 70 70       current app
17df0 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e  lication domain.
17e00 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
17e10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17e20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
17e30 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
17e40 65 63 74 6f 72 79 3b 0d 0a 23 65 6c 73 65 0d 0a  ectory;..#else..
17e50 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
17e60 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
17e70 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
17e80 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
17e90 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
17ea0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
17eb0 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63    //       the c
17ec0 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69  urrently executi
17ed0 6e 67 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  ng assembly...  
17ee0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17ef0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
17f00 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
17f10 79 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  y();..#endif..  
17f20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
17f80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17f90 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
17fa0 6e 65 73 20 69 66 20 74 68 65 20 64 79 6e 61 6d  nes if the dynam
17fb0 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
17fc0 66 69 6c 65 20 6e 61 6d 65 20 72 65 71 75 69 72  file name requir
17fd0 65 73 20 61 20 73 75 66 66 69 78 0d 0a 20 20 20  es a suffix..   
17fe0 20 20 20 2f 2f 2f 20 61 6e 64 20 61 64 64 73 20     /// and adds 
17ff0 69 74 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  it if necessary.
18000 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
18010 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
18020 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
18030 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
18040 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
18050 6c 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  l dynamic link l
18060 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
18070 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20   to inspect...  
18080 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18090 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
180a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
180b0 20 54 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e   The dynamic lin
180c0 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e  k library file n
180d0 61 6d 65 2c 20 70 6f 73 73 69 62 6c 79 20 6d 6f  ame, possibly mo
180e0 64 69 66 69 65 64 20 74 6f 20 69 6e 63 6c 75 64  dified to includ
180f0 65 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e an..      /// 
18100 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20  extension...    
18110 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
18120 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
18130 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 69  static string Fi
18140 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28 0d  xUpDllFileName(.
18150 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
18160 67 20 66 69 6c 65 4e 61 6d 65 20 2f 2a 20 69 6e  g fileName /* in
18170 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
18180 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18190 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
181a0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66  .IsNullOrEmpty(f
181b0 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
181c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
181d0 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72        if (Helper
181e0 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64 6f 77  Methods.IsWindow
181f0 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
18200 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18210 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66 69           if (!fi
18220 6c 65 4e 61 6d 65 2e 45 6e 64 73 57 69 74 68 28  leName.EndsWith(
18230 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
18240 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18250 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
18260 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
18270 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
18280 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18290 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
182a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
182b0 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 20 2b 20  turn fileName + 
182c0 44 6c 6c 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e  DllFileExtension
182d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
182e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
182f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18300 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
18310 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
18320 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
18330 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18380 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
18390 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51  ry>..      /// Q
183a0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
183b0 6e 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ns the processor
183c0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6f 66   architecture of
183d0 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
183e0 20 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 2e      /// process.
183f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
18400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
18410 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
18420 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63 65     /// The proce
18430 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
18440 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
18450 20 70 72 6f 63 65 73 73 20 2d 4f 52 2d 20 6e 75   process -OR- nu
18460 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 20 20  ll if it..      
18470 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
18480 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
18490 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
184a0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
184b0 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
184c0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
184d0 63 74 75 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  cture()..      {
184e0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
184f0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
18500 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c 6f  E: If the "PreLo
18510 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65 73 73  adSQLite_Process
18520 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 22 20  orArchitecture" 
18530 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20  environment..   
18540 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
18550 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 2c  variable is set,
18560 20 75 73 65 20 69 74 20 76 65 72 62 61 74 69 6d   use it verbatim
18570 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
18580 20 70 72 6f 63 65 73 73 6f 72 0d 0a 20 20 20 20   processor..    
18590 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
185a0 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
185b0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
185c0 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
185d0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
185e0 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
185f0 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
18600 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
18610 69 74 65 5f 50 72 6f 63 65 73 73 6f 72 41 72 63  ite_ProcessorArc
18620 68 69 74 65 63 74 75 72 65 22 2c 20 6e 75 6c 6c  hitecture", null
18630 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
18640 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
18650 68 69 74 65 63 74 75 72 65 20 21 3d 20 6e 75 6c  hitecture != nul
18660 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18670 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73    return process
18680 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d  orArchitecture;.
18690 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
186a0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55  .          // BU
186b0 47 42 55 47 3a 20 57 69 6c 6c 20 74 68 69 73 20  GBUG: Will this 
186c0 61 6c 77 61 79 73 20 62 65 20 72 65 6c 69 61 62  always be reliab
186d0 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  le?..          /
186e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f  /..          pro
186f0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18700 72 65 20 3d 20 47 65 74 53 65 74 74 69 6e 67 56  re = GetSettingV
18710 61 6c 75 65 28 50 52 4f 43 45 53 53 4f 52 5f 41  alue(PROCESSOR_A
18720 52 43 48 49 54 45 43 54 55 52 45 2c 20 6e 75 6c  RCHITECTURE, nul
18730 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
18740 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
18790 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
187a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
187b0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
187c0 20 20 2f 2f 20 48 41 43 4b 3a 20 43 68 65 63 6b    // HACK: Check
187d0 20 66 6f 72 20 61 6e 20 22 69 6d 70 6f 73 73 69   for an "impossi
187e0 62 6c 65 22 20 73 69 74 75 61 74 69 6f 6e 2e 20  ble" situation. 
187f0 20 49 66 20 74 68 65 20 70 6f 69 6e 74 65 72 20   If the pointer 
18800 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20  size..          
18810 2f 2f 20 20 20 20 20 20 20 69 73 20 33 32 2d 62  //       is 32-b
18820 69 74 73 2c 20 74 68 65 20 70 72 6f 63 65 73 73  its, the process
18830 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
18840 63 61 6e 6e 6f 74 20 62 65 20 22 41 4d 44 36 34  cannot be "AMD64
18850 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  "...          //
18860 20 20 20 20 20 20 20 49 6e 20 74 68 61 74 20 63         In that c
18870 61 73 65 2c 20 77 65 20 61 72 65 20 61 6c 6d 6f  ase, we are almo
18880 73 74 20 63 65 72 74 61 69 6e 6c 79 20 68 69 74  st certainly hit
18890 74 69 6e 67 20 61 20 62 75 67 20 69 6e 20 74 68  ting a bug in th
188a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
188b0 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e 67 20        operating 
188c0 73 79 73 74 65 6d 20 61 6e 64 2f 6f 72 20 56 69  system and/or Vi
188d0 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
188e0 20 63 61 75 73 65 73 20 74 68 65 0d 0a 20 20 20   causes the..   
188f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
18900 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54  PROCESSOR_ARCHIT
18910 45 43 54 55 52 45 20 65 6e 76 69 72 6f 6e 6d 65  ECTURE environme
18920 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 63  nt variable to c
18930 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
18940 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
18950 72 6f 6e 67 20 76 61 6c 75 65 20 69 6e 20 73 6f  rong value in so
18960 6d 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  me circumstances
18970 2e 20 20 50 6c 65 61 73 65 20 72 65 66 65 72 20  .  Please refer 
18980 74 6f 20 74 69 63 6b 65 74 0d 0a 20 20 20 20 20  to ticket..     
18990 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 5b 39       //       [9
189a0 61 63 39 38 36 32 36 31 31 5d 20 66 6f 72 20 66  ac9862611] for f
189b0 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
189c0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  on...          /
189d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
189e0 28 28 49 6e 74 50 74 72 2e 53 69 7a 65 20 3d 3d  ((IntPtr.Size ==
189f0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 20 26 26   sizeof(int)) &&
18a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a10 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 70 72  String.Equals(pr
18a20 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
18a30 75 72 65 2c 20 22 41 4d 44 36 34 22 2c 0d 0a 20  ure, "AMD64",.. 
18a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a50 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
18a60 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
18a70 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ase))..         
18a80 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
18a90 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
18aa0 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
18ab0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18ac0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
18ad0 4f 54 45 3a 20 57 68 65 6e 20 74 72 61 63 69 6e  OTE: When tracin
18ae0 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 73 61  g is enabled, sa
18af0 76 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 6c  ve the originall
18b00 79 20 64 65 74 65 63 74 65 64 0d 0a 20 20 20 20  y detected..    
18b10 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18b20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63     processor arc
18b30 68 69 74 65 63 74 75 72 65 20 62 65 66 6f 72 65  hitecture before
18b40 20 63 68 61 6e 67 69 6e 67 20 69 74 2e 0d 0a 20   changing it... 
18b50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
18b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
18b70 74 72 69 6e 67 20 73 61 76 65 64 50 72 6f 63 65  tring savedProce
18b80 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
18b90 20 3d 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68   = processorArch
18ba0 69 74 65 63 74 75 72 65 3b 0d 0a 23 65 6e 64 69  itecture;..#endi
18bb0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
18bc0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
18bd0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
18be0 20 6b 6e 6f 77 20 74 68 61 74 20 6f 70 65 72 61   know that opera
18bf0 74 69 6e 67 20 73 79 73 74 65 6d 73 20 74 68 61  ting systems tha
18c00 74 20 72 65 74 75 72 6e 20 22 41 4d 44 36 34 22  t return "AMD64"
18c10 20 61 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20   as..           
18c20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
18c30 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
18c40 65 63 74 75 72 65 20 61 72 65 20 61 63 74 75 61  ecture are actua
18c50 6c 6c 79 20 61 20 73 75 70 65 72 73 65 74 20 6f  lly a superset o
18c60 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
18c70 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 22 78   //       the "x
18c80 38 36 22 20 70 72 6f 63 65 73 73 6f 72 20 61 72  86" processor ar
18c90 63 68 69 74 65 63 74 75 72 65 3b 20 74 68 65 72  chitecture; ther
18ca0 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 0d 0a 20  efore, return.. 
18cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
18cc0 20 20 20 20 20 20 22 78 38 36 22 20 77 68 65 6e        "x86" when
18cd0 20 74 68 65 20 70 6f 69 6e 74 65 72 20 73 69 7a   the pointer siz
18ce0 65 20 69 73 20 33 32 2d 62 69 74 73 2e 0d 0a 20  e is 32-bits... 
18cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
18d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
18d10 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
18d20 74 75 72 65 20 3d 20 22 78 38 36 22 3b 0d 0a 0d  ture = "x86";...
18d30 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
18d40 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
18d50 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
18d60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
18d70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18d90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18da0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
18db0 6f 77 20 74 68 61 74 20 77 65 20 68 69 74 20 61  ow that we hit a
18dc0 20 66 61 69 72 6c 79 20 75 6e 75 73 75 61 6c 20   fairly unusual 
18dd0 73 69 74 75 61 74 69 6f 6e 20 28 69 2e 65 2e 0d  situation (i.e..
18de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18df0 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
18e00 22 77 72 6f 6e 67 22 20 70 72 6f 63 65 73 73 6f  "wrong" processo
18e10 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 77  r architecture w
18e20 61 73 20 64 65 74 65 63 74 65 64 29 2e 0d 0a 20  as detected)... 
18e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e40 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
18e50 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
18e60 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
18e70 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
18e80 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
18e90 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
18ea0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
18eb0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
18ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61               "Na
18ed0 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65  tive library pre
18ee0 2d 6c 6f 61 64 65 72 20 64 65 74 65 63 74 65 64  -loader detected
18ef0 20 7b 30 7d 2d 62 69 74 20 70 6f 69 6e 74 65 72   {0}-bit pointer
18f00 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
18f10 20 20 20 20 20 20 20 20 20 20 20 20 22 73 69 7a              "siz
18f20 65 20 77 69 74 68 20 70 72 6f 63 65 73 73 6f 72  e with processor
18f30 20 61 72 63 68 69 74 65 63 74 75 72 65 20 5c 22   architecture \"
18f40 7b 31 7d 5c 22 2c 20 75 73 69 6e 67 20 22 20 2b  {1}\", using " +
18f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18f60 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73          "process
18f70 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
18f80 5c 22 7b 32 7d 5c 22 20 69 6e 73 74 65 61 64 2e  \"{2}\" instead.
18f90 2e 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ..",..          
18fa0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
18fb0 74 72 2e 53 69 7a 65 20 2a 20 38 20 2f 2a 20 62  tr.Size * 8 /* b
18fc0 69 74 73 20 2a 2f 2c 20 73 61 76 65 64 50 72 6f  its */, savedPro
18fd0 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
18fe0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
18ff0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
19000 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19010 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
19020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
19030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19040 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
19050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19060 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
19070 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
19080 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
19090 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
190a0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
190b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
190c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19100 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
19110 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19120 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
19130 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19140 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
19150 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
19160 20 44 65 66 61 75 6c 74 20 74 6f 20 74 68 65 20   Default to the 
19170 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19180 65 63 74 75 72 65 20 72 65 70 6f 72 74 65 64 20  ecture reported 
19190 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
191a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
191b0 70 70 72 6f 70 72 69 61 74 65 20 6e 61 74 69 76  ppropriate nativ
191c0 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
191d0 65 6d 20 41 50 49 2c 20 69 66 20 61 6e 79 2e 0d  em API, if any..
191e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
191f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19200 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
19210 65 63 74 75 72 65 20 3d 20 4e 61 74 69 76 65 4c  ecture = NativeL
19220 69 62 72 61 72 79 48 65 6c 70 65 72 2e 47 65 74  ibraryHelper.Get
19230 4d 61 63 68 69 6e 65 28 29 3b 0d 0a 0d 0a 20 20  Machine();....  
19240 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
19250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19260 20 4e 4f 54 45 3a 20 55 70 6f 6e 20 66 61 69 6c   NOTE: Upon fail
19270 75 72 65 2c 20 72 65 74 75 72 6e 20 65 6d 70 74  ure, return empt
19280 79 20 73 74 72 69 6e 67 2e 20 20 54 68 69 73 20  y string.  This 
19290 77 69 6c 6c 20 70 72 65 76 65 6e 74 0d 0a 20 20  will prevent..  
192a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
192b0 20 20 20 20 20 74 68 65 20 63 61 6c 6c 69 6e 67       the calling
192c0 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 63 6f 6e   method from con
192d0 73 69 64 65 72 69 6e 67 20 74 68 69 73 20 6d 65  sidering this me
192e0 74 68 6f 64 20 63 61 6c 6c 0d 0a 20 20 20 20 20  thod call..     
192f0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
19300 20 20 61 20 22 66 61 69 6c 75 72 65 22 2e 0d 0a    a "failure"...
19310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19330 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
19340 68 69 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c  hitecture == nul
19350 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19360 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
19370 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 53 74  rchitecture = St
19380 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
19390 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
193a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
193f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
19400 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
19410 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  cture;..      }.
19420 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
19430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19470 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  //..      /// <s
19480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
19490 2f 2f 20 47 69 76 65 6e 20 74 68 65 20 70 72 6f  // Given the pro
194a0 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
194b0 75 72 65 2c 20 72 65 74 75 72 6e 73 20 74 68 65  ure, returns the
194c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 6c 61   name of the pla
194d0 74 66 6f 72 6d 2e 0d 0a 20 20 20 20 20 20 2f 2f  tform...      //
194e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
194f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19500 61 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72  ame="processorAr
19510 63 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20  chitecture">..  
19520 20 20 20 20 2f 2f 2f 20 54 68 65 20 70 72 6f 63      /// The proc
19530 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
19540 72 65 20 74 6f 20 62 65 20 74 72 61 6e 73 6c 61  re to be transla
19550 74 65 64 20 74 6f 20 61 20 70 6c 61 74 66 6f 72  ted to a platfor
19560 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  m name...      /
19570 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19580 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19590 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
195a0 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 20 66 6f  platform name fo
195b0 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
195c0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
195d0 65 63 74 75 72 65 20 2d 4f 52 2d 20 6e 75 6c 6c  ecture -OR- null
195e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69  ..      /// if i
195f0 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
19600 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  rmined...      /
19610 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
19620 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
19630 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 6c  tic string GetPl
19640 61 74 66 6f 72 6d 4e 61 6d 65 28 0d 0a 20 20 20  atformName(..   
19650 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72         string pr
19660 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19670 75 72 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ure /* in */..  
19680 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
19690 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
196a0 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
196b0 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
196c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
196d0 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
196e0 63 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65  cture = GetProce
196f0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19700 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
19710 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
19720 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 63 65 73  llOrEmpty(proces
19730 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
19740 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19750 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
19760 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  .          lock 
19770 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29  (staticSyncRoot)
19780 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
19790 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
197a0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
197b0 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 20  ecturePlatforms 
197c0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
197d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
197e0 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
197f0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
19800 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b 0d 0a   platformName;..
19810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19820 69 66 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63  if (processorArc
19830 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
19840 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 0d  ms.TryGetValue(.
19850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19860 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
19870 41 72 63 68 69 74 65 63 74 75 72 65 2c 20 6f 75  Architecture, ou
19880 74 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 29  t platformName))
19890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
198a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
198b0 20 20 20 20 20 72 65 74 75 72 6e 20 70 6c 61 74       return plat
198c0 66 6f 72 6d 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  formName;..     
198d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
198e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
198f0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
19900 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
19910 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
19960 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
19970 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74  y>..      /// At
19980 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64 20 74  tempts to load t
19990 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
199a0 20 6c 69 62 72 61 72 79 20 62 61 73 65 64 20 6f   library based o
199b0 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  n the specified.
199c0 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 72 65 63  .      /// direc
199d0 74 6f 72 79 20 61 6e 64 20 70 72 6f 63 65 73 73  tory and process
199e0 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 2e  or architecture.
199f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
19a00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
19a10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
19a20 61 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a  aseDirectory">..
19a30 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
19a40 73 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  se directory to 
19a50 75 73 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65  use, null for de
19a60 66 61 75 6c 74 20 28 74 68 65 20 62 61 73 65 20  fault (the base 
19a70 64 69 72 65 63 74 6f 72 79 20 6f 66 0d 0a 20 20  directory of..  
19a80 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 75 72 72      /// the curr
19a90 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
19aa0 64 6f 6d 61 69 6e 29 2e 20 20 54 68 69 73 20 64  domain).  This d
19ab0 69 72 65 63 74 6f 72 79 20 73 68 6f 75 6c 64 20  irectory should 
19ac0 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
19ad0 20 20 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72     /// processor
19ae0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73 70   architecture sp
19af0 65 63 69 66 69 63 20 73 75 62 2d 64 69 72 65 63  ecific sub-direc
19b00 74 6f 72 69 65 73 2e 0d 0a 20 20 20 20 20 20 2f  tories...      /
19b10 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19b20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19b30 6d 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63  me="processorArc
19b40 68 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20  hitecture">..   
19b50 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65     /// The reque
19b60 73 74 65 64 20 70 72 6f 63 65 73 73 6f 72 20 61  sted processor a
19b70 72 63 68 69 74 65 63 74 75 72 65 2c 20 6e 75 6c  rchitecture, nul
19b80 6c 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74  l for default (t
19b90 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
19ba0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
19bb0 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
19bc0 65 6e 74 20 70 72 6f 63 65 73 73 29 2e 20 20 54  ent process).  T
19bd0 68 69 73 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c  his caller shoul
19be0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6d  d..      /// alm
19bf0 6f 73 74 20 61 6c 77 61 79 73 20 73 70 65 63 69  ost always speci
19c00 66 79 20 6e 75 6c 6c 20 66 6f 72 20 74 68 69 73  fy null for this
19c10 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20   parameter...   
19c20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19c30 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
19c40 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77 42 61 73  m name="allowBas
19c50 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 22 3e  eDirectoryOnly">
19c60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
19c70 7a 65 72 6f 20 69 6e 64 69 63 61 74 65 73 20 74  zero indicates t
19c80 68 61 74 20 74 68 65 20 6e 61 74 69 76 65 20 53  hat the native S
19c90 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 63 61  QLite library ca
19ca0 6e 20 62 65 20 6c 6f 61 64 65 64 0d 0a 20 20 20  n be loaded..   
19cb0 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20     /// from the 
19cc0 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 69  base directory i
19cd0 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 2f 2f  tself...      //
19ce0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19cf0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19d00 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46  e="nativeModuleF
19d10 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ileName">..     
19d20 20 2f 2f 2f 20 54 68 65 20 63 61 6e 64 69 64 61   /// The candida
19d30 74 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  te native module
19d40 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6c 6f   file name to lo
19d50 61 64 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65  ad will be store
19d60 64 20 68 65 72 65 2c 0d 0a 20 20 20 20 20 20 2f  d here,..      /
19d70 2f 2f 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  // if necessary.
19d80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
19d90 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
19da0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
19db0 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64 6c 65 22  iveModuleHandle"
19dc0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
19dd0 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68   native module h
19de0 61 6e 64 6c 65 20 61 73 20 72 65 74 75 72 6e 65  andle as returne
19df0 64 20 62 79 20 4c 6f 61 64 4c 69 62 72 61 72 79  d by LoadLibrary
19e00 20 77 69 6c 6c 20 62 65 20 73 74 6f 72 65 64 0d   will be stored.
19e10 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 2c  .      /// here,
19e20 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 20 20   if necessary.  
19e30 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
19e40 62 65 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 69  be IntPtr.Zero i
19e50 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 0d 0a 20  f the call to.. 
19e60 20 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 4c 69 62       /// LoadLib
19e70 72 61 72 79 20 66 61 69 6c 73 2e 0d 0a 20 20 20  rary fails...   
19e80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19e90 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
19ea0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
19eb0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
19ec0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 77 61  native module wa
19ed0 73 20 6c 6f 61 64 65 64 20 73 75 63 63 65 73 73  s loaded success
19ee0 66 75 6c 6c 79 3b 20 6f 74 68 65 72 77 69 73 65  fully; otherwise
19ef0 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72  ,..      /// zer
19f00 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
19f10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19f20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
19f30 6f 6f 6c 20 50 72 65 4c 6f 61 64 53 51 4c 69 74  ool PreLoadSQLit
19f40 65 44 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 20  eDll(..         
19f50 20 73 74 72 69 6e 67 20 62 61 73 65 44 69 72 65   string baseDire
19f60 63 74 6f 72 79 2c 20 20 20 20 20 20 20 20 20 20  ctory,          
19f70 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19f80 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f        string pro
19f90 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19fa0 72 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d  re,    /* in */.
19fb0 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
19fc0 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f  allowBaseDirecto
19fd0 72 79 4f 6e 6c 79 2c 20 20 20 20 20 2f 2a 20 69  ryOnly,     /* i
19fe0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
19ff0 72 65 66 20 73 74 72 69 6e 67 20 6e 61 74 69 76  ref string nativ
1a000 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c  eModuleFileName,
1a010 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1a020 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1a030 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e   nativeModuleHan
1a040 64 6c 65 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f  dle    /* out */
1a050 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
1a060 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a070 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a080 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20  // NOTE: If the 
1a090 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20 64  specified base d
1a0a0 69 72 65 63 74 6f 72 79 20 69 73 20 6e 75 6c 6c  irectory is null
1a0b0 2c 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c  , use the defaul
1a0c0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  t..          // 
1a0d0 20 20 20 20 20 20 28 69 2e 65 2e 20 61 74 74 65        (i.e. atte
1a0e0 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69 63  mpt to automatic
1a0f0 61 6c 6c 79 20 64 65 74 65 63 74 20 69 74 29 2e  ally detect it).
1a100 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1a110 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61            if (ba
1a120 73 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e  seDirectory == n
1a130 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1a140 20 20 20 20 62 61 73 65 44 69 72 65 63 74 6f 72      baseDirector
1a150 79 20 3d 20 47 65 74 42 61 73 65 44 69 72 65 63  y = GetBaseDirec
1a160 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tory();....     
1a170 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a180 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77     // NOTE: If w
1a190 65 20 66 61 69 6c 65 64 20 74 6f 20 71 75 65 72  e failed to quer
1a1a0 79 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  y the base direc
1a1b0 74 6f 72 79 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d  tory, stop now..
1a1c0 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
1a1d0 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 73           if (bas
1a1e0 65 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75  eDirectory == nu
1a1f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1a200 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1a210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1a220 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
1a230 4f 54 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74  OTE: Determine t
1a240 68 65 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  he base file nam
1a250 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
1a260 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
1a270 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1a280 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20       If this is 
1a290 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69  not known by thi
1a2a0 73 20 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e  s class, we cann
1a2b0 6f 74 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20  ot continue...  
1a2c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a2d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1a2e0 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e  eNameOnly = GetN
1a2f0 61 74 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65  ativeLibraryFile
1a300 4e 61 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20  NameOnly();.... 
1a310 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c           if (fil
1a320 65 4e 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c  eNameOnly == nul
1a330 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a340 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1a350 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
1a360 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
1a370 54 45 3a 20 49 66 20 74 68 65 20 6e 61 74 69 76  TE: If the nativ
1a380 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
1a390 20 65 78 69 73 74 73 20 69 6e 20 74 68 65 20 62   exists in the b
1a3a0 61 73 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20  ase directory.. 
1a3b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1a3c0 20 20 69 74 73 65 6c 66 2c 20 70 6f 73 73 69 62    itself, possib
1a3d0 6c 79 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20  ly stop now...  
1a3e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a3f0 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
1a400 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1a410 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1a420 6d 62 69 6e 65 50 61 74 68 28 62 61 73 65 44 69  mbinePath(baseDi
1a430 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
1a440 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1a450 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1a460 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78       if (File.Ex
1a470 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
1a480 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1a490 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a4b0 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 63 61   NOTE: If the ca
1a4c0 6c 6c 65 72 20 69 73 20 61 6c 6c 6f 77 69 6e 67  ller is allowing
1a4d0 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74   the base direct
1a4e0 6f 72 79 20 69 74 73 65 6c 66 0d 0a 20 20 20 20  ory itself..    
1a4f0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1a500 20 20 20 74 6f 20 62 65 20 75 73 65 64 2c 20 61     to be used, a
1a510 6c 73 6f 20 6d 61 6b 65 20 73 75 72 65 20 61 20  lso make sure a 
1a520 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1a530 65 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ecture..        
1a540 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77        //       w
1a550 61 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  as not specified
1a560 3b 20 69 66 20 65 69 74 68 65 72 20 63 6f 6e 64  ; if either cond
1a570 69 74 69 6f 6e 20 69 73 20 66 61 6c 73 65 20 6a  ition is false j
1a580 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ust..           
1a590 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 6f 70     //       stop
1a5a0 20 6e 6f 77 20 61 6e 64 20 72 65 74 75 72 6e 20   now and return 
1a5b0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1a5c0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a5d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
1a5e0 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72 79  lowBaseDirectory
1a5f0 4f 6e 6c 79 20 26 26 0d 0a 20 20 20 20 20 20 20  Only &&..       
1a600 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
1a610 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
1a620 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1a630 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  cture))..       
1a640 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a650 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f              goto
1a660 20 62 61 73 65 44 69 72 4f 6e 6c 79 3b 0d 0a 20   baseDirOnly;.. 
1a670 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1a690 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1a6a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a6b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1a6c0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
1a6d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a6e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1a6f0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1a700 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 73 70   NOTE: If the sp
1a710 65 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f  ecified processo
1a720 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20 69  r architecture i
1a730 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65 0d  s null, use the.
1a740 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
1a750 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20      default...  
1a760 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a770 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73        if (proces
1a780 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
1a790 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1a7a0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
1a7b0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
1a7c0 47 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68  GetProcessorArch
1a7d0 69 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20  itecture();.... 
1a7e0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a7f0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1a800 49 66 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20  If we failed to 
1a810 71 75 65 72 79 20 74 68 65 20 70 72 6f 63 65 73  query the proces
1a820 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
1a830 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20 20 20  , stop now...   
1a840 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1a850 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
1a860 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
1a870 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1a880 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1a890 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1a8a0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a8b0 2f 2f 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74  // NOTE: Build t
1a8c0 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
1a8d0 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
1a8e0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1a8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
1a900 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73 69       library usi
1a910 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  ng the processor
1a920 20 61 72 63 68 69 74 65 63 74 75 72 65 20 6e 61   architecture na
1a930 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1a940 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  /..          fil
1a950 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c  eName = FixUpDll
1a960 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f  FileName(MaybeCo
1a970 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62 65 43  mbinePath(MaybeC
1a980 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
1a990 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
1a9a0 69 72 65 63 74 6f 72 79 2c 20 70 72 6f 63 65 73  irectory, proces
1a9b0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1a9c0 2c 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29  , fileNameOnly))
1a9d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ;....          /
1a9e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
1a9f0 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c  NOTE: If the fil
1aa00 65 20 6e 61 6d 65 20 62 61 73 65 64 20 6f 6e 20  e name based on 
1aa10 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
1aa20 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 0d  chitecture name.
1aa30 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73  .          // is
1aa40 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 74 72 79 20   not found, try 
1aa50 75 73 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69  using the associ
1aa60 61 74 65 64 20 70 6c 61 74 66 6f 72 6d 20 6e 61  ated platform na
1aa70 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  me...          /
1aa80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1aa90 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69  (!File.Exists(fi
1aaa0 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1aab0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1aac0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1aad0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1aae0 41 74 74 65 6d 70 74 20 74 6f 20 74 72 61 6e 73  Attempt to trans
1aaf0 6c 61 74 65 20 74 68 65 20 70 72 6f 63 65 73 73  late the process
1ab00 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 20  or architecture 
1ab10 74 6f 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20  to a..          
1ab20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 6c 61      //       pla
1ab30 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20  tform name...   
1ab40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1ab50 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1ab60 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  ing platformName
1ab70 20 3d 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61   = GetPlatformNa
1ab80 6d 65 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68  me(processorArch
1ab90 69 74 65 63 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  itecture);....  
1aba0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1abb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1abc0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
1abd0 6c 65 64 20 74 6f 20 74 72 61 6e 73 6c 61 74 65  led to translate
1abe0 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 6e 61   the platform na
1abf0 6d 65 2c 20 73 74 6f 70 20 6e 6f 77 2e 0d 0a 20  me, stop now... 
1ac00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1ac10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1ac20 66 20 28 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 20  f (platformName 
1ac30 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1ac40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ac50 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1ac60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1ac80 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65 20  NOTE: Build the 
1ac90 66 75 6c 6c 20 70 61 74 68 20 61 6e 64 20 66 69  full path and fi
1aca0 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
1acb0 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d 0a 20  native SQLite.. 
1acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1acd0 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 75 73        library us
1ace0 69 6e 67 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ing the platform
1acf0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
1ad00 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1ad10 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1ad20 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c 65 4e   = FixUpDllFileN
1ad30 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65  ame(MaybeCombine
1ad40 50 61 74 68 28 4d 61 79 62 65 43 6f 6d 62 69 6e  Path(MaybeCombin
1ad50 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  ePath(..        
1ad60 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44 69            baseDi
1ad70 72 65 63 74 6f 72 79 2c 20 70 6c 61 74 66 6f 72  rectory, platfor
1ad80 6d 4e 61 6d 65 29 2c 20 66 69 6c 65 4e 61 6d 65  mName), fileName
1ad90 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only));....     
1ada0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1adb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1adc0 54 45 3a 20 49 66 20 74 68 65 20 66 69 6c 65 20  TE: If the file 
1add0 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20  does not exist, 
1ade0 73 6b 69 70 20 74 72 79 69 6e 67 20 74 6f 20 6c  skip trying to l
1adf0 6f 61 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  oad it...       
1ae00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1ae10 20 20 20 20 20 20 20 20 20 69 66 20 28 21 46 69           if (!Fi
1ae20 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e 61  le.Exists(fileNa
1ae30 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1ae40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1ae50 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
1ae60 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 62 61 73 65   }....      base
1ae70 44 69 72 4f 6e 6c 79 3a 0d 0a 0d 0a 20 20 20 20  DirOnly:....    
1ae80 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1ae90 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
1aea0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
1aeb0 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20 20  RACE_PRELOAD..  
1aec0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1aed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
1aee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aef0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1af00 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1af10 45 3a 20 53 68 6f 77 20 65 78 61 63 74 6c 79 20  E: Show exactly 
1af20 77 68 65 72 65 20 77 65 20 61 72 65 20 74 72 79  where we are try
1af30 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20  ing to load the 
1af40 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
1af50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1af60 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72     SQLite librar
1af70 79 20 66 72 6f 6d 2e 0d 0a 20 20 20 20 20 20 20  y from...       
1af80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1af90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1afa0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
1afb0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
1afc0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
1afd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1afe0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
1aff0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
1b000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b010 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20 6c         "Native l
1b020 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65  ibrary pre-loade
1b030 72 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 6c  r is trying to l
1b040 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1b050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b060 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1b070 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 2e 2e 2e  brary \"{0}\"...
1b080 22 2c 20 66 69 6c 65 4e 61 6d 65 29 29 3b 20 2f  ", fileName)); /
1b090 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
1b0a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1b0b0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
1b0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b0d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b0e0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
1b0f0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1b100 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
1b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b130 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
1b140 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1b150 69 76 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ive library.  Th
1b160 69 73 20 77 69 6c 6c 20 65 69 74 68 65 72 0d 0a  is will either..
1b170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20         return a 
1b190 76 61 6c 69 64 20 6e 61 74 69 76 65 20 6d 6f 64  valid native mod
1b1a0 75 6c 65 20 68 61 6e 64 6c 65 2c 20 72 65 74 75  ule handle, retu
1b1b0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  rn IntPtr.Zero,.
1b1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1b1d0 2f 20 20 20 20 20 20 20 6f 72 20 74 68 72 6f 77  /       or throw
1b1e0 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2e 20 20   an exception.  
1b1f0 54 68 69 73 20 6d 75 73 74 20 75 73 65 20 74 68  This must use th
1b200 65 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20  e appropriate.. 
1b210 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1b220 20 20 20 20 20 20 50 2f 49 6e 76 6f 6b 65 20 6d        P/Invoke m
1b230 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 63 75  ethod for the cu
1b240 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6e 67 20  rrent operating 
1b250 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20  system...       
1b260 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b270 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1b280 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 20 3d 20  oduleFileName = 
1b290 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
1b2a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
1b2b0 6f 64 75 6c 65 48 61 6e 64 6c 65 20 3d 20 4e 61  oduleHandle = Na
1b2c0 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c 70 65  tiveLibraryHelpe
1b2d0 72 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66 69  r.LoadLibrary(fi
1b2e0 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1b2f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1b300 20 28 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61   (nativeModuleHa
1b310 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
1b320 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ero);..         
1b330 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
1b340 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
1b350 5f 50 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20  _PRELOAD..      
1b360 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
1b370 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
1b380 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1b390 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
1b3a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  dif..          {
1b3b0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
1b3c0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 50  CT_20 && TRACE_P
1b3d0 52 45 4c 4f 41 44 0d 0a 20 20 20 20 20 20 20 20  RELOAD..        
1b3e0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1b3f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b420 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 72      // NOTE: Fir
1b430 73 74 2c 20 67 72 61 62 20 74 68 65 20 6c 61 73  st, grab the las
1b440 74 20 57 69 6e 33 32 20 65 72 72 6f 72 20 6e 75  t Win32 error nu
1b450 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  mber...         
1b460 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1b480 6e 74 20 6c 61 73 74 45 72 72 6f 72 20 3d 20 4d  nt lastError = M
1b490 61 72 73 68 61 6c 2e 47 65 74 4c 61 73 74 57 69  arshal.GetLastWi
1b4a0 6e 33 32 45 72 72 6f 72 28 29 3b 20 2f 2a 20 74  n32Error(); /* t
1b4b0 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1b4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b4e0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77     // NOTE: Show
1b4f0 20 77 68 65 72 65 20 77 65 20 66 61 69 6c 65 64   where we failed
1b500 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 6e 61 74   to load the nat
1b510 69 76 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ive SQLite..    
1b520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b530 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66         library f
1b540 72 6f 6d 20 61 6c 6f 6e 67 20 77 69 74 68 20 74  rom along with t
1b550 68 65 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63  he Win32 error c
1b560 6f 64 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ode and..       
1b570 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1b580 20 20 20 20 65 78 63 65 70 74 69 6f 6e 20 69 6e      exception in
1b590 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
1b5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b5c0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
1b5d0 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
1b5e0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
1b5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b600 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
1b610 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
1b620 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1b630 20 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76            "Nativ
1b640 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
1b650 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 6c  ader failed to l
1b660 6f 61 64 20 6e 61 74 69 76 65 20 22 20 2b 0d 0a  oad native " +..
1b670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b680 20 20 20 20 20 20 22 53 51 4c 69 74 65 20 6c 69        "SQLite li
1b690 62 72 61 72 79 20 5c 22 7b 30 7d 5c 22 20 28 67  brary \"{0}\" (g
1b6a0 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 7b 31  etLastError = {1
1b6b0 7d 29 3a 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  }): {2}",..     
1b6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6d0 20 66 69 6c 65 4e 61 6d 65 2c 20 6c 61 73 74 45   fileName, lastE
1b6e0 72 72 6f 72 2c 20 65 29 29 3b 20 2f 2a 20 74 68  rror, e)); /* th
1b6f0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1b700 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b710 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1b720 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b740 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1b750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1b760 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
1b770 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b780 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1b790 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
1b7a0 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  f..#endif..     
1b7b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1b7c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b810 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
1b820 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1b830 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1b840 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45  NOTE: On the .NE
1b850 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
1b860 6f 72 6b 2c 20 74 68 65 20 6e 61 74 69 76 65 20  ork, the native 
1b870 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
1b880 20 6d 75 73 74 0d 0a 20 20 20 20 2f 2f 20 20 20   must..    //   
1b890 20 20 20 20 62 65 20 75 73 65 64 20 62 65 63 61      be used beca
1b8a0 75 73 65 20 69 74 20 70 72 6f 76 69 64 65 73 20  use it provides 
1b8b0 73 65 76 65 72 61 6c 20 77 6f 72 6b 61 72 6f 75  several workarou
1b8c0 6e 64 73 20 74 6f 20 2e 4e 45 54 20 43 6f 6d 70  nds to .NET Comp
1b8d0 61 63 74 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20  act..    //     
1b8e0 20 20 46 72 61 6d 65 77 6f 72 6b 20 6c 69 6d 69    Framework limi
1b8f0 74 61 74 69 6f 6e 73 20 69 6d 70 6f 72 74 61 6e  tations importan
1b900 74 20 66 6f 72 20 70 72 6f 70 65 72 20 6f 70 65  t for proper ope
1b910 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f  ration of the co
1b920 72 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  re..    //      
1b930 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
1b940 69 74 65 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  ite functionalit
1b950 79 20 28 65 2e 67 2e 20 62 65 69 6e 67 20 61 62  y (e.g. being ab
1b960 6c 65 20 74 6f 20 62 69 6e 64 0d 0a 20 20 20 20  le to bind..    
1b970 2f 2f 20 20 20 20 20 20 20 70 61 72 61 6d 65 74  //       paramet
1b980 65 72 73 20 61 6e 64 20 68 61 6e 64 6c 65 20 63  ers and handle c
1b990 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 6f 66 20  olumn values of 
1b9a0 74 79 70 65 73 20 49 6e 74 36 34 20 61 6e 64 20  types Int64 and 
1b9b0 44 6f 75 62 6c 65 29 2e 0d 0a 20 20 20 20 2f 2f  Double)...    //
1b9c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1b9d0 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1b9e0 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1b9f0 2e 49 6e 74 65 72 6f 70 2e 31 30 39 2e 64 6c 6c  .Interop.109.dll
1ba00 22 3b 0d 0a 23 65 6c 69 66 20 53 51 4c 49 54 45  ";..#elif SQLITE
1ba10 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 2f  _STANDARD..    /
1ba20 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1ba30 4f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68  Otherwise, if th
1ba40 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  e standard SQLit
1ba50 65 20 6c 69 62 72 61 72 79 20 69 73 20 65 6e 61  e library is ena
1ba60 62 6c 65 64 2c 20 75 73 65 20 69 74 2e 0d 0a 20  bled, use it... 
1ba70 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72     //..    inter
1ba80 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  nal const string
1ba90 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22 73   SQLITE_DLL = "s
1baa0 71 6c 69 74 65 33 22 3b 0d 0a 23 65 6c 69 66 20  qlite3";..#elif 
1bab0 55 53 45 5f 49 4e 54 45 52 4f 50 5f 44 4c 4c 0d  USE_INTEROP_DLL.
1bac0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20  .    //..    // 
1bad0 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65 2c  NOTE: Otherwise,
1bae0 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
1baf0 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
1bb00 73 65 6d 62 6c 79 20 69 73 20 65 6e 61 62 6c 65  sembly is enable
1bb10 64 2c 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  d,..    //      
1bb20 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
1bb30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63  ..    internal c
1bb40 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49  onst string SQLI
1bb50 54 45 5f 44 4c 4c 20 3d 20 22 53 51 4c 69 74 65  TE_DLL = "SQLite
1bb60 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 3b 0d 0a  .Interop.dll";..
1bb70 23 65 6c 73 65 0d 0a 20 20 20 20 2f 2f 0d 0a 20  #else..    //.. 
1bb80 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
1bb90 6c 6c 79 2c 20 61 73 73 75 6d 65 20 74 68 61 74  lly, assume that
1bba0 20 74 68 65 20 6d 69 78 65 64 2d 6d 6f 64 65 20   the mixed-mode 
1bbb0 61 73 73 65 6d 62 6c 79 20 69 73 20 62 65 69 6e  assembly is bein
1bbc0 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  g used...    //.
1bbd0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f  .    internal co
1bbe0 6e 73 74 20 73 74 72 69 6e 67 20 53 51 4c 49 54  nst string SQLIT
1bbf0 45 5f 44 4c 4c 20 3d 20 22 53 79 73 74 65 6d 2e  E_DLL = "System.
1bc00 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
1bc10 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
1bc20 20 2f 2f 20 54 68 69 73 20 73 65 63 74 69 6f 6e   // This section
1bc30 20 75 73 65 73 20 69 6e 74 65 72 6f 70 20 63 61   uses interop ca
1bc40 6c 6c 73 20 74 68 61 74 20 61 6c 73 6f 20 66 65  lls that also fe
1bc50 74 63 68 20 74 65 78 74 20 6c 65 6e 67 74 68 20  tch text length 
1bc60 74 6f 20 6f 70 74 69 6d 69 7a 65 20 63 6f 6e 76  to optimize conv
1bc70 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 20  ersion...    // 
1bc80 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73  When using the s
1bc90 74 61 6e 64 61 72 64 20 64 6c 6c 2c 20 77 65 20  tandard dll, we 
1bca0 63 61 6e 20 72 65 70 6c 61 63 65 20 74 68 65 73  can replace thes
1bcb0 65 20 63 61 6c 6c 73 20 77 69 74 68 20 6e 6f 72  e calls with nor
1bcc0 6d 61 6c 20 73 71 6c 69 74 65 20 63 61 6c 6c 73  mal sqlite calls
1bcd0 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20 64 6f 20   and..    // do 
1bce0 75 6e 6f 70 74 69 6d 69 7a 65 64 20 63 6f 6e 76  unoptimized conv
1bcf0 65 72 73 69 6f 6e 73 20 69 6e 73 74 65 61 64 20  ersions instead 
1bd00 61 66 74 65 72 77 61 72 64 73 0d 0a 20 20 20 20  afterwards..    
1bd10 23 72 65 67 69 6f 6e 20 69 6e 74 65 72 6f 70 20  #region interop 
1bd20 61 64 64 65 64 20 74 65 78 74 6c 65 6e 67 74 68  added textlength
1bd30 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20 21 53   calls....#if !S
1bd40 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1bd50 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bd60 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1bd70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bd80 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1bd90 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
1bda0 72 61 6d 65 74 65 72 5f 6e 61 6d 65 5f 69 6e 74  rameter_name_int
1bdb0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1bdc0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1bdd0 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1bde0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1bdf0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1be00 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1be10 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1be20 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1be30 62 61 73 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f  base_name_intero
1be40 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1be50 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1be60 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1be70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1be80 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1be90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1bea0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1beb0 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73  3_column_databas
1bec0 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f 70  e_name16_interop
1bed0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
1bee0 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74  t index, ref int
1bef0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1bf00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1bf10 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1bf20 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1bf30 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1bf40 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
1bf50 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1bf60 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1bf70 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1bf80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1bf90 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1bfa0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1bfb0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1bfc0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1bfd0 64 65 63 6c 74 79 70 65 31 36 5f 69 6e 74 65 72  decltype16_inter
1bfe0 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  op(IntPtr stmt, 
1bff0 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69  int index, ref i
1c000 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nt len);....    
1c010 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1c020 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1c030 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1c040 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1c050 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 5f 69  e3_column_name_i
1c060 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1c070 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
1c080 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1c090 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c0a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c0b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c0c0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
1c0d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
1c0e0 6d 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74  me16_interop(Int
1c0f0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1c100 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e  dex, ref int len
1c110 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1c120 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c130 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c140 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c150 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c  tPtr sqlite3_col
1c160 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 5f  umn_origin_name_
1c170 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1c180 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1c190 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1c1a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c1b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1c1c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c1d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c1e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f  sqlite3_column_o
1c1f0 72 69 67 69 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74  rigin_name16_int
1c200 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1c210 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1c220 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1c230 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c240 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c250 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c260 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1c270 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
1c280 65 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  e_name_interop(I
1c290 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1c2a0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1c2b0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1c2c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c2d0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1c2e0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c2f0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1c300 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65  olumn_table_name
1c310 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  16_interop(IntPt
1c320 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
1c330 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  x, ref int len);
1c340 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c350 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c360 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c370 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c380 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1c390 6e 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28 49  n_text_interop(I
1c3a0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1c3b0 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1c3c0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1c3d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c3e0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1c3f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c400 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1c410 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 5f 69 6e 74  olumn_text16_int
1c420 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1c430 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
1c440 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   int len);....  
1c450 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1c460 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1c470 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1c480 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1c490 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
1c4a0 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
1c4b0 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a  ef int len);....
1c4c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c4d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c4e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c4f0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1c500 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1c510 70 72 65 70 61 72 65 5f 69 6e 74 65 72 6f 70 28  prepare_interop(
1c520 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74  IntPtr db, IntPt
1c530 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42 79 74  r pSql, int nByt
1c540 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73  es, ref IntPtr s
1c550 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  tmt, ref IntPtr 
1c560 70 74 72 52 65 6d 61 69 6e 2c 20 72 65 66 20 69  ptrRemain, ref i
1c570 6e 74 20 6e 52 65 6d 61 69 6e 29 3b 0d 0a 0d 0a  nt nRemain);....
1c580 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1c590 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1c5a0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1c5b0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1c5c0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1c5d0 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74  table_column_met
1c5e0 61 64 61 74 61 5f 69 6e 74 65 72 6f 70 28 49 6e  adata_interop(In
1c5f0 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1c600 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74  dbName, byte[] t
1c610 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63  blName, byte[] c
1c620 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50  olName, ref IntP
1c630 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c 20  tr ptrDataType, 
1c640 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43 6f  ref IntPtr ptrCo
1c650 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20 6e  llSeq, ref int n
1c660 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74 20  otNull, ref int 
1c670 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66 20  primaryKey, ref 
1c680 69 6e 74 20 61 75 74 6f 49 6e 63 2c 20 72 65 66  int autoInc, ref
1c690 20 69 6e 74 20 64 74 4c 65 6e 2c 20 72 65 66 20   int dtLen, ref 
1c6a0 69 6e 74 20 63 73 4c 65 6e 29 3b 0d 0a 0d 0a 20  int csLen);.... 
1c6b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c6c0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1c6d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c6e0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1c6f0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
1c700 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1c710 70 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b  p, ref int len);
1c720 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c730 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c740 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c750 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c760 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1c770 5f 74 65 78 74 31 36 5f 69 6e 74 65 72 6f 70 28  _text16_interop(
1c780 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
1c790 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1c7a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c7b0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c7c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c7d0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6d  rn int sqlite3_m
1c7e0 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72  alloc_size_inter
1c7f0 6f 70 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d  op(IntPtr p);...
1c800 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 4c 4f 47  .#if INTEROP_LOG
1c810 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c820 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1c830 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c840 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1c850 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1c860 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 5f 69 6e 74  3_config_log_int
1c870 65 72 6f 70 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  erop();..#endif.
1c880 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c  .#endif..// !SQL
1c890 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a  ITE_STANDARD....
1c8a0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c8b0 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20 66  ..    // These f
1c8c0 75 6e 63 74 69 6f 6e 73 20 61 64 64 20 65 78 69  unctions add exi
1c8d0 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 61 6c  sting functional
1c8e0 69 74 79 20 6f 6e 20 74 6f 70 20 6f 66 20 53 51  ity on top of SQ
1c8f0 4c 69 74 65 20 61 6e 64 20 72 65 71 75 69 72 65  Lite and require
1c900 20 61 20 6c 69 74 74 6c 65 20 65 66 66 6f 72 74   a little effort
1c910 20 74 6f 0d 0a 20 20 20 20 2f 2f 20 67 65 74 20   to..    // get 
1c920 77 6f 72 6b 69 6e 67 20 77 68 65 6e 20 75 73 69  working when usi
1c930 6e 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  ng the standard 
1c940 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d  SQLite library..
1c950 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69 6e 74  .    #region int
1c960 65 72 6f 70 20 61 64 64 65 64 20 66 75 6e 63 74  erop added funct
1c970 69 6f 6e 61 6c 69 74 79 0d 0a 0d 0a 23 69 66 20  ionality....#if 
1c980 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
1c990 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
1c9a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1c9b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1c9c0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1c9d0 74 72 20 69 6e 74 65 72 6f 70 5f 6c 69 62 76 65  tr interop_libve
1c9e0 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  rsion();....    
1c9f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ca00 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1ca10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ca20 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72  ern IntPtr inter
1ca30 6f 70 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a  op_sourceid();..
1ca40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1ca50 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1ca60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ca70 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 69 6e  ic extern int in
1ca80 74 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74  terop_compileopt
1ca90 69 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20  ion_used(IntPtr 
1caa0 7a 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  zOptName);....  
1cab0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cac0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cad0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cae0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 69 6e 74  xtern IntPtr int
1caf0 65 72 6f 70 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  erop_compileopti
1cb00 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d 0a  on_get(int N);..
1cb10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cb20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1cb30 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1cb40 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1cb50 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1cb60 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70 28  3_close_interop(
1cb70 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 20  IntPtr db);.... 
1cb80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cb90 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1cba0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1cbb0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
1cbc0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
1cbd0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 5f 69  reate_function_i
1cbe0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1cbf0 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
1cc00 2c 20 69 6e 74 20 6e 41 72 67 73 2c 20 69 6e 74  , int nArgs, int
1cc10 20 6e 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70   nType, IntPtr p
1cc20 76 55 73 65 72 2c 20 53 51 4c 69 74 65 43 61 6c  vUser, SQLiteCal
1cc30 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69  lback func, SQLi
1cc40 74 65 43 61 6c 6c 62 61 63 6b 20 66 73 74 65 70  teCallback fstep
1cc50 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43 61 6c  , SQLiteFinalCal
1cc60 6c 62 61 63 6b 20 66 66 69 6e 61 6c 2c 20 69 6e  lback ffinal, in
1cc70 74 20 6e 65 65 64 43 6f 6c 6c 53 65 71 29 3b 0d  t needCollSeq);.
1cc80 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1cc90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1cca0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ccb0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1ccc0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1ccd0 65 33 5f 66 69 6e 61 6c 69 7a 65 5f 69 6e 74 65  e3_finalize_inte
1cce0 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29  rop(IntPtr stmt)
1ccf0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1cd00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cd10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cd20 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cd30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cd40 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
1cd50 73 68 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sh_interop(IntPt
1cd60 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  r backup);....  
1cd70 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1cd80 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1cd90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1cda0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1cdb0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c  rCode sqlite3_bl
1cdc0 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
1cdd0 28 49 6e 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a  (IntPtr blob);..
1cde0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1cdf0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1ce00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ce10 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1ce20 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1ce30 33 5f 6f 70 65 6e 5f 69 6e 74 65 72 6f 70 28 62  3_open_interop(b
1ce40 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1ce50 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1ce60 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1ce70 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1ce80 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1ce90 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1cea0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ceb0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1cec0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1ced0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1cee0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1cef0 6f 70 65 6e 31 36 5f 69 6e 74 65 72 6f 70 28 62  open16_interop(b
1cf00 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
1cf10 6d 65 2c 20 62 79 74 65 5b 5d 20 76 66 73 4e 61  me, byte[] vfsNa
1cf20 6d 65 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  me, SQLiteOpenFl
1cf30 61 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 69  agsEnum flags, i
1cf40 6e 74 20 65 78 74 46 75 6e 63 73 2c 20 72 65 66  nt extFuncs, ref
1cf50 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d 0a   IntPtr db);....
1cf60 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1cf70 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
1cf80 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1cf90 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1cfa0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1cfb0 72 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 49 6e  reset_interop(In
1cfc0 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20  tPtr stmt);.... 
1cfd0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1cfe0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1cff0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1d000 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
1d010 65 33 5f 63 68 61 6e 67 65 73 5f 69 6e 74 65 72  e3_changes_inter
1d020 6f 70 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  op(IntPtr db);..
1d030 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53 51 4c 49  #endif..// !SQLI
1d040 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1d050 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1d060 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 74 61 6e  .    // The stan
1d070 64 61 72 64 20 61 70 69 20 63 61 6c 6c 20 65 71  dard api call eq
1d080 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 65  uivalents of the
1d090 20 61 62 6f 76 65 20 69 6e 74 65 72 6f 70 20 63   above interop c
1d0a0 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
1d0b0 6e 20 73 74 61 6e 64 61 72 64 20 76 65 72 73 69  n standard versi
1d0c0 6f 6e 73 20 6f 66 20 69 6e 74 65 72 6f 70 20 66  ons of interop f
1d0d0 75 6e 63 74 69 6f 6e 73 0d 0a 0d 0a 23 69 66 20  unctions....#if 
1d0e0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1d0f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d100 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d110 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d120 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d130 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d140 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d150 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d160 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d170 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d180 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d190 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d1a0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d1b0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1d1c0 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  e(IntPtr db);...
1d1d0 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f 4c 45  .#if !INTEROP_LE
1d1e0 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 23 69 66 20  GACY_CLOSE..#if 
1d1f0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1d200 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1d210 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d220 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1d230 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1d240 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1d250 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1d260 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1d270 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1d280 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1d290 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1d2a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1d2b0 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 49 6e  ite3_close_v2(In
1d2c0 74 50 74 72 20 64 62 29 3b 20 2f 2a 20 33 2e 37  tPtr db); /* 3.7
1d2d0 2e 31 34 2b 20 2a 2f 0d 0a 23 65 6e 64 69 66 0d  .14+ */..#endif.
1d2e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1d2f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d300 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d310 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d320 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d330 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d340 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d350 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d360 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d370 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d380 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d390 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d3a0 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  ode sqlite3_crea
1d3b0 74 65 5f 66 75 6e 63 74 69 6f 6e 28 49 6e 74 50  te_function(IntP
1d3c0 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 73 74  tr db, byte[] st
1d3d0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67 73  rName, int nArgs
1d3e0 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
1d3f0 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
1d400 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
1d410 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
1d420 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69 6e  fstep, SQLiteFin
1d430 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69 6e 61  alCallback ffina
1d440 6c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  l);....#if !PLAT
1d450 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1d460 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1d470 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d480 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1d490 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1d4a0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1d4b0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1d4c0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1d4d0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1d4e0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1d4f0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1d500 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1d510 66 69 6e 61 6c 69 7a 65 28 49 6e 74 50 74 72 20  finalize(IntPtr 
1d520 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
1d530 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d540 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d550 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d560 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d570 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d580 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d590 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d5a0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d5b0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d5c0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d5d0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d5e0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d5f0 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
1d600 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 3b  (IntPtr backup);
1d610 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d620 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d630 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d640 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d660 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d670 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d680 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d690 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d6a0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d6b0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d6c0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1d6d0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72 65 73  Code sqlite3_res
1d6e0 65 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  et(IntPtr stmt);
1d6f0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d700 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d710 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d720 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d730 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d740 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d750 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d760 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d770 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d780 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d790 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d7a0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1d7b0 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
1d7c0 65 72 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73  er_name(IntPtr s
1d7d0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1d7e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1d7f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d800 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1d810 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1d820 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1d830 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1d840 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1d850 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1d860 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1d870 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1d880 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1d890 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1d8a0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62  te3_column_datab
1d8b0 61 73 65 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20  ase_name(IntPtr 
1d8c0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
1d8d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1d8e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1d8f0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1d900 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1d910 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d920 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1d930 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1d940 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1d950 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d960 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1d970 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1d980 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
1d990 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61  ite3_column_data
1d9a0 62 61 73 65 5f 6e 61 6d 65 31 36 28 49 6e 74 50  base_name16(IntP
1d9b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1d9c0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
1d9d0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1d9e0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1d9f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1da00 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1da10 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1da20 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1da30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1da40 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1da50 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1da60 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1da70 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1da80 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1da90 65 63 6c 74 79 70 65 28 49 6e 74 50 74 72 20 73  ecltype(IntPtr s
1daa0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1dab0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dac0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dad0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dae0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1daf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1db00 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1db10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1db20 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1db30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1db40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1db50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1db60 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1db70 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74  te3_column_declt
1db80 79 70 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ype16(IntPtr stm
1db90 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1dba0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1dbb0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1dbc0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1dbd0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1dbe0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1dbf0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1dc00 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1dc10 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1dc20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1dc30 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1dc40 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1dc50 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1dc60 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 49 6e  3_column_name(In
1dc70 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1dc80 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1dc90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1dca0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1dcb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1dcc0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1dcd0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1dce0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1dcf0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1dd00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dd10 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1dd20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1dd30 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1dd40 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1dd50 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1dd60 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1dd70 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1dd80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1dd90 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1dda0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1ddb0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1ddc0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1ddd0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dde0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1ddf0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1de00 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1de10 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1de20 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1de30 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1de40 6e 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74  n_name(IntPtr st
1de50 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
1de60 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1de70 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1de80 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1de90 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1dea0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1deb0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1dec0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1ded0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1dee0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1def0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1df00 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1df10 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1df20 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e  e3_column_origin
1df30 5f 6e 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73  _name16(IntPtr s
1df40 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1df50 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1df60 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1df70 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1df80 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1df90 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1dfa0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1dfb0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1dfc0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1dfd0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1dfe0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1dff0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e000 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e010 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65  te3_column_table
1e020 5f 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d  _name(IntPtr stm
1e030 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1e040 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e050 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e060 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e070 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e080 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e090 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e0a0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e0b0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e0c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e0d0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e0e0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e0f0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1e100 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c 65 5f 6e  3_column_table_n
1e110 61 6d 65 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ame16(IntPtr stm
1e120 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
1e130 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e140 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e150 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e160 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e170 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e180 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e190 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e1a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e1b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e1c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1e1d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1e1e0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1e1f0 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 49 6e  3_column_text(In
1e200 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1e210 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1e220 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e230 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e240 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e250 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e260 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e270 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e280 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e290 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e2a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e2b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e2c0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1e2d0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1e2e0 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 73  _text16(IntPtr s
1e2f0 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
1e300 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e310 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e320 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e330 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e340 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e350 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e360 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e370 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e380 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e390 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e3a0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e3b0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e3c0 74 65 33 5f 65 72 72 6d 73 67 28 49 6e 74 50 74  te3_errmsg(IntPt
1e3d0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
1e3e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e3f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e400 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e410 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e420 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e430 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e440 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e450 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e460 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e470 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e480 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1e490 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1e4a0 65 33 5f 70 72 65 70 61 72 65 28 49 6e 74 50 74  e3_prepare(IntPt
1e4b0 72 20 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71  r db, IntPtr pSq
1e4c0 6c 2c 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72  l, int nBytes, r
1e4d0 65 66 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  ef IntPtr stmt, 
1e4e0 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 52 65  ref IntPtr ptrRe
1e4f0 6d 61 69 6e 29 3b 0d 0a 0d 0a 23 69 66 20 55 53  main);....#if US
1e500 45 5f 50 52 45 50 41 52 45 5f 56 32 0d 0a 23 69  E_PREPARE_V2..#i
1e510 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e520 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e530 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1e540 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1e550 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1e560 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1e570 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1e580 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1e590 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1e5a0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1e5b0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1e5c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1e5d0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
1e5e0 32 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  2(IntPtr db, Int
1e5f0 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1e600 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1e610 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1e620 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 23  r ptrRemain);..#
1e630 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
1e640 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e650 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e660 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e670 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e680 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e690 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e6a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e6b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e6c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e6d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e6e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
1e6f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
1e700 33 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d  3_table_column_m
1e710 65 74 61 64 61 74 61 28 49 6e 74 50 74 72 20 64  etadata(IntPtr d
1e720 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65  b, byte[] dbName
1e730 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65  , byte[] tblName
1e740 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65  , byte[] colName
1e750 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72  , ref IntPtr ptr
1e760 44 61 74 61 54 79 70 65 2c 20 72 65 66 20 49 6e  DataType, ref In
1e770 74 50 74 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c  tPtr ptrCollSeq,
1e780 20 72 65 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c   ref int notNull
1e790 2c 20 72 65 66 20 69 6e 74 20 70 72 69 6d 61 72  , ref int primar
1e7a0 79 4b 65 79 2c 20 72 65 66 20 69 6e 74 20 61 75  yKey, ref int au
1e7b0 74 6f 49 6e 63 29 3b 0d 0a 0d 0a 23 69 66 20 21  toInc);....#if !
1e7c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e7d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e7e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e7f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e800 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e810 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e820 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e840 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e850 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e860 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1e870 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1e880 5f 74 65 78 74 28 49 6e 74 50 74 72 20 70 29 3b  _text(IntPtr p);
1e890 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1e8a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e8b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1e8c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1e8d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e8e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1e8f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1e900 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1e910 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1e920 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1e930 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1e940 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1e950 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36  te3_value_text16
1e960 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
1e970 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 53 51  endif..    // SQ
1e980 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d  LITE_STANDARD...
1e990 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
1e9a0 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73 65 20  ...    // These 
1e9b0 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 63 75  functions are cu
1e9c0 73 74 6f 6d 20 61 6e 64 20 68 61 76 65 20 6e 6f  stom and have no
1e9d0 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61 6e   equivalent stan
1e9e0 64 61 72 64 20 6c 69 62 72 61 72 79 20 6d 65 74  dard library met
1e9f0 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 20 41 6c 6c  hod...    // All
1ea00 20 6f 66 20 74 68 65 6d 20 61 72 65 20 22 6e 69   of them are "ni
1ea10 63 65 20 74 6f 20 68 61 76 65 73 22 20 61 6e 64  ce to haves" and
1ea20 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
1ea30 20 22 6e 65 65 64 20 74 6f 20 68 61 76 65 73 22   "need to haves"
1ea40 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 6e  ...    #region n
1ea50 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 73 74 61  o equivalent sta
1ea60 6e 64 61 72 64 20 6d 65 74 68 6f 64 0d 0a 0d 0a  ndard method....
1ea70 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
1ea80 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  DARD....    [Dll
1ea90 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1eaa0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1eab0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1eac0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1ead0 6f 6e 74 65 78 74 5f 63 6f 6c 6c 73 65 71 5f 69  ontext_collseq_i
1eae0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 63 6f  nterop(IntPtr co
1eaf0 6e 74 65 78 74 2c 20 72 65 66 20 69 6e 74 20 74  ntext, ref int t
1eb00 79 70 65 2c 20 72 65 66 20 69 6e 74 20 65 6e 63  ype, ref int enc
1eb10 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1eb20 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1eb30 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1eb40 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1eb50 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
1eb60 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63  qlite3_context_c
1eb70 6f 6c 6c 63 6f 6d 70 61 72 65 5f 69 6e 74 65 72  ollcompare_inter
1eb80 6f 70 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  op(IntPtr contex
1eb90 74 2c 20 62 79 74 65 5b 5d 20 70 31 2c 20 69 6e  t, byte[] p1, in
1eba0 74 20 70 31 6c 65 6e 2c 20 62 79 74 65 5b 5d 20  t p1len, byte[] 
1ebb0 70 32 2c 20 69 6e 74 20 70 32 6c 65 6e 29 3b 0d  p2, int p2len);.
1ebc0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1ebd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1ebe0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1ebf0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1ec00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1ec10 65 33 5f 63 75 72 73 6f 72 5f 72 6f 77 69 64 5f  e3_cursor_rowid_
1ec20 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1ec30 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72 2c  tmt, int cursor,
1ec40 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 69 64 29   ref long rowid)
1ec50 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ec60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ec70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ec80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1ec90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1eca0 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6c 75 6d  ite3_index_colum
1ecb0 6e 5f 69 6e 66 6f 5f 69 6e 74 65 72 6f 70 28 49  n_info_interop(I
1ecc0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1ecd0 20 63 61 74 61 6c 6f 67 2c 20 62 79 74 65 5b 5d   catalog, byte[]
1ece0 20 49 6e 64 65 78 4e 61 6d 65 2c 20 62 79 74 65   IndexName, byte
1ecf0 5b 5d 20 43 6f 6c 75 6d 6e 4e 61 6d 65 2c 20 72  [] ColumnName, r
1ed00 65 66 20 69 6e 74 20 73 6f 72 74 4f 72 64 65 72  ef int sortOrder
1ed10 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f  , ref int onErro
1ed20 72 2c 20 72 65 66 20 49 6e 74 50 74 72 20 43 6f  r, ref IntPtr Co
1ed30 6c 6c 61 74 69 6f 6e 2c 20 72 65 66 20 69 6e 74  llation, ref int
1ed40 20 63 6f 6c 6c 6c 65 6e 29 3b 0d 0a 0d 0a 20 20   colllen);....  
1ed50 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1ed60 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
1ed70 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1ed80 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65  xtern int sqlite
1ed90 33 5f 74 61 62 6c 65 5f 63 75 72 73 6f 72 5f 69  3_table_cursor_i
1eda0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74  nterop(IntPtr st
1edb0 6d 74 2c 20 69 6e 74 20 64 62 2c 20 69 6e 74 20  mt, int db, int 
1edc0 74 61 62 6c 65 52 6f 6f 74 50 61 67 65 29 3b 0d  tableRootPage);.
1edd0 0a 0d 0a 23 65 6e 64 69 66 0d 0a 2f 2f 20 21 53  ...#endif..// !S
1ede0 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
1edf0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1ee00 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 74 61 6e 64  ....    // Stand
1ee10 61 72 64 20 41 50 49 20 63 61 6c 6c 73 20 67 6c  ard API calls gl
1ee20 6f 62 61 6c 20 61 63 72 6f 73 73 20 76 65 72 73  obal across vers
1ee30 69 6f 6e 73 2e 20 20 54 68 65 72 65 20 61 72 65  ions.  There are
1ee40 20 61 20 66 65 77 20 69 6e 73 74 61 6e 63 65 73   a few instances
1ee50 20 6f 66 20 69 6e 74 65 72 6f 70 20 63 61 6c 6c   of interop call
1ee60 73 0d 0a 20 20 20 20 2f 2f 20 73 63 61 74 74 65  s..    // scatte
1ee70 72 65 64 20 69 6e 20 68 65 72 65 2c 20 62 75 74  red in here, but
1ee80 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 61   they are only a
1ee90 63 74 69 76 65 20 77 68 65 6e 20 50 4c 41 54 46  ctive when PLATF
1eea0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1eeb0 57 4f 52 4b 20 69 73 20 64 65 63 6c 61 72 65 64  WORK is declared
1eec0 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
1eed0 74 61 6e 64 61 72 64 20 73 71 6c 69 74 65 20 61  tandard sqlite a
1eee0 70 69 20 63 61 6c 6c 73 0d 0a 0d 0a 23 69 66 20  pi calls....#if 
1eef0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1ef00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1ef10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ef20 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1ef30 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1ef40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1ef50 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1ef60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1ef70 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1ef80 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ef90 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1efa0 50 74 72 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  Ptr sqlite3_libv
1efb0 65 72 73 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  ersion();....#if
1efc0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1efd0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1efe0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1eff0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f000 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f010 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f020 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f030 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f040 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f050 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f060 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1f070 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72  t sqlite3_libver
1f080 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3b 0d 0a  sion_number();..
1f090 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1f0a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1f0b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f0c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1f0d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1f0e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f0f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1f100 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1f110 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1f120 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1f130 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1f140 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1f150 33 5f 73 6f 75 72 63 65 69 64 28 29 3b 0d 0a 0d  3_sourceid();...
1f160 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f170 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f180 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f190 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f1a0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f1b0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f1c0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f1d0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f1e0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f1f0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f200 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f210 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1f220 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
1f230 28 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65  (IntPtr zOptName
1f240 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
1f250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1f260 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
1f270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
1f280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1f290 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
1f2a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
1f2b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f2c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f2d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
1f2e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1f2f0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1f300 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
1f310 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0d  ion_get(int N);.
1f320 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f330 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f340 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f350 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f360 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f370 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f380 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f390 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f3a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f3b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f3c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f3d0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1f3e0 6f 64 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62  ode sqlite3_enab
1f3f0 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28  le_shared_cache(
1f400 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 65 6e  ..        int en
1f410 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  able);....#if !P
1f420 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f430 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f440 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f450 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f460 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f470 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f480 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f490 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f4a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f4b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f4c0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f4d0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f4e0 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65  e3_enable_load_e
1f4f0 78 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20  xtension(..     
1f500 20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 69 6e     IntPtr db, in
1f510 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t enable);....#i
1f520 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1f530 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1f540 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f550 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1f560 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1f570 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1f580 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1f590 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1f5a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1f5b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1f5c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1f5d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1f5e0 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
1f5f0 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  nsion(..        
1f600 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
1f610 5d 20 66 69 6c 65 4e 61 6d 65 2c 20 62 79 74 65  ] fileName, byte
1f620 5b 5d 20 70 72 6f 63 4e 61 6d 65 2c 20 72 65 66  [] procName, ref
1f630 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 29 3b   IntPtr pError);
1f640 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f650 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f660 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f670 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f680 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f690 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f6a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f6b0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f6c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f6d0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f6e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f6f0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
1f700 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6f 76 65  Code sqlite3_ove
1f710 72 6c 6f 61 64 5f 66 75 6e 63 74 69 6f 6e 28 49  rload_function(I
1f720 6e 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72  ntPtr db, IntPtr
1f730 20 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72 67   zName, int nArg
1f740 73 29 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f  s);....#if WINDO
1f750 57 53 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  WS..#if !PLATFOR
1f760 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f770 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f780 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f790 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f7a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f7b0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
1f7c0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
1f7d0 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
1f7e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1f7f0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
1f800 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
1f810 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
1f820 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e      //..    // N
1f830 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69 74 65  OTE: The "sqlite
1f840 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72 65  3_win32_set_dire
1f850 63 74 6f 72 79 22 20 53 51 4c 69 74 65 20 63 6f  ctory" SQLite co
1f860 72 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74  re library funct
1f870 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20  ion is..    //  
1f880 20 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72       only suppor
1f890 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0d  ted on Windows..
1f8a0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
1f8b0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f8c0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1f8d0 6f 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33  ode sqlite3_win3
1f8e0 32 5f 73 65 74 5f 64 69 72 65 63 74 6f 72 79 28  2_set_directory(
1f8f0 75 69 6e 74 20 74 79 70 65 2c 20 73 74 72 69 6e  uint type, strin
1f900 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  g value);....#if
1f910 20 21 44 45 42 55 47 20 2f 2f 20 4e 4f 54 45 3a   !DEBUG // NOTE:
1f920 20 53 68 6f 75 6c 64 20 62 65 20 22 57 49 4e 33   Should be "WIN3
1f930 32 48 45 41 50 20 26 26 20 21 4d 45 4d 44 45 42  2HEAP && !MEMDEB
1f940 55 47 22 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  UG"..#if !PLATFO
1f950 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f960 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f970 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f980 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f990 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f9a0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f9b0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f9c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f9d0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f  ]..#endif..    /
1f9e0 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
1f9f0 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77 69 6e  The "sqlite3_win
1fa00 33 32 5f 72 65 73 65 74 5f 68 65 61 70 22 20 53  32_reset_heap" S
1fa10 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1fa20 72 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a  ry function is..
1fa30 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1fa40 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57  y supported on W
1fa50 69 6e 64 6f 77 73 20 77 68 65 6e 20 74 68 65 20  indows when the 
1fa60 57 69 6e 33 32 20 6e 61 74 69 76 65 20 61 6c 6c  Win32 native all
1fa70 6f 63 61 74 6f 72 20 69 73 20 69 6e 0d 0a 20 20  ocator is in..  
1fa80 20 20 2f 2f 20 20 20 20 20 20 20 75 73 65 20 28    //       use (
1fa90 69 2e 65 2e 20 62 79 20 64 65 66 61 75 6c 74 2c  i.e. by default,
1faa0 20 69 6e 20 22 52 65 6c 65 61 73 65 22 20 62 75   in "Release" bu
1fab0 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44  ilds of System.D
1fac0 61 74 61 2e 53 51 4c 69 74 65 0d 0a 20 20 20 20  ata.SQLite..    
1fad0 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 29 2e 20  //       only). 
1fae0 20 42 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20   By default, in 
1faf0 22 44 65 62 75 67 22 20 62 75 69 6c 64 73 20 6f  "Debug" builds o
1fb00 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  f System.Data.SQ
1fb10 4c 69 74 65 2c 20 74 68 65 0d 0a 20 20 20 20 2f  Lite, the..    /
1fb20 2f 20 20 20 20 20 20 20 4d 45 4d 44 45 42 55 47  /       MEMDEBUG
1fb30 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 75 73   allocator is us
1fb40 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20  ed...    //..   
1fb50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
1fb60 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
1fb70 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
1fb80 77 69 6e 33 32 5f 72 65 73 65 74 5f 68 65 61 70  win32_reset_heap
1fb90 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
1fba0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
1fbb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
1fbc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1fbd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
1fbe0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
1fbf0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
1fc00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
1fc10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1fc20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
1fc30 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45   //..    // NOTE
1fc40 3a 20 54 68 65 20 22 73 71 6c 69 74 65 33 5f 77  : The "sqlite3_w
1fc50 69 6e 33 32 5f 63 6f 6d 70 61 63 74 5f 68 65 61  in32_compact_hea
1fc60 70 22 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  p" SQLite core l
1fc70 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20  ibrary function 
1fc80 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20  is..    //      
1fc90 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20   only supported 
1fca0 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68 65 6e 20  on Windows when 
1fcb0 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65  the Win32 native
1fcc0 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 69 6e   allocator is in
1fcd0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75  ..    //       u
1fce0 73 65 20 28 69 2e 65 2e 20 62 79 20 64 65 66 61  se (i.e. by defa
1fcf0 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65 61 73 65  ult, in "Release
1fd00 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73 74  " builds of Syst
1fd10 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a  em.Data.SQLite..
1fd20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
1fd30 79 29 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c  y).  By default,
1fd40 20 69 6e 20 22 44 65 62 75 67 22 20 62 75 69 6c   in "Debug" buil
1fd50 64 73 20 6f 66 20 53 79 73 74 65 6d 2e 44 61 74  ds of System.Dat
1fd60 61 2e 53 51 4c 69 74 65 2c 20 74 68 65 0d 0a 20  a.SQLite, the.. 
1fd70 20 20 20 2f 2f 20 20 20 20 20 20 20 4d 45 4d 44     //       MEMD
1fd80 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f 72 20 69  EBUG allocator i
1fd90 73 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 0d  s used...    //.
1fda0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1fdb0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1fdc0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1fdd0 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70 61 63  te3_win32_compac
1fde0 74 5f 68 65 61 70 28 72 65 66 20 75 69 6e 74 20  t_heap(ref uint 
1fdf0 6c 61 72 67 65 73 74 29 3b 0d 0a 23 65 6e 64 69  largest);..#endi
1fe00 66 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  f..#endif....#if
1fe10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1fe20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1fe30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fe40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1fe50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1fe60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1fe70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1fe80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fe90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1fea0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1feb0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1fec0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d 61 6c  tPtr sqlite3_mal
1fed0 6c 6f 63 28 69 6e 74 20 6e 29 3b 0d 0a 0d 0a 23  loc(int n);....#
1fee0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1fef0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ff00 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ff10 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1ff20 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1ff30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1ff40 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1ff50 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1ff60 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1ff70 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1ff80 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1ff90 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 6d  IntPtr sqlite3_m
1ffa0 61 6c 6c 6f 63 36 34 28 75 6c 6f 6e 67 20 6e 29  alloc64(ulong n)
1ffb0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1ffc0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1ffd0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1ffe0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1fff0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20000 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20010 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
20020 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
20030 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
20040 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20050 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20060 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
20070 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 49 6e 74  ite3_realloc(Int
20080 50 74 72 20 70 2c 20 69 6e 74 20 6e 29 3b 0d 0a  Ptr p, int n);..
20090 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
200a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
200b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
200c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
200d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
200e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
200f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
20100 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
20110 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
20120 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
20130 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20140 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
20150 33 5f 72 65 61 6c 6c 6f 63 36 34 28 49 6e 74 50  3_realloc64(IntP
20160 74 72 20 70 2c 20 75 6c 6f 6e 67 20 6e 29 3b 0d  tr p, ulong n);.
20170 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20180 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20190 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
201a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
201b0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
201c0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
201d0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
201e0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
201f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20200 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20210 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20220 65 72 6e 20 75 6c 6f 6e 67 20 73 71 6c 69 74 65  ern ulong sqlite
20230 33 5f 6d 73 69 7a 65 28 49 6e 74 50 74 72 20 70  3_msize(IntPtr p
20240 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20250 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20260 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20270 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20280 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20290 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
202a0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
202b0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
202c0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
202d0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
202e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
202f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
20300 74 65 33 5f 66 72 65 65 28 49 6e 74 50 74 72 20  te3_free(IntPtr 
20310 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
20320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20330 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20340 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20350 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20360 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20370 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20380 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
203a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
203b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
203c0 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
203d0 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
203e0 6f 70 65 6e 5f 76 32 28 62 79 74 65 5b 5d 20 75  open_v2(byte[] u
203f0 74 66 38 46 69 6c 65 6e 61 6d 65 2c 20 72 65 66  tf8Filename, ref
20400 20 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69   IntPtr db, SQLi
20410 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20  teOpenFlagsEnum 
20420 66 6c 61 67 73 2c 20 62 79 74 65 5b 5d 20 76 66  flags, byte[] vf
20430 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  sName);....#if !
20440 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
20450 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
20460 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20470 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20480 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20490 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
204a0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
204b0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
204c0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
204d0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
204e0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
204f0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
20500 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20510 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20520 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20530 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  e sqlite3_open16
20540 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65  (string fileName
20550 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64 62 29  , ref IntPtr db)
20560 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20570 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20580 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20590 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
205a0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
205b0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
205c0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
205d0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
205e0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
205f0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
20600 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
20610 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
20620 65 33 5f 69 6e 74 65 72 72 75 70 74 28 49 6e 74  e3_interrupt(Int
20630 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
20640 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20650 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20660 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20670 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20680 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20690 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
206a0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
206b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
206c0 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61   long sqlite3_la
206d0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
206e0 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 23 65 6e  IntPtr db);..#en
206f0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
20700 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20710 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
20720 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20730 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20740 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20750 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
20760 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
20770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
20780 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
20790 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
207a0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
207b0 74 65 33 5f 63 68 61 6e 67 65 73 28 49 6e 74 50  te3_changes(IntP
207c0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
207d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
207e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
207f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20800 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
20810 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
20820 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
20830 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
20840 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
20850 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 6d 65 6d  long sqlite3_mem
20860 6f 72 79 5f 75 73 65 64 28 29 3b 0d 0a 23 65 6e  ory_used();..#en
20870 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
20880 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
20890 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
208a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
208b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
208c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
208d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
208e0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
208f0 61 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67  atic extern long
20900 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
20910 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65  highwater(int re
20920 73 65 74 46 6c 61 67 29 3b 0d 0a 23 65 6e 64 69  setFlag);..#endi
20930 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
20940 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20950 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20960 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20970 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20980 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20990 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
209a0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
209b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
209c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
209d0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
209e0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
209f0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 68  rCode sqlite3_sh
20a00 75 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66  utdown();....#if
20a10 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20a20 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20a30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20a40 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20a50 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20a60 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20a70 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20a80 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20a90 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20aa0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20ab0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
20ac0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
20ad0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
20ae0 75 74 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e  ut(IntPtr db, in
20af0 74 20 6d 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  t ms);....#if !P
20b00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20b10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20b20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20b30 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20b40 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20b50 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20b60 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20b70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20b80 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20b90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20ba0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20bb0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20bc0 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67  e3_clear_binding
20bd0 73 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  s(IntPtr stmt);.
20be0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
20bf0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20c00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20c10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20c20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20c30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20c40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
20c50 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
20c60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
20c70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
20c80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
20c90 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
20ca0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
20cb0 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d  _blob(IntPtr stm
20cc0 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 42 79  t, int index, By
20cd0 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20  te[] value, int 
20ce0 6e 53 69 7a 65 2c 20 49 6e 74 50 74 72 20 6e 54  nSize, IntPtr nT
20cf0 72 61 6e 73 69 65 6e 74 29 3b 0d 0a 0d 0a 23 69  ransient);....#i
20d00 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20d10 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20d20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20d30 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20d40 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20d50 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20d60 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
20d70 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20d80 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
20d90 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
20da0 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
20db0 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 64  mt, int index, d
20dc0 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 23  ouble value);..#
20dd0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
20de0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20df0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20e00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20e10 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
20e20 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20e30 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
20e40 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
20e50 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20e60 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
20e70 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20e80 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
20e90 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
20ea0 33 5f 62 69 6e 64 5f 69 6e 74 28 49 6e 74 50 74  3_bind_int(IntPt
20eb0 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
20ec0 78 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  x, int value);..
20ed0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
20ee0 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
20ef0 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
20f00 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
20f10 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20 68 61  ; however, it ha
20f20 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20  s the..    //   
20f30 20 20 20 20 63 6f 72 72 65 63 74 20 74 79 70 65      correct type
20f40 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 61   signature for a
20f50 6e 20 75 6e 73 69 67 6e 65 64 20 28 33 32 2d 62  n unsigned (32-b
20f60 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
20f70 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
20f80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20f90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
20fa0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
20fb0 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
20fc0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 22  qlite3_bind_int"
20fd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
20fe0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
20ff0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
21000 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
21010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21020 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
21030 22 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e  "sqlite3_bind_in
21040 74 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t")]..#endif..  
21050 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21060 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
21070 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
21080 5f 62 69 6e 64 5f 75 69 6e 74 28 49 6e 74 50 74  _bind_uint(IntPt
21090 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
210a0 78 2c 20 75 69 6e 74 20 76 61 6c 75 65 29 3b 0d  x, uint value);.
210b0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
210c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
210d0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
210e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
210f0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21100 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21110 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
21120 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21130 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
21140 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
21150 62 69 6e 64 5f 69 6e 74 36 34 28 49 6e 74 50 74  bind_int64(IntPt
21160 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
21170 78 2c 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  x, long value);.
21180 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
21190 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20  /..    // NOTE: 
211a0 54 68 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74  This really just
211b0 20 63 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f   calls "sqlite3_
211c0 62 69 6e 64 5f 69 6e 74 36 34 22 3b 20 68 6f 77  bind_int64"; how
211d0 65 76 65 72 2c 20 69 74 20 68 61 73 20 74 68 65  ever, it has the
211e0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63  ..    //       c
211f0 6f 72 72 65 63 74 20 74 79 70 65 20 73 69 67 6e  orrect type sign
21200 61 74 75 72 65 20 66 6f 72 20 61 6e 20 75 6e 73  ature for an uns
21210 69 67 6e 65 64 20 6c 6f 6e 67 20 28 36 34 2d 62  igned long (64-b
21220 69 74 29 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20  it) integer...  
21230 20 20 2f 2f 0d 0a 23 69 66 20 21 50 4c 41 54 46    //..#if !PLATF
21240 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21250 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21260 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21270 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
21280 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
21290 34 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  4", CallingConve
212a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
212b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
212c0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
212d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
212e0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
212f0 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e 74 36  lite3_bind_uint6
21300 34 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  4(IntPtr stmt, i
21310 6e 74 20 69 6e 64 65 78 2c 20 75 6c 6f 6e 67 20  nt index, ulong 
21320 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
21330 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21340 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21350 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21360 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21370 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21380 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21390 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
213a0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
213b0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
213c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
213d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
213e0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
213f0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  ode sqlite3_bind
21400 5f 6e 75 6c 6c 28 49 6e 74 50 74 72 20 73 74 6d  _null(IntPtr stm
21410 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
21420 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21430 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21440 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21450 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21460 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21470 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21480 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21490 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
214a0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
214b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
214c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
214d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
214e0 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  de sqlite3_bind_
214f0 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
21500 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74  , int index, byt
21510 65 5b 5d 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e  e[] value, int n
21520 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52 65  len, IntPtr pvRe
21530 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20  served);....#if 
21540 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21550 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21560 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21570 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21580 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
215a0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
215b0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
215c0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
215d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
215e0 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
215f0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
21600 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 49 6e  rameter_count(In
21610 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23  tPtr stmt);....#
21620 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21630 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21640 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21650 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21660 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21670 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21680 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
21690 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
216a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
216b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
216c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
216d0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
216e0 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
216f0 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 62 79  (IntPtr stmt, by
21700 74 65 5b 5d 20 73 74 72 4e 61 6d 65 29 3b 0d 0a  te[] strName);..
21710 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21720 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21730 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21740 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21750 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21760 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21770 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21780 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21790 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
217a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
217b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
217c0 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
217d0 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 49 6e 74 50  olumn_count(IntP
217e0 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66  tr stmt);....#if
217f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21800 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21810 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21820 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
21830 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
21840 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
21850 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
21860 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
21870 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
21880 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
21890 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
218a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
218b0 6c 69 74 65 33 5f 73 74 65 70 28 49 6e 74 50 74  lite3_step(IntPt
218c0 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20  r stmt);....#if 
218d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
218e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
218f0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21900 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21910 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21920 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21930 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
21940 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21950 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
21960 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
21970 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
21980 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
21990 61 64 6f 6e 6c 79 28 49 6e 74 50 74 72 20 73 74  adonly(IntPtr st
219a0 6d 74 29 3b 20 2f 2a 20 33 2e 37 2e 34 2b 20 2a  mt); /* 3.7.4+ *
219b0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
219c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
219d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
219e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
219f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21a00 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
21a10 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
21a20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21a30 69 63 20 65 78 74 65 72 6e 20 64 6f 75 62 6c 65  ic extern double
21a40 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
21a50 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 73 74  double(IntPtr st
21a60 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
21a70 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
21a80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21a90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
21aa0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21ab0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
21ac0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
21ad0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
21ae0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
21af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21b00 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
21b10 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
21b20 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
21b30 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
21b40 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  nt(IntPtr stmt, 
21b50 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
21b60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21b70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21b80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
21b90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
21ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
21bb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
21bc0 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  Cdecl)]..    int
21bd0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21be0 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33  ern long sqlite3
21bf0 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 49 6e  _column_int64(In
21c00 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
21c10 6e 64 65 78 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ndex);..#endif..
21c20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21c30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21c40 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21c50 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
21c60 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
21c70 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21c80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
21c90 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
21ca0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
21cb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
21cc0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
21cd0 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
21ce0 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 49 6e  3_column_blob(In
21cf0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
21d00 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
21d10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21d20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21d30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21d40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21d50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21d60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21d70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21d80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21d90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21da0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21db0 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73  tic extern int s
21dc0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
21dd0 74 65 73 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  tes(IntPtr stmt,
21de0 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a   int index);....
21df0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21e00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21e10 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
21e20 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
21e30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21e40 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21e50 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
21e60 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21e70 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21e80 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21e90 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21ea0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c   int sqlite3_col
21eb0 75 6d 6e 5f 62 79 74 65 73 31 36 28 49 6e 74 50  umn_bytes16(IntP
21ec0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
21ed0 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ex);....#if !PLA
21ee0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
21ef0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
21f00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
21f10 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
21f20 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
21f30 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
21f40 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
21f50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21f60 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
21f70 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
21f80 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66 66  c extern TypeAff
21f90 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 63 6f  inity sqlite3_co
21fa0 6c 75 6d 6e 5f 74 79 70 65 28 49 6e 74 50 74 72  lumn_type(IntPtr
21fb0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21fc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21fd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21fe0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21ff0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22000 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22010 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22020 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22030 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22040 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22050 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22060 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22070 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
22080 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 63  orCode sqlite3_c
22090 72 65 61 74 65 5f 63 6f 6c 6c 61 74 69 6f 6e 28  reate_collation(
220a0 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b  IntPtr db, byte[
220b0 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e  ] strName, int n
220c0 54 79 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55  Type, IntPtr pvU
220d0 73 65 72 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61  ser, SQLiteColla
220e0 74 69 6f 6e 20 66 75 6e 63 29 3b 0d 0a 0d 0a 23  tion func);....#
220f0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22100 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22110 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22120 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22130 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22140 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22150 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22160 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22170 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22180 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22190 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
221a0 69 6e 74 20 73 71 6c 69 74 65 33 5f 61 67 67 72  int sqlite3_aggr
221b0 65 67 61 74 65 5f 63 6f 75 6e 74 28 49 6e 74 50  egate_count(IntP
221c0 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
221d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
221e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
221f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22200 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22210 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22220 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22230 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22240 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22250 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22260 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22270 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22280 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
22290 76 61 6c 75 65 5f 62 6c 6f 62 28 49 6e 74 50 74  value_blob(IntPt
222a0 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
222b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
222c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
222d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
222e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
222f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22300 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22310 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22320 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22330 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22340 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22350 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
22360 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65  lite3_value_byte
22370 73 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  s(IntPtr p);....
22380 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22390 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
223a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
223b0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
223c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
223d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
223e0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
223f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22400 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
22410 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
22420 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22430 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
22440 75 65 5f 62 79 74 65 73 31 36 28 49 6e 74 50 74  ue_bytes16(IntPt
22450 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  r p);....#if !PL
22460 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22470 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22480 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22490 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
224a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
224b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
224c0 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
224d0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 64 6f  static extern do
224e0 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  uble sqlite3_val
224f0 75 65 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72  ue_double(IntPtr
22500 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
22510 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22520 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22530 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22540 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22550 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22560 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22570 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
22580 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22590 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
225a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
225b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
225c0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
225d0 75 65 5f 69 6e 74 28 49 6e 74 50 74 72 20 70 29  ue_int(IntPtr p)
225e0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
225f0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22600 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22610 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22620 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22630 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22640 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
22650 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22660 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73  ic extern long s
22670 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
22680 36 34 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23  64(IntPtr p);..#
22690 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
226a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
226b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
226c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
226d0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
226e0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
226f0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22700 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
22710 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22720 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
22730 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22740 69 63 20 65 78 74 65 72 6e 20 54 79 70 65 41 66  ic extern TypeAf
22750 66 69 6e 69 74 79 20 73 71 6c 69 74 65 33 5f 76  finity sqlite3_v
22760 61 6c 75 65 5f 74 79 70 65 28 49 6e 74 50 74 72  alue_type(IntPtr
22770 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41   p);....#if !PLA
22780 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
22790 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
227a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
227b0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
227c0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
227d0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
227e0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
227f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22800 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
22810 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
22820 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71  c extern void sq
22830 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
22840 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
22850 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20  , byte[] value, 
22860 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e 74 50 74  int nSize, IntPt
22870 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a  r pvReserved);..
22880 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
22890 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
228a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
228b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
228c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
228d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
228e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
228f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22900 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
22910 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
22920 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  e(IntPtr context
22930 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
22940 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
22950 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22960 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22970 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22980 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22990 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
229a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
229b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
229c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
229d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
229e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
229f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
22a00 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
22a10 5f 65 72 72 6f 72 28 49 6e 74 50 74 72 20 63 6f  _error(IntPtr co
22a20 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20 73 74  ntext, byte[] st
22a30 72 45 72 72 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b  rErr, int nLen);
22a40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
22a50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
22a60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
22a70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
22a80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22a90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
22aa0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
22ab0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
22ac0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
22ad0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
22ae0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22af0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
22b00 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f 63  3_result_error_c
22b10 6f 64 65 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ode(IntPtr conte
22b20 78 74 2c 20 53 51 4c 69 74 65 45 72 72 6f 72 43  xt, SQLiteErrorC
22b30 6f 64 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ode value);....#
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 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22bb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22bc0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22bd0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22be0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22bf0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
22c00 75 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67  ult_error_toobig
22c10 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29  (IntPtr context)
22c20 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
22c30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
22c40 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
22c50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
22c60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22c70 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
22c80 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
22c90 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
22ca0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
22cb0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
22cc0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
22cd0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
22ce0 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
22cf0 6e 6f 6d 65 6d 28 49 6e 74 50 74 72 20 63 6f 6e  nomem(IntPtr con
22d00 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  text);....#if !P
22d10 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22d20 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
22d30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
22d40 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
22d50 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
22d60 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
22d70 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
22d80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22d90 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
22da0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
22db0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
22dc0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
22dd0 61 6c 75 65 28 49 6e 74 50 74 72 20 63 6f 6e 74  alue(IntPtr cont
22de0 65 78 74 2c 20 49 6e 74 50 74 72 20 76 61 6c 75  ext, IntPtr valu
22df0 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  e);....#if !PLAT
22e00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22e10 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22e20 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22e30 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22e40 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22e50 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22e60 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22e70 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22e80 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22e90 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22ea0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
22eb0 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
22ec0 62 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  blob(IntPtr cont
22ed0 65 78 74 2c 20 69 6e 74 20 6e 4c 65 6e 29 3b 0d  ext, int nLen);.
22ee0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22ef0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22f00 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22f10 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22f20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22f30 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22f40 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22f50 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22f60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22f70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22f80 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22f90 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
22fa0 5f 72 65 73 75 6c 74 5f 69 6e 74 28 49 6e 74 50  _result_int(IntP
22fb0 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
22fc0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  value);....#if !
22fd0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22fe0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22ff0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23000 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
23010 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
23020 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
23030 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  l)]..    interna
23040 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23050 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
23060 75 6c 74 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  ult_int64(IntPtr
23070 20 63 6f 6e 74 65 78 74 2c 20 6c 6f 6e 67 20 76   context, long v
23080 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
23090 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
230a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
230b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
230c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
230d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
230e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
230f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23100 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23110 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23120 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
23130 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
23140 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  rn void sqlite3_
23150 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 49 6e 74 50  result_null(IntP
23160 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  tr context);....
23170 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23180 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23190 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
231a0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
231b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
231c0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
231d0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
231e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
231f0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23200 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23210 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23220 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65   void sqlite3_re
23230 73 75 6c 74 5f 74 65 78 74 28 49 6e 74 50 74 72  sult_text(IntPtr
23240 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
23250 20 76 61 6c 75 65 2c 20 69 6e 74 20 6e 4c 65 6e   value, int nLen
23260 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
23270 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
23280 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23290 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
232a0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
232b0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
232c0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
232d0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
232e0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
232f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23300 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23310 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23320 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
23330 20 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61   sqlite3_aggrega
23340 74 65 5f 63 6f 6e 74 65 78 74 28 49 6e 74 50 74  te_context(IntPt
23350 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20 6e  r context, int n
23360 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69 66 20 21  Bytes);....#if !
23370 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23380 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23390 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
233a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
233b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
233c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
233d0 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
233e0 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
233f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23400 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23410 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
23420 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
23430 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
23440 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
23450 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
23460 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  e sqlite3_bind_t
23470 65 78 74 31 36 28 49 6e 74 50 74 72 20 73 74 6d  ext16(IntPtr stm
23480 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 73 74  t, int index, st
23490 72 69 6e 67 20 76 61 6c 75 65 2c 20 69 6e 74 20  ring value, int 
234a0 6e 6c 65 6e 2c 20 49 6e 74 50 74 72 20 70 76 52  nlen, IntPtr pvR
234b0 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a 23 69 66  eserved);....#if
234c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
234d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
234e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
234f0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
23500 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
23510 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
23520 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  ecl, CharSet = C
23530 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
23540 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
23550 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23560 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68  LL, CharSet = Ch
23570 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d  arSet.Unicode)].
23580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23590 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
235a0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
235b0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 31 36 28  _result_error16(
235c0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
235d0 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
235e0 69 6e 74 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69  int nLen);....#i
235f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
23600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
23610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
23620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
23630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
23640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23650 64 65 63 6c 2c 20 43 68 61 72 53 65 74 20 3d 20  decl, CharSet = 
23660 43 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29  CharSet.Unicode)
23670 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23680 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23690 44 4c 4c 2c 20 43 68 61 72 53 65 74 20 3d 20 43  DLL, CharSet = C
236a0 68 61 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d  harSet.Unicode)]
236b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
236c0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
236d0 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
236e0 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
236f0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
23700 73 74 72 69 6e 67 20 73 74 72 4e 61 6d 65 2c 20  string strName, 
23710 69 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72  int nLen, IntPtr
23720 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d   pvReserved);...
23730 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
23740 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
23750 43 4c 55 44 45 5f 53 45 45 0d 0a 23 69 66 20 21  CLUDE_SEE..#if !
23760 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23770 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
23780 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23790 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
237a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
237b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
237c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
237d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
237e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
237f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23800 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
23810 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
23820 74 65 33 5f 6b 65 79 28 49 6e 74 50 74 72 20 64  te3_key(IntPtr d
23830 62 2c 20 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69  b, byte[] key, i
23840 6e 74 20 6b 65 79 6c 65 6e 29 3b 0d 0a 0d 0a 23  nt keylen);....#
23850 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23860 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23870 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23880 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23890 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
238a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
238b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
238c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
238d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
238e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
238f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23900 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
23910 73 71 6c 69 74 65 33 5f 72 65 6b 65 79 28 49 6e  sqlite3_rekey(In
23920 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
23930 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e 29  key, int keylen)
23940 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
23950 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
23960 5f 5a 49 50 56 46 53 0d 0a 23 69 66 20 21 50 4c  _ZIPVFS..#if !PL
23970 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23980 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23990 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
239a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
239b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
239c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
239d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
239e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
239f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23a00 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23a10 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 7a  ic extern void z
23a20 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29 3b 0d  ipvfsInit_v2();.
23a30 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23a40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23a50 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23a60 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23a70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23a80 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23a90 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23aa0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23ab0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23ac0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23ad0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23ae0 65 72 6e 20 76 6f 69 64 20 7a 69 70 76 66 73 49  ern void zipvfsI
23af0 6e 69 74 5f 76 33 28 69 6e 74 20 72 65 67 44 66  nit_v3(int regDf
23b00 6c 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  lt);..#endif....
23b10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23b20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23b30 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23b40 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23b50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23b60 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23b70 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23b80 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23b90 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
23ba0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
23bb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
23bc0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72   void sqlite3_pr
23bd0 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 49  ogress_handler(I
23be0 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20 6f 70  ntPtr db, int op
23bf0 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  s, SQLiteProgres
23c00 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20  sCallback func, 
23c10 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d  IntPtr pvUser);.
23c20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
23c30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
23c40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
23c50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
23c60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
23c70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
23c80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
23c90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
23ca0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
23cb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
23cc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
23cd0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
23ce0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
23cf0 72 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  r(IntPtr db, SQL
23d00 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43 61 6c  iteAuthorizerCal
23d10 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50  lback func, IntP
23d20 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23  tr pvUser);....#
23d30 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23d40 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23d50 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23d60 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
23d70 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
23d80 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
23d90 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
23da0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23db0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
23dc0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
23dd0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
23de0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 75  IntPtr sqlite3_u
23df0 70 64 61 74 65 5f 68 6f 6f 6b 28 49 6e 74 50 74  pdate_hook(IntPt
23e00 72 20 64 62 2c 20 53 51 4c 69 74 65 55 70 64 61  r db, SQLiteUpda
23e10 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
23e20 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29 3b   IntPtr pvUser);
23e30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23e40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23e50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23e60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
23e70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23e80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
23e90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
23ea0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
23eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
23ec0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
23ed0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
23ee0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
23ef0 74 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 28  te3_commit_hook(
23f00 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
23f10 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20  eCommitCallback 
23f20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55  func, IntPtr pvU
23f30 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ser);....#if !PL
23f40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23f50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23f60 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23f70 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23f80 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23f90 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
23fa0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
23fb0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23fc0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
23fd0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
23fe0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
23ff0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 49   sqlite3_trace(I
24000 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65  ntPtr db, SQLite
24010 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
24020 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
24030 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  r);....#if !PLAT
24040 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24050 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24060 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24070 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24080 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24090 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
240a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
240b0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
240c0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
240d0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
240e0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
240f0 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
24100 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
24110 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73 6b  eTraceFlags mask
24120 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c  , SQLiteTraceCal
24130 6c 62 61 63 6b 32 20 66 75 6e 63 2c 20 49 6e 74  lback2 func, Int
24140 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
24150 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71 6c      // Since sql
24160 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 74 61  ite3_config() ta
24170 6b 65 73 20 61 20 76 61 72 69 61 62 6c 65 20 61  kes a variable a
24180 72 67 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65  rgument list, we
24190 20 68 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61   have to overloa
241a0 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a  d declarations..
241b0 20 20 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70      // for all p
241c0 6f 73 73 69 62 6c 65 20 63 61 6c 6c 73 20 74 68  ossible calls th
241d0 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 75 73  at we want to us
241e0 65 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  e...#if !PLATFOR
241f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24200 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24210 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
24220 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
24230 69 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61  ite3_config", Ca
24240 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24250 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24260 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24270 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24280 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
24290 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
242a0 69 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a  ite3_config")]..
242b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
242c0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
242d0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
242e0 64 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  de sqlite3_confi
242f0 67 5f 6e 6f 6e 65 28 53 51 4c 69 74 65 43 6f 6e  g_none(SQLiteCon
24300 66 69 67 4f 70 73 45 6e 75 6d 20 6f 70 29 3b 0d  figOpsEnum op);.
24310 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24320 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24330 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24340 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
24350 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
24360 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
24370 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24380 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24390 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
243a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
243b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
243c0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
243d0 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
243e0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
243f0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
24400 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
24410 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
24420 5f 69 6e 74 28 53 51 4c 69 74 65 43 6f 6e 66 69  _int(SQLiteConfi
24430 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 69 6e 74  gOpsEnum op, int
24440 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20   value);....#if 
24450 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24460 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24470 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24480 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
24490 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
244a0 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
244b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
244c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
244d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
244e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
244f0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
24500 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e  t = "sqlite3_con
24510 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
24520 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24530 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24540 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24550 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 67 28 53 51  e3_config_log(SQ
24560 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
24570 6d 20 6f 70 2c 20 53 51 4c 69 74 65 4c 6f 67 43  m op, SQLiteLogC
24580 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e  allback func, In
24590 74 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d  tPtr pvUser);...
245a0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
245b0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
245c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
245d0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72  SQLITE_DLL, Entr
245e0 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65  yPoint = "sqlite
245f0 33 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61  3_db_config", Ca
24600 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24610 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24620 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24630 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24640 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45  rt(SQLITE_DLL, E
24650 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c  ntryPoint = "sql
24660 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29  ite3_db_config")
24670 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24680 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24690 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
246a0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62  rCode sqlite3_db
246b0 5f 63 6f 6e 66 69 67 5f 63 68 61 72 70 74 72 28  _config_charptr(
246c0 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69 74  IntPtr db, SQLit
246d0 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d  eConfigDbOpsEnum
246e0 20 6f 70 2c 20 49 6e 74 50 74 72 20 63 68 61 72   op, IntPtr char
246f0 50 74 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Ptr);....#if !PL
24700 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
24710 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
24720 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24730 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
24740 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
24750 66 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  fig", CallingCon
24760 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24770 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24780 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24790 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
247a0 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e  E_DLL, EntryPoin
247b0 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f  t = "sqlite3_db_
247c0 63 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69  config")]..#endi
247d0 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
247e0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
247f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
24800 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f  lite3_db_config_
24810 69 6e 74 5f 72 65 66 69 6e 74 28 49 6e 74 50 74  int_refint(IntPt
24820 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f 6e 66  r db, SQLiteConf
24830 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70 2c 20  igDbOpsEnum op, 
24840 69 6e 74 20 76 61 6c 75 65 2c 20 72 65 66 20 69  int value, ref i
24850 6e 74 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 23  nt result);....#
24860 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
24870 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
24880 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24890 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
248a0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
248b0 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c 6c  db_config", Call
248c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
248d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
248e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
248f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24900 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
24910 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
24920 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d 0d  e3_db_config")].
24930 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24940 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24950 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
24960 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  ode sqlite3_db_c
24970 6f 6e 66 69 67 5f 69 6e 74 70 74 72 5f 74 77 6f  onfig_intptr_two
24980 5f 69 6e 74 73 28 49 6e 74 50 74 72 20 64 62 2c  _ints(IntPtr db,
24990 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
249a0 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50 74  psEnum op, IntPt
249b0 72 20 70 74 72 2c 20 69 6e 74 20 69 6e 74 30 2c  r ptr, int int0,
249c0 20 69 6e 74 20 69 6e 74 31 29 3b 0d 0a 0d 0a 23   int int1);....#
249d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
249e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
249f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24a00 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
24a10 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
24a20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
24a30 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
24a40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24a50 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
24a60 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
24a70 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
24a80 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
24a90 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74 75  sqlite3_db_statu
24aa0 73 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  s(IntPtr db, SQL
24ab0 69 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d  iteStatusOpsEnum
24ac0 20 6f 70 2c 20 72 65 66 20 69 6e 74 20 63 75 72   op, ref int cur
24ad0 72 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68 69  rent, ref int hi
24ae0 67 68 77 61 74 65 72 2c 20 69 6e 74 20 72 65 73  ghwater, int res
24af0 65 74 46 6c 61 67 29 3b 0d 0a 0d 0a 23 69 66 20  etFlag);....#if 
24b00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24b10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24b20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24b30 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24b40 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24b50 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24b60 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24b70 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24b80 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24b90 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24ba0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
24bb0 50 74 72 20 73 71 6c 69 74 65 33 5f 72 6f 6c 6c  Ptr sqlite3_roll
24bc0 62 61 63 6b 5f 68 6f 6f 6b 28 49 6e 74 50 74 72  back_hook(IntPtr
24bd0 20 64 62 2c 20 53 51 4c 69 74 65 52 6f 6c 6c 62   db, SQLiteRollb
24be0 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
24bf0 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72 29  , IntPtr pvUser)
24c00 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
24c10 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
24c20 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
24c30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
24c40 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24c50 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
24c60 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
24c70 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
24c80 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
24c90 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
24ca0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
24cb0 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c  xtern IntPtr sql
24cc0 69 74 65 33 5f 64 62 5f 68 61 6e 64 6c 65 28 49  ite3_db_handle(I
24cd0 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
24ce0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24cf0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24d00 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24d10 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24d20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24d30 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24d40 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24d50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24d60 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24d70 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24d80 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24d90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24da0 20 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 6c 65   sqlite3_db_rele
24db0 61 73 65 5f 6d 65 6d 6f 72 79 28 49 6e 74 50 74  ase_memory(IntPt
24dc0 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  r db);....#if !P
24dd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
24de0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
24df0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24e00 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
24e10 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24e20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24e30 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
24e40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24e50 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
24e60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24e70 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
24e80 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
24e90 65 6e 61 6d 65 28 49 6e 74 50 74 72 20 64 62 2c  ename(IntPtr db,
24ea0 20 49 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b   IntPtr dbName);
24eb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
24ec0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
24ed0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
24ee0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
24ef0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24f00 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
24f10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
24f20 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
24f30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
24f40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24f50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24f60 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
24f70 5f 64 62 5f 72 65 61 64 6f 6e 6c 79 28 49 6e 74  _db_readonly(Int
24f80 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
24f90 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
24fa0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24fb0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24fc0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24fd0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
24fe0 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 66   = "sqlite3_db_f
24ff0 69 6c 65 6e 61 6d 65 22 2c 20 43 61 6c 6c 69 6e  ilename", Callin
25000 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25010 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25020 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25030 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25040 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
25050 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
25060 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 29 5d 0d  _db_filename")].
25070 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25080 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25090 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
250a0 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 5f 62  e3_db_filename_b
250b0 79 74 65 73 28 49 6e 74 50 74 72 20 64 62 2c 20  ytes(IntPtr db, 
250c0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 29 3b 0d  byte[] dbName);.
250d0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
250e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
250f0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
25100 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
25110 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
25120 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
25130 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
25140 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
25150 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
25160 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
25170 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
25180 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
25190 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 49 6e 74  e3_next_stmt(Int
251a0 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 73  Ptr db, IntPtr s
251b0 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tmt);....#if !PL
251c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
251d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
251e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
251f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
25200 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25210 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25220 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
25230 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25240 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
25250 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25260 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
25270 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25280 33 5f 65 78 65 63 28 49 6e 74 50 74 72 20 64 62  3_exec(IntPtr db
25290 2c 20 62 79 74 65 5b 5d 20 73 74 72 53 71 6c 2c  , byte[] strSql,
252a0 20 49 6e 74 50 74 72 20 70 76 43 61 6c 6c 62 61   IntPtr pvCallba
252b0 63 6b 2c 20 49 6e 74 50 74 72 20 70 76 50 61 72  ck, IntPtr pvPar
252c0 61 6d 2c 20 72 65 66 20 49 6e 74 50 74 72 20 65  am, ref IntPtr e
252d0 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  rrMsg);....#if !
252e0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
252f0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25300 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25310 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25320 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25330 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25340 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25350 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25360 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25370 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25380 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
25390 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f  sqlite3_release_
253a0 6d 65 6d 6f 72 79 28 69 6e 74 20 6e 42 79 74 65  memory(int nByte
253b0 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
253c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
253d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
253e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
253f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
25400 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
25410 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
25420 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
25430 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25440 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
25450 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25460 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
25470 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d  te3_get_autocomm
25480 69 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  it(IntPtr db);..
25490 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
254a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
254b0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
254c0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
254d0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
254e0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
254f0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25500 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25510 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25520 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25530 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25540 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
25550 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
25560 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
25570 28 49 6e 74 50 74 72 20 64 62 2c 20 69 6e 74 20  (IntPtr db, int 
25580 6f 6e 6f 66 66 29 3b 0d 0a 0d 0a 23 69 66 20 21  onoff);....#if !
25590 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
255a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
255b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
255c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
255d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
255e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
255f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25600 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25610 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25620 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25630 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
25640 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
25650 74 65 33 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  te3_errcode(IntP
25660 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
25670 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25680 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25690 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
256a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
256b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
256c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
256d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
256e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
256f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25700 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25710 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
25720 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
25730 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
25740 63 6f 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b  code(IntPtr db);
25750 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25760 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25770 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
25780 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
25790 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
257a0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
257b0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
257c0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
257d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
257e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
257f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
25800 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
25810 74 65 33 5f 65 72 72 73 74 72 28 53 51 4c 69 74  te3_errstr(SQLit
25820 65 45 72 72 6f 72 43 6f 64 65 20 72 63 29 3b 20  eErrorCode rc); 
25830 2f 2a 20 33 2e 37 2e 31 35 2b 20 2a 2f 0d 0a 0d  /* 3.7.15+ */...
25840 0a 20 20 20 20 2f 2f 20 53 69 6e 63 65 20 73 71  .    // Since sq
25850 6c 69 74 65 33 5f 6c 6f 67 28 29 20 74 61 6b 65  lite3_log() take
25860 73 20 61 20 76 61 72 69 61 62 6c 65 20 61 72 67  s a variable arg
25870 75 6d 65 6e 74 20 6c 69 73 74 2c 20 77 65 20 68  ument list, we h
25880 61 76 65 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20  ave to overload 
25890 64 65 63 6c 61 72 61 74 69 6f 6e 73 0d 0a 20 20  declarations..  
258a0 20 20 2f 2f 20 66 6f 72 20 61 6c 6c 20 70 6f 73    // for all pos
258b0 73 69 62 6c 65 20 63 61 6c 6c 73 2e 20 20 46 6f  sible calls.  Fo
258c0 72 20 6e 6f 77 2c 20 77 65 20 61 72 65 20 6f 6e  r now, we are on
258d0 6c 79 20 65 78 70 6f 73 69 6e 67 20 61 20 73 69  ly exposing a si
258e0 6e 67 6c 65 20 73 74 72 69 6e 67 2c 20 61 6e 64  ngle string, and
258f0 0d 0a 20 20 20 20 2f 2f 20 64 65 70 65 6e 64 20  ..    // depend 
25900 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 20 74 6f  on the caller to
25910 20 66 6f 72 6d 61 74 20 74 68 65 20 73 74 72 69   format the stri
25920 6e 67 2e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ng...#if !PLATFO
25930 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25940 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25950 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25960 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25970 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25980 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25990 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
259a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
259b0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
259c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
259d0 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
259e0 65 33 5f 6c 6f 67 28 53 51 4c 69 74 65 45 72 72  e3_log(SQLiteErr
259f0 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64 65 2c  orCode iErrCode,
25a00 20 62 79 74 65 5b 5d 20 7a 46 6f 72 6d 61 74 29   byte[] zFormat)
25a10 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25a20 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25a30 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25a40 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25a50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25a60 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25a70 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25a80 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25a90 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25aa0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25ab0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25ac0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25ad0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 66 69  rCode sqlite3_fi
25ae0 6c 65 5f 63 6f 6e 74 72 6f 6c 28 49 6e 74 50 74  le_control(IntPt
25af0 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 7a 44 62  r db, byte[] zDb
25b00 4e 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e  Name, int op, In
25b10 74 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 23  tPtr pArg);....#
25b20 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25b30 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25b40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25b50 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
25b60 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25b70 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25b80 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25b90 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25ba0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25bb0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25bc0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25bd0 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 62  IntPtr sqlite3_b
25be0 61 63 6b 75 70 5f 69 6e 69 74 28 49 6e 74 50 74  ackup_init(IntPt
25bf0 72 20 64 65 73 74 44 62 2c 20 62 79 74 65 5b 5d  r destDb, byte[]
25c00 20 7a 44 65 73 74 4e 61 6d 65 2c 20 49 6e 74 50   zDestName, IntP
25c10 74 72 20 73 6f 75 72 63 65 44 62 2c 20 62 79 74  tr sourceDb, byt
25c20 65 5b 5d 20 7a 53 6f 75 72 63 65 4e 61 6d 65 29  e[] zSourceName)
25c30 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
25c40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
25c50 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
25c60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
25c70 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
25c80 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
25c90 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
25ca0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
25cb0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
25cc0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
25cd0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
25ce0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
25cf0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61  rCode sqlite3_ba
25d00 63 6b 75 70 5f 73 74 65 70 28 49 6e 74 50 74 72  ckup_step(IntPtr
25d10 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e 50 61   backup, int nPa
25d20 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ge);....#if !PLA
25d30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25d40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
25d50 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
25d60 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
25d70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
25d80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
25d90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
25da0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25db0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
25dc0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
25dd0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
25de0 69 74 65 33 5f 62 61 63 6b 75 70 5f 72 65 6d 61  ite3_backup_rema
25df0 69 6e 69 6e 67 28 49 6e 74 50 74 72 20 62 61 63  ining(IntPtr bac
25e00 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  kup);....#if !PL
25e10 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25e20 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
25e30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25e40 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
25e50 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25e60 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
25e70 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
25e80 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25e90 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
25ea0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
25eb0 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
25ec0 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 70 61 67  lite3_backup_pag
25ed0 65 63 6f 75 6e 74 28 49 6e 74 50 74 72 20 62 61  ecount(IntPtr ba
25ee0 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ckup);....#if !P
25ef0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25f00 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
25f10 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
25f20 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
25f30 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
25f40 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
25f50 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
25f60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25f70 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25f80 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25f90 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
25fa0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
25fb0 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 49 6e  e3_blob_close(In
25fc0 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
25fd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25fe0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25ff0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26000 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26010 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
26020 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
26030 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
26040 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26050 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
26060 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
26070 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26080 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  int sqlite3_blob
26090 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20 62 6c  _bytes(IntPtr bl
260a0 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ob);....#if !PLA
260b0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
260c0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
260d0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
260e0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
260f0 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26100 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26110 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26120 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26130 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26140 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26150 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
26160 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
26170 5f 62 6c 6f 62 5f 6f 70 65 6e 28 49 6e 74 50 74  _blob_open(IntPt
26180 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e  r db, byte[] dbN
26190 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ame, byte[] tblN
261a0 61 6d 65 2c 20 62 79 74 65 5b 5d 20 63 6f 6c 4e  ame, byte[] colN
261b0 61 6d 65 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 2c  ame, long rowId,
261c0 20 69 6e 74 20 66 6c 61 67 73 2c 20 72 65 66 20   int flags, ref 
261d0 49 6e 74 50 74 72 20 70 74 72 42 6c 6f 62 29 3b  IntPtr ptrBlob);
261e0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
261f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26200 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26210 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26220 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26230 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
26240 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26250 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
26260 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
26270 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
26280 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
26290 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
262a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f  Code sqlite3_blo
262b0 62 5f 72 65 61 64 28 49 6e 74 50 74 72 20 62 6c  b_read(IntPtr bl
262c0 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
262d0 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
262e0 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
262f0 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
26300 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
26310 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26320 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26340 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
26350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
26360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
26380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26390 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
263a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
263b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
263c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
263d0 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 72  e sqlite3_blob_r
263e0 65 6f 70 65 6e 28 49 6e 74 50 74 72 20 62 6c 6f  eopen(IntPtr blo
263f0 62 2c 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  b, long rowId);.
26400 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26410 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26420 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26430 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26440 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26450 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26460 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26470 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26480 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26490 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
264a0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
264b0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
264c0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  ode sqlite3_blob
264d0 5f 77 72 69 74 65 28 49 6e 74 50 74 72 20 62 6c  _write(IntPtr bl
264e0 6f 62 2c 20 5b 4d 61 72 73 68 61 6c 41 73 28 55  ob, [MarshalAs(U
264f0 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 4c 50 41  nmanagedType.LPA
26500 72 72 61 79 29 5d 20 62 79 74 65 5b 5d 20 62 75  rray)] byte[] bu
26510 66 66 65 72 2c 20 69 6e 74 20 63 6f 75 6e 74 2c  ffer, int count,
26520 20 69 6e 74 20 6f 66 66 73 65 74 29 3b 0d 0a 0d   int offset);...
26530 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
26540 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
26550 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26560 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
26570 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
26580 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26590 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
265a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
265b0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
265c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
265d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
265e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
265f0 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  e sqlite3_declar
26600 65 5f 76 74 61 62 28 49 6e 74 50 74 72 20 64 62  e_vtab(IntPtr db
26610 2c 20 49 6e 74 50 74 72 20 7a 53 51 4c 29 3b 0d  , IntPtr zSQL);.
26620 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
26630 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26640 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26650 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26660 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26670 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26680 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26690 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
266a0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
266b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
266c0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
266d0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
266e0 65 33 5f 6d 70 72 69 6e 74 66 28 49 6e 74 50 74  e3_mprintf(IntPt
266f0 72 20 66 6f 72 6d 61 74 2c 20 5f 5f 61 72 67 6c  r format, __argl
26700 69 73 74 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72  ist);..    #endr
26710 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
26720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26760 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
26770 2f 2f 20 53 51 4c 69 74 65 20 41 50 49 20 63 61  // SQLite API ca
26780 6c 6c 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  lls that are pro
26790 76 69 64 65 64 20 62 79 20 22 77 65 6c 6c 2d 6b  vided by "well-k
267a0 6e 6f 77 6e 22 20 65 78 74 65 6e 73 69 6f 6e 73  nown" extensions
267b0 20 74 68 61 74 20 6d 61 79 20 62 65 20 73 74 61   that may be sta
267c0 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 20  tically..    // 
267d0 6c 69 6e 6b 65 64 20 77 69 74 68 20 74 68 65 20  linked with the 
267e0 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69  SQLite core nati
267f0 76 65 20 6c 69 62 72 61 72 79 20 63 75 72 72 65  ve library curre
26800 6e 74 6c 79 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ntly in use...  
26810 20 20 23 72 65 67 69 6f 6e 20 65 78 74 65 6e 73    #region extens
26820 69 6f 6e 20 73 71 6c 69 74 65 20 61 70 69 20 63  ion sqlite api c
26830 61 6c 6c 73 0d 0a 20 20 20 20 23 72 65 67 69 6f  alls..    #regio
26840 6e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  n virtual table.
26850 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
26860 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
26870 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26880 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26890 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
268a0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
268b0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
268c0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
268d0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
268e0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
268f0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
26900 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
26910 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
26920 50 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61  Ptr sqlite3_crea
26930 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
26940 64 75 6c 65 28 49 6e 74 50 74 72 20 64 62 2c 20  dule(IntPtr db, 
26950 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 72 65 66  IntPtr name, ref
26960 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
26970 6d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 20 70  module, IntPtr p
26980 43 6c 69 65 6e 74 44 61 74 61 2c 20 78 44 65 73  ClientData, xDes
26990 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74  troyModule xDest
269a0 72 6f 79 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  roy);....#if !PL
269b0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
269c0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
269d0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
269e0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
269f0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
26a00 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26a10 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
26a20 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26a30 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
26a40 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
26a50 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
26a60 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
26a70 6f 64 75 6c 65 28 49 6e 74 50 74 72 20 70 4d 6f  odule(IntPtr pMo
26a80 64 75 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  dule);..#endif..
26a90 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
26aa0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
26ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26af0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
26b00 20 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73 69   session extensi
26b10 6f 6e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  on..#if INTEROP_
26b20 53 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f  SESSION_EXTENSIO
26b30 4e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  N..#if !PLATFORM
26b40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26b50 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
26b60 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
26b70 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
26b80 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
26b90 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
26ba0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 53   delegate int xS
26bb0 65 73 73 69 6f 6e 46 69 6c 74 65 72 28 49 6e 74  essionFilter(Int
26bc0 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74  Ptr context, Int
26bd0 50 74 72 20 70 54 62 6c 4e 61 6d 65 29 3b 0d 0a  Ptr pTblName);..
26be0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
26bf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
26c00 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
26c10 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
26c20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
26c30 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
26c40 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
26c50 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 43  delegate SQLiteC
26c60 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74  hangeSetConflict
26c70 52 65 73 75 6c 74 20 78 53 65 73 73 69 6f 6e 43  Result xSessionC
26c80 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 63  onflict(IntPtr c
26c90 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74 65 43 68  ontext, SQLiteCh
26ca0 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54  angeSetConflictT
26cb0 79 70 65 20 74 79 70 65 2c 20 49 6e 74 50 74 72  ype type, IntPtr
26cc0 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a 23   iterator);....#
26cd0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26ce0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26cf0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
26d00 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
26d10 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
26d20 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
26d30 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c      internal del
26d40 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
26d50 72 43 6f 64 65 20 78 53 65 73 73 69 6f 6e 49 6e  rCode xSessionIn
26d60 70 75 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  put(IntPtr conte
26d70 78 74 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61  xt, IntPtr pData
26d80 2c 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 29  , ref int nData)
26d90 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
26da0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
26db0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
26dc0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
26dd0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
26de0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
26df0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26e00 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69  al delegate SQLi
26e10 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65 73  teErrorCode xSes
26e20 73 69 6f 6e 4f 75 74 70 75 74 28 49 6e 74 50 74  sionOutput(IntPt
26e30 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
26e40 72 20 70 44 61 74 61 2c 20 69 6e 74 20 6e 44 61  r pData, int nDa
26e50 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ta);....    ////
26e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ea0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
26eb0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
26ec0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
26ed0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26ee0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
26ef0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
26f00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26f10 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26f20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26f30 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26f40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26f50 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26f60 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26f70 74 65 33 73 65 73 73 69 6f 6e 5f 63 72 65 61 74  te3session_creat
26f80 65 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  e(IntPtr db, byt
26f90 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 72 65 66 20  e[] dbName, ref 
26fa0 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
26fb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
26fc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
26fd0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
26fe0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
26ff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27000 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27010 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27020 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27030 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27040 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27050 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27060 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
27070 33 73 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28  3session_delete(
27080 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
27090 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
270a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
270b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
270c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
270d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
270e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
270f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27100 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27110 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27120 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27130 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27140 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
27150 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 49  session_enable(I
27160 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 69  ntPtr session, i
27170 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d 0a 23  nt enable);....#
27180 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27190 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
271a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
271b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
271c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
271d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
271e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
271f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27200 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27210 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27220 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27230 69 6e 74 20 73 71 6c 69 74 65 33 73 65 73 73 69  int sqlite3sessi
27240 6f 6e 5f 69 6e 64 69 72 65 63 74 28 49 6e 74 50  on_indirect(IntP
27250 74 72 20 73 65 73 73 69 6f 6e 2c 20 69 6e 74 20  tr session, int 
27260 69 6e 64 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69  indirect);....#i
27270 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27280 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27290 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
272a0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
272b0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
272c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
272d0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
272e0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
272f0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
27300 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27310 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
27320 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
27330 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 61 74  qlite3session_at
27340 74 61 63 68 28 49 6e 74 50 74 72 20 73 65 73 73  tach(IntPtr sess
27350 69 6f 6e 2c 20 62 79 74 65 5b 5d 20 74 62 6c 4e  ion, byte[] tblN
27360 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
27370 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
27380 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
27390 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
273a0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
273b0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
273c0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
273d0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
273e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
273f0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
27400 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
27410 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
27420 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 74 61  qlite3session_ta
27430 62 6c 65 5f 66 69 6c 74 65 72 28 49 6e 74 50 74  ble_filter(IntPt
27440 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
27450 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65  ionFilter xFilte
27460 72 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  r, IntPtr contex
27470 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
27480 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27490 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
274a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
274b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
274c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
274d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
274e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
274f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27500 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27510 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27520 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27530 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73  rorCode sqlite3s
27540 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74  ession_changeset
27550 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c  (IntPtr session,
27560 20 72 65 66 20 69 6e 74 20 6e 43 68 61 6e 67 65   ref int nChange
27570 53 65 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  Set, ref IntPtr 
27580 70 43 68 61 6e 67 65 53 65 74 29 3b 0a 0d 0a 23  pChangeSet);...#
27590 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
275a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
275b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
275c0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
275d0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
275e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
275f0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27600 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27610 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27620 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27630 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27640 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27650 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 64  sqlite3session_d
27660 69 66 66 28 49 6e 74 50 74 72 20 73 65 73 73 69  iff(IntPtr sessi
27670 6f 6e 2c 20 62 79 74 65 5b 5d 20 66 72 6f 6d 44  on, byte[] fromD
27680 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20 74 62  bName, byte[] tb
27690 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74 50 74  lName, ref IntPt
276a0 72 20 65 72 72 4d 73 67 29 3b 0d 0a 0d 0a 23 69  r errMsg);....#i
276b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
276c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
276d0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
276e0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
276f0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
27700 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27710 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
27720 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27730 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
27740 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27750 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
27760 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
27770 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61  qlite3session_pa
27780 74 63 68 73 65 74 28 49 6e 74 50 74 72 20 73 65  tchset(IntPtr se
27790 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20 6e  ssion, ref int n
277a0 50 61 74 63 68 53 65 74 2c 20 72 65 66 20 49 6e  PatchSet, ref In
277b0 74 50 74 72 20 70 50 61 74 63 68 53 65 74 29 3b  tPtr pPatchSet);
277c0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
277d0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
277e0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
277f0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27800 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27810 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27820 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27830 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27840 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27850 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27860 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27870 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
27880 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74 79 28  session_isempty(
27890 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 29 3b  IntPtr session);
278a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
278b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
278c0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
278d0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
278e0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
278f0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27900 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27910 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27920 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27930 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27940 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27950 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
27960 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
27970 67 65 73 65 74 5f 73 74 61 72 74 28 72 65 66 20  geset_start(ref 
27980 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
27990 20 69 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c   int nChangeSet,
279a0 20 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53   IntPtr pChangeS
279b0 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
279c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
279d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
279e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
279f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
27a00 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
27a10 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
27a20 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
27a30 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
27a40 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
27a50 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
27a60 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
27a70 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
27a80 63 68 61 6e 67 65 73 65 74 5f 6e 65 78 74 28 49  changeset_next(I
27a90 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b  ntPtr iterator);
27aa0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
27ab0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
27ac0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
27ad0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
27ae0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27af0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
27b00 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
27b10 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
27b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
27b30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
27b40 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
27b50 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
27b60 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
27b70 67 65 73 65 74 5f 6f 70 28 49 6e 74 50 74 72 20  geset_op(IntPtr 
27b80 69 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e  iterator, ref In
27b90 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 2c 20 72  tPtr pTblName, r
27ba0 65 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c  ef int nColumns,
27bb0 20 72 65 66 20 53 51 4c 69 74 65 41 75 74 68 6f   ref SQLiteAutho
27bc0 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 20  rizerActionCode 
27bd0 6f 70 2c 20 72 65 66 20 69 6e 74 20 62 49 6e 64  op, ref int bInd
27be0 69 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  irect);....#if !
27bf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27c00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27c10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27c20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27c30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27c40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27c50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27c60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27c70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27c80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27c90 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27ca0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27cb0 74 65 33 63 68 61 6e 67 65 73 65 74 5f 70 6b 28  te3changeset_pk(
27cc0 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
27cd0 20 72 65 66 20 49 6e 74 50 74 72 20 70 50 72 69   ref IntPtr pPri
27ce0 6d 61 72 79 4b 65 79 73 2c 20 72 65 66 20 69 6e  maryKeys, ref in
27cf0 74 20 6e 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a  t nColumns);....
27d00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27d10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27d20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27d30 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27d40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27d50 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27d60 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27d70 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27d80 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
27d90 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
27da0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
27db0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
27dc0 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65   sqlite3changese
27dd0 74 5f 6f 6c 64 28 49 6e 74 50 74 72 20 69 74 65  t_old(IntPtr ite
27de0 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d  rator, int colum
27df0 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50  nIndex, ref IntP
27e00 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23  tr pValue);....#
27e10 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27e20 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27e30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27e40 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27e50 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27e60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27e70 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27e80 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27e90 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27ea0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27eb0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27ec0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27ed0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
27ee0 5f 6e 65 77 28 49 6e 74 50 74 72 20 69 74 65 72  _new(IntPtr iter
27ef0 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e  ator, int column
27f00 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74  Index, ref IntPt
27f10 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  r pValue);....#i
27f20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27f30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27f40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
27f50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
27f60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
27f70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27f80 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
27f90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27fa0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
27fb0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
27fc0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
27fd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
27fe0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
27ff0 63 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20  conflict(IntPtr 
28000 69 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f  iterator, int co
28010 6c 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49  lumnIndex, ref I
28020 6e 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a  ntPtr pValue);..
28030 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
28040 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
28050 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
28060 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
28070 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
28080 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
28090 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
280a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
280b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
280c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
280d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
280e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
280f0 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
28100 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74 73  set_fk_conflicts
28110 28 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72  (IntPtr iterator
28120 2c 20 72 65 66 20 69 6e 74 20 63 6f 6e 66 6c 69  , ref int confli
28130 63 74 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  cts);....#if !PL
28140 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28150 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28160 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28170 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28180 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28190 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
281a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
281b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
281c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
281d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
281e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
281f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
28200 33 63 68 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c  3changeset_final
28210 69 7a 65 28 49 6e 74 50 74 72 20 69 74 65 72 61  ize(IntPtr itera
28220 74 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  tor);....#if !PL
28230 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28240 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28250 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28260 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28270 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28280 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28290 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
282a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
282b0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
282c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
282d0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
282e0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
282f0 33 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72  3changeset_inver
28300 74 28 69 6e 74 20 6e 49 6e 2c 20 49 6e 74 50 74  t(int nIn, IntPt
28310 72 20 70 49 6e 2c 20 72 65 66 20 69 6e 74 20 6e  r pIn, ref int n
28320 4f 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20  Out, ref IntPtr 
28330 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  pOut);....#if !P
28340 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
28350 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
28360 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
28370 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
28380 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
28390 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
283a0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
283b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
283c0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
283d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
283e0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
283f0 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
28400 65 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63  e3changeset_conc
28410 61 74 28 69 6e 74 20 6e 41 2c 20 49 6e 74 50 74  at(int nA, IntPt
28420 72 20 70 41 2c 20 69 6e 74 20 6e 42 2c 20 49 6e  r pA, int nB, In
28430 74 50 74 72 20 70 42 2c 20 72 65 66 20 69 6e 74  tPtr pB, ref int
28440 20 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50 74   nOut, ref IntPt
28450 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
28460 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28470 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28480 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28490 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
284a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
284b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
284c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
284d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
284e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
284f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28500 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
28510 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
28520 69 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f  ite3changegroup_
28530 6e 65 77 28 72 65 66 20 49 6e 74 50 74 72 20 63  new(ref IntPtr c
28540 68 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a  hangeGroup);....
28550 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
28560 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
28570 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28580 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
28590 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
285a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
285b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
285c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
285d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
285e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
285f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
28600 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
28610 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72   sqlite3changegr
28620 6f 75 70 5f 61 64 64 28 49 6e 74 50 74 72 20 63  oup_add(IntPtr c
28630 68 61 6e 67 65 47 72 6f 75 70 2c 20 69 6e 74 20  hangeGroup, int 
28640 6e 44 61 74 61 2c 20 49 6e 74 50 74 72 20 70 44  nData, IntPtr pD
28650 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ata);....#if !PL
28660 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28670 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28680 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28690 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
286a0 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
286b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
286c0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
286d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
286e0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
286f0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
28700 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
28710 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
28720 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74  3changegroup_out
28730 70 75 74 28 49 6e 74 50 74 72 20 63 68 61 6e 67  put(IntPtr chang
28740 65 47 72 6f 75 70 2c 20 72 65 66 20 69 6e 74 20  eGroup, ref int 
28750 6e 44 61 74 61 2c 20 72 65 66 20 49 6e 74 50 74  nData, ref IntPt
28760 72 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66  r pData);....#if
28770 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28780 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28790 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
287a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
287b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
287c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
287d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
287e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
287f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
28800 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
28810 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
28820 69 64 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  id sqlite3change
28830 67 72 6f 75 70 5f 64 65 6c 65 74 65 28 49 6e 74  group_delete(Int
28840 50 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29  Ptr changeGroup)
28850 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28860 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28870 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
28880 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
28890 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
288a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
288b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
288c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
288d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
288e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
288f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28900 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28910 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28920 6e 67 65 73 65 74 5f 61 70 70 6c 79 28 49 6e 74  ngeset_apply(Int
28930 50 74 72 20 64 62 2c 20 69 6e 74 20 6e 43 68 61  Ptr db, int nCha
28940 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70  ngeSet, IntPtr p
28950 43 68 61 6e 67 65 53 65 74 2c 20 78 53 65 73 73  ChangeSet, xSess
28960 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65  ionFilter xFilte
28970 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c  r, xSessionConfl
28980 69 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49  ict xConflict, I
28990 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
289a0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
289b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
289c0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
289d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
289e0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
289f0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28a00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28a10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28a20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
28a30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28a40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28a50 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28a60 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
28a70 65 73 65 74 5f 61 70 70 6c 79 5f 73 74 72 6d 28  eset_apply_strm(
28a80 49 6e 74 50 74 72 20 64 62 2c 20 78 53 65 73 73  IntPtr db, xSess
28a90 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c  ionInput xInput,
28aa0 20 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65   IntPtr pIn, xSe
28ab0 73 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c  ssionFilter xFil
28ac0 74 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e  ter, xSessionCon
28ad0 66 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c  flict xConflict,
28ae0 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29   IntPtr context)
28af0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28b00 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28b10 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
28b20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
28b30 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28b40 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
28b50 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28b60 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28b70 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28b80 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28b90 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28ba0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28bb0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61  rCode sqlite3cha
28bc0 6e 67 65 73 65 74 5f 63 6f 6e 63 61 74 5f 73 74  ngeset_concat_st
28bd0 72 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74  rm(xSessionInput
28be0 20 78 49 6e 70 75 74 41 2c 20 49 6e 74 50 74 72   xInputA, IntPtr
28bf0 20 70 49 6e 41 2c 20 78 53 65 73 73 69 6f 6e 49   pInA, xSessionI
28c00 6e 70 75 74 20 78 49 6e 70 75 74 42 2c 20 49 6e  nput xInputB, In
28c10 74 50 74 72 20 70 49 6e 42 2c 20 78 53 65 73 73  tPtr pInB, xSess
28c20 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
28c30 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
28c40 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28c50 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28c60 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28c70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28c80 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28c90 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28ca0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28cb0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28cc0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28cd0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28ce0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28cf0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28d00 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28d10 67 65 73 65 74 5f 69 6e 76 65 72 74 5f 73 74 72  geset_invert_str
28d20 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  m(xSessionInput 
28d30 78 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70  xInput, IntPtr p
28d40 49 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70  In, xSessionOutp
28d50 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50  ut xOutput, IntP
28d60 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66  tr pOut);....#if
28d70 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28d80 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28d90 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28da0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
28db0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
28dc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
28dd0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
28de0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
28df0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
28e00 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
28e10 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
28e20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
28e30 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73  lite3changeset_s
28e40 74 61 72 74 5f 73 74 72 6d 28 72 65 66 20 49 6e  tart_strm(ref In
28e50 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 78  tPtr iterator, x
28e60 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e  SessionInput xIn
28e70 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 29  put, IntPtr pIn)
28e80 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28e90 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28ea0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
28eb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
28ec0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28ed0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
28ee0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
28ef0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
28f00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
28f10 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
28f20 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
28f30 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
28f40 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
28f50 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 5f 73  sion_changeset_s
28f60 74 72 6d 28 49 6e 74 50 74 72 20 73 65 73 73 69  trm(IntPtr sessi
28f70 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70  on, xSessionOutp
28f80 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50  ut xOutput, IntP
28f90 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66  tr pOut);....#if
28fa0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28fb0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28fc0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28fd0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
28fe0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
28ff0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
29000 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
29010 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29020 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
29030 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
29040 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29050 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29060 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74  lite3session_pat
29070 63 68 73 65 74 5f 73 74 72 6d 28 49 6e 74 50 74  chset_strm(IntPt
29080 72 20 73 65 73 73 69 6f 6e 2c 20 78 53 65 73 73  r session, xSess
29090 69 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75  ionOutput xOutpu
290a0 74 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b  t, IntPtr pOut);
290b0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
290c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
290d0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
290e0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
290f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29100 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
29110 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
29120 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
29130 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29140 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
29150 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29160 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29170 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
29180 67 65 67 72 6f 75 70 5f 61 64 64 5f 73 74 72 6d  gegroup_add_strm
29190 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65 47 72  (IntPtr changeGr
291a0 6f 75 70 2c 20 78 53 65 73 73 69 6f 6e 49 6e 70  oup, xSessionInp
291b0 75 74 20 78 49 6e 70 75 74 2c 20 49 6e 74 50 74  ut xInput, IntPt
291c0 72 20 70 49 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  r pIn);....#if !
291d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
291e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
291f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
29200 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
29210 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
29220 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
29230 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
29240 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29250 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
29260 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29270 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
29280 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
29290 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f  te3changegroup_o
292a0 75 74 70 75 74 5f 73 74 72 6d 28 49 6e 74 50 74  utput_strm(IntPt
292b0 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20 78  r changeGroup, x
292c0 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
292d0 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
292e0 75 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ut);..#endif..  
292f0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
29300 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
29310 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29360 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 73  ...    #region s
29370 71 6c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 70  qlite interop ap
29380 69 20 63 61 6c 6c 73 20 28 2e 4e 45 54 20 43 6f  i calls (.NET Co
29390 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
293a0 6f 6e 6c 79 29 0d 0a 23 69 66 20 50 4c 41 54 46  only)..#if PLATF
293b0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
293c0 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
293d0 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 5b 44  STANDARD..    [D
293e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
293f0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
29400 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
29410 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6c  n void sqlite3_l
29420 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
29430 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
29440 64 62 2c 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77  db, ref long row
29450 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  Id);....    [Dll
29460 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
29470 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
29480 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29490 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d  void sqlite3_mem
294a0 6f 72 79 5f 75 73 65 64 5f 69 6e 74 65 72 6f 70  ory_used_interop
294b0 28 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73 29  (ref long bytes)
294c0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
294d0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
294e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
294f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
29500 64 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  d sqlite3_memory
29510 5f 68 69 67 68 77 61 74 65 72 5f 69 6e 74 65 72  _highwater_inter
29520 6f 70 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  op(int resetFlag
29530 2c 20 72 65 66 20 6c 6f 6e 67 20 62 79 74 65 73  , ref long bytes
29540 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
29550 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
29560 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
29570 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
29580 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
29590 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
295a0 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
295b0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
295c0 2c 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c  , ref double val
295d0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  ue);....    [Dll
295e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
295f0 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
29600 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29610 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29620 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
29630 36 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  64_interop(IntPt
29640 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
29650 78 2c 20 72 65 66 20 6c 6f 6e 67 20 76 61 6c 75  x, ref long valu
29660 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
29670 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29680 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
29690 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
296a0 36 34 5f 69 6e 74 65 72 6f 70 22 29 5d 0d 0a 20  64_interop")].. 
296b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
296c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
296d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
296e0 33 5f 62 69 6e 64 5f 75 69 6e 74 36 34 5f 69 6e  3_bind_uint64_in
296f0 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
29700 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
29710 66 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d  f ulong value);.
29720 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
29730 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
29740 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
29750 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
29760 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
29770 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e  ouble_interop(In
29780 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
29790 6e 64 65 78 2c 20 72 65 66 20 64 6f 75 62 6c 65  ndex, ref double
297a0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
297b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
297c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
297d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
297e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
297f0 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 36 34 5f 69 6e  _column_int64_in
29800 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
29810 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
29820 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
29830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29840 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
29850 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
29860 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
29870 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
29880 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ble_interop(IntP
29890 74 72 20 70 2c 20 72 65 66 20 64 6f 75 62 6c 65  tr p, ref double
298a0 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
298b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
298c0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
298d0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
298e0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
298f0 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74  _value_int64_int
29900 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c 20 72  erop(IntPtr p, r
29910 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
29920 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
29930 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
29940 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29950 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
29960 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
29970 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28 49  double_interop(I
29980 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
29990 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  ef double value)
299a0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
299b0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
299c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
299d0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
299e0 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
299f0 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 49  _int64_interop(I
29a00 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72  ntPtr context, r
29a10 65 66 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  ef Int64 value);
29a20 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  ....    [DllImpo
29a30 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
29a40 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
29a50 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
29a60 74 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  tr sqlite3_creat
29a70 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
29a80 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20  ule_interop(..  
29a90 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62 2c        IntPtr db,
29aa0 20 49 6e 74 50 74 72 20 6e 61 6d 65 2c 20 49 6e   IntPtr name, In
29ab0 74 50 74 72 20 70 4d 6f 64 75 6c 65 2c 20 69 6e  tPtr pModule, in
29ac0 74 20 69 56 65 72 73 69 6f 6e 2c 20 78 43 72 65  t iVersion, xCre
29ad0 61 74 65 20 78 43 72 65 61 74 65 2c 0d 0a 20 20  ate xCreate,..  
29ae0 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 78        xConnect x
29af0 43 6f 6e 6e 65 63 74 2c 20 78 42 65 73 74 49 6e  Connect, xBestIn
29b00 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 2c 20  dex xBestIndex, 
29b10 78 44 69 73 63 6f 6e 6e 65 63 74 20 78 44 69 73  xDisconnect xDis
29b20 63 6f 6e 6e 65 63 74 2c 0d 0a 20 20 20 20 20 20  connect,..      
29b30 20 20 78 44 65 73 74 72 6f 79 20 78 44 65 73 74    xDestroy xDest
29b40 72 6f 79 2c 20 78 4f 70 65 6e 20 78 4f 70 65 6e  roy, xOpen xOpen
29b50 2c 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 2c  , xClose xClose,
29b60 20 78 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72   xFilter xFilter
29b70 2c 0d 0a 20 20 20 20 20 20 20 20 78 4e 65 78 74  ,..        xNext
29b80 20 78 4e 65 78 74 2c 20 78 45 6f 66 20 78 45 6f   xNext, xEof xEo
29b90 66 2c 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75  f, xColumn xColu
29ba0 6d 6e 2c 20 78 52 6f 77 49 64 20 78 52 6f 77 49  mn, xRowId xRowI
29bb0 64 2c 20 78 55 70 64 61 74 65 20 78 55 70 64 61  d, xUpdate xUpda
29bc0 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 78 42 65  te,..        xBe
29bd0 67 69 6e 20 78 42 65 67 69 6e 2c 20 78 53 79 6e  gin xBegin, xSyn
29be0 63 20 78 53 79 6e 63 2c 20 78 43 6f 6d 6d 69 74  c xSync, xCommit
29bf0 20 78 43 6f 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62   xCommit, xRollb
29c00 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a  ack xRollback,..
29c10 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e          xFindFun
29c20 63 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74  ction xFindFunct
29c30 69 6f 6e 2c 20 78 52 65 6e 61 6d 65 20 78 52 65  ion, xRename xRe
29c40 6e 61 6d 65 2c 20 78 53 61 76 65 70 6f 69 6e 74  name, xSavepoint
29c50 20 78 53 61 76 65 70 6f 69 6e 74 2c 0d 0a 20 20   xSavepoint,..  
29c60 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 20 78        xRelease x
29c70 52 65 6c 65 61 73 65 2c 20 78 52 6f 6c 6c 62 61  Release, xRollba
29c80 63 6b 54 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ckTo xRollbackTo
29c90 2c 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  , IntPtr pClient
29ca0 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 78  Data,..        x
29cb0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 78 44  DestroyModule xD
29cc0 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a  estroyModule);..
29cd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 20 50  #endif..    // P
29ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
29cf0 52 41 4d 45 57 4f 52 4b 20 26 26 20 21 53 51 4c  RAMEWORK && !SQL
29d00 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
29d10 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
29d20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
29d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29d70 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e  ...    #region N
29d80 61 74 69 76 65 20 44 65 6c 65 67 61 74 65 73 0d  ative Delegates.
29d90 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
29da0 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 23 69 66 20  TUAL_TABLE..#if 
29db0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
29dc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29dd0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
29de0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
29df0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
29e00 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
29e10 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
29e20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29e30 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20   xCreate(..     
29e40 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a     IntPtr pDb,..
29e50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29e60 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e  Aux,..        in
29e70 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
29e80 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
29e90 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
29ea0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
29eb0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
29ec0 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  ror..    );.... 
29ed0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29f20 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
29f30 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
29f40 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
29f50 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
29f60 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
29f70 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
29f80 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
29f90 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
29fa0 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28  orCode xConnect(
29fb0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
29fc0 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 49   pDb,..        I
29fd0 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
29fe0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
29ff0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
2a000 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  rgv,..        re
2a010 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
2a020 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74  .        ref Int
2a030 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
2a040 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a090 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2a0a0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a0b0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2a0c0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2a0d0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2a0e0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a0f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2a100 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2a110 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
2a120 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  estIndex(..     
2a130 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2a140 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2a150 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 29 3b 0d   pIndex..    );.
2a160 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1b0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2a1c0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a1d0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2a1e0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2a1f0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2a200 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2a210 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2a220 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2a230 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63  eErrorCode xDisc
2a240 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2a250 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
2a260 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2a270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a2c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a2d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a2e0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2a2f0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2a300 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a310 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2a320 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2a330 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a340 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20   xDestroy(..    
2a350 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2a360 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2a3c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a3d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a3e0 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2a3f0 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2a400 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2a410 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2a420 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2a430 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2a440 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20  ode xOpen(..    
2a450 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2a460 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49  ,..        ref I
2a470 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
2a480 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2a4e0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2a4f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2a500 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2a510 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2a520 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2a530 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2a540 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2a550 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a560 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
2a570 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2a580 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2a5e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2a5f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2a600 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2a610 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2a620 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2a630 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2a640 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2a650 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2a660 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20  ode xFilter(..  
2a670 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
2a680 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 69  rsor,..        i
2a690 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  nt idxNum,..    
2a6a0 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74      IntPtr idxSt
2a6b0 72 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  r,..        int 
2a6c0 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
2a6d0 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20  ntPtr argv..    
2a6e0 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a730 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2a740 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2a750 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2a760 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2a770 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2a780 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2a790 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2a7a0 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51  blic delegate SQ
2a7b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e  LiteErrorCode xN
2a7c0 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ext(..        In
2a7d0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2a7e0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f    );....    ////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2a840 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a850 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2a860 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2a870 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2a880 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2a890 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2a8a0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2a8b0 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20  int xEof(..     
2a8c0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2a8d0 72 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  r..    );....   
2a8e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a930 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2a940 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2a950 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2a960 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2a970 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2a980 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2a990 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2a9a0 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
2a9b0 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20  Code xColumn(.. 
2a9c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2a9d0 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20  ursor,..        
2a9e0 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c  IntPtr pContext,
2a9f0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e  ..        int in
2aa00 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
2aa10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2aa60 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2aa70 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2aa80 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2aa90 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2aaa0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2aab0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2aac0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2aad0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2aae0 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a  orCode xRowId(..
2aaf0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ab00 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
2ab10 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
2ab20 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2ab80 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2ab90 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2aba0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2abb0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2abc0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2abd0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2abe0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2abf0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2ac00 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20  de xUpdate(..   
2ac10 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2ac20 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  b,..        int 
2ac30 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49  argc,..        I
2ac40 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
2ac50 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
2ac60 77 49 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  wId..    );.... 
2ac70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2acc0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2acd0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2ace0 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2acf0 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2ad00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2ad10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2ad20 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2ad30 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2ad40 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a  orCode xBegin(..
2ad50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ad60 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
2ad70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2adc0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2add0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2ade0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2adf0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2ae00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2ae10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2ae20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2ae30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2ae40 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a  rorCode xSync(..
2ae50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ae60 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a  Vtab..    );....
2ae70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aec0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2aed0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2aee0 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65  K..    [Unmanage
2aef0 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72  dFunctionPointer
2af00 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69  (CallingConventi
2af10 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64  on.Cdecl)]..#end
2af20 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64  if..    public d
2af30 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72  elegate SQLiteEr
2af40 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28  rorCode xCommit(
2af50 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2af60 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
2af70 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2af80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2afd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2afe0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2aff0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2b000 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2b010 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2b020 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2b030 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2b040 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
2b050 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ack(..        In
2b060 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2b070 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
2b080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b0c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c  /////....#if !PL
2b0d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2b0e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
2b0f0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
2b100 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
2b110 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
2b120 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2b130 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e  blic delegate in
2b140 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  t xFindFunction(
2b150 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2b160 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2b170 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20   int nArg,..    
2b180 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65      IntPtr zName
2b190 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 53  ,..        ref S
2b1a0 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61  QLiteCallback ca
2b1b0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
2b1c0 20 72 65 66 20 49 6e 74 50 74 72 20 70 55 73 65   ref IntPtr pUse
2b1d0 72 44 61 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d  rData..    );...
2b1e0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2b240 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2b250 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67  RK..    [Unmanag
2b260 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65  edFunctionPointe
2b270 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  r(CallingConvent
2b280 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e  ion.Cdecl)]..#en
2b290 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
2b2a0 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45  delegate SQLiteE
2b2b0 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65  rrorCode xRename
2b2c0 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  (..        IntPt
2b2d0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2b2e0 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
2b2f0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2b300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2b350 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2b360 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2b370 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2b380 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2b390 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2b3a0 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2b3b0 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2b3c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2b3d0 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20   xSavepoint(..  
2b3e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2b3f0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2b400 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2b410 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2b470 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2b480 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2b490 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2b4a0 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2b4b0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2b4c0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2b4d0 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2b4e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2b4f0 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
2b500 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2b510 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
2b520 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
2b530 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
2b580 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2b590 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b5a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2b5b0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2b5c0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2b5d0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2b5e0 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2b5f0 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2b600 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
2b610 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
2b620 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2b630 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
2b640 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a  epoint..    );..
2b650 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6a0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2b6b0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2b6c0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2b6d0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2b6e0 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2b6f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2b700 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2b710 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64 20 78   delegate void x
2b720 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 49 6e  DestroyModule(In
2b730 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
2b740 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
2b750 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2b760 20 20 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 2f 2f 2f  ////////////////
2b7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b7b0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74  .    #region Nat
2b7c0 69 76 65 20 53 74 72 75 63 74 75 72 65 73 0d 0a  ive Structures..
2b7d0 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
2b7e0 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 5b  UAL_TABLE..    [
2b7f0 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79  StructLayout(Lay
2b800 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69  outKind.Sequenti
2b810 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  al)]..    intern
2b820 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  al struct sqlite
2b830 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d  3_module..    {.
2b840 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 20 30 20  .        /*   0 
2b850 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 56  */ public int iV
2b860 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
2b870 20 2f 2a 20 20 20 38 20 2a 2f 20 70 75 62 6c 69   /*   8 */ publi
2b880 63 20 78 43 72 65 61 74 65 20 78 43 72 65 61 74  c xCreate xCreat
2b890 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  e;..        /*  
2b8a0 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f  16 */ public xCo
2b8b0 6e 6e 65 63 74 20 78 43 6f 6e 6e 65 63 74 3b 0d  nnect xConnect;.
2b8c0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 32 34 20  .        /*  24 
2b8d0 2a 2f 20 70 75 62 6c 69 63 20 78 42 65 73 74 49  */ public xBestI
2b8e0 6e 64 65 78 20 78 42 65 73 74 49 6e 64 65 78 3b  ndex xBestIndex;
2b8f0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 33 32  ..        /*  32
2b900 20 2a 2f 20 70 75 62 6c 69 63 20 78 44 69 73 63   */ public xDisc
2b910 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e 65  onnect xDisconne
2b920 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  ct;..        /* 
2b930 20 34 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 44   40 */ public xD
2b940 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 3b  estroy xDestroy;
2b950 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34 38  ..        /*  48
2b960 20 2a 2f 20 70 75 62 6c 69 63 20 78 4f 70 65 6e   */ public xOpen
2b970 20 78 4f 70 65 6e 3b 0d 0a 20 20 20 20 20 20 20   xOpen;..       
2b980 20 2f 2a 20 20 35 36 20 2a 2f 20 70 75 62 6c 69   /*  56 */ publi
2b990 63 20 78 43 6c 6f 73 65 20 78 43 6c 6f 73 65 3b  c xClose xClose;
2b9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 36 34  ..        /*  64
2b9b0 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6c 74   */ public xFilt
2b9c0 65 72 20 78 46 69 6c 74 65 72 3b 0d 0a 20 20 20  er xFilter;..   
2b9d0 20 20 20 20 20 2f 2a 20 20 37 32 20 2a 2f 20 70       /*  72 */ p
2b9e0 75 62 6c 69 63 20 78 4e 65 78 74 20 78 4e 65 78  ublic xNext xNex
2b9f0 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  t;..        /*  
2ba00 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 78 45 6f  80 */ public xEo
2ba10 66 20 78 45 6f 66 3b 0d 0a 20 20 20 20 20 20 20  f xEof;..       
2ba20 20 2f 2a 20 20 38 38 20 2a 2f 20 70 75 62 6c 69   /*  88 */ publi
2ba30 63 20 78 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d  c xColumn xColum
2ba40 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20  n;..        /*  
2ba50 39 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f  96 */ public xRo
2ba60 77 49 64 20 78 52 6f 77 49 64 3b 0d 0a 20 20 20  wId xRowId;..   
2ba70 20 20 20 20 20 2f 2a 20 31 30 34 20 2a 2f 20 70       /* 104 */ p
2ba80 75 62 6c 69 63 20 78 55 70 64 61 74 65 20 78 55  ublic xUpdate xU
2ba90 70 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  pdate;..        
2baa0 2f 2a 20 31 31 32 20 2a 2f 20 70 75 62 6c 69 63  /* 112 */ public
2bab0 20 78 42 65 67 69 6e 20 78 42 65 67 69 6e 3b 0d   xBegin xBegin;.
2bac0 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 32 30 20  .        /* 120 
2bad0 2a 2f 20 70 75 62 6c 69 63 20 78 53 79 6e 63 20  */ public xSync 
2bae0 78 53 79 6e 63 3b 0d 0a 20 20 20 20 20 20 20 20  xSync;..        
2baf0 2f 2a 20 31 32 38 20 2a 2f 20 70 75 62 6c 69 63  /* 128 */ public
2bb00 20 78 43 6f 6d 6d 69 74 20 78 43 6f 6d 6d 69 74   xCommit xCommit
2bb10 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 33  ;..        /* 13
2bb20 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 52 6f 6c  6 */ public xRol
2bb30 6c 62 61 63 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b  lback xRollback;
2bb40 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 34 34  ..        /* 144
2bb50 20 2a 2f 20 70 75 62 6c 69 63 20 78 46 69 6e 64   */ public xFind
2bb60 46 75 6e 63 74 69 6f 6e 20 78 46 69 6e 64 46 75  Function xFindFu
2bb70 6e 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  nction;..       
2bb80 20 2f 2a 20 31 35 32 20 2a 2f 20 70 75 62 6c 69   /* 152 */ publi
2bb90 63 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d  c xRename xRenam
2bba0 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 54  e;..        /* T
2bbb0 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
2bbc0 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20   are in version 
2bbd0 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33  1 of the sqlite3
2bbe0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20  _module..       
2bbf0 20 20 2a 20 6f 62 6a 65 63 74 2e 20 20 54 68 6f    * object.  Tho
2bc00 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72  se below are for
2bc10 20 76 65 72 73 69 6f 6e 20 32 20 61 6e 64 20 67   version 2 and g
2bc20 72 65 61 74 65 72 2e 20 2a 2f 0d 0a 20 20 20 20  reater. */..    
2bc30 20 20 20 20 2f 2a 20 31 36 30 20 2a 2f 20 70 75      /* 160 */ pu
2bc40 62 6c 69 63 20 78 53 61 76 65 70 6f 69 6e 74 20  blic xSavepoint 
2bc50 78 53 61 76 65 70 6f 69 6e 74 3b 0d 0a 20 20 20  xSavepoint;..   
2bc60 20 20 20 20 20 2f 2a 20 31 36 38 20 2a 2f 20 70       /* 168 */ p
2bc70 75 62 6c 69 63 20 78 52 65 6c 65 61 73 65 20 78  ublic xRelease x
2bc80 52 65 6c 65 61 73 65 3b 0d 0a 20 20 20 20 20 20  Release;..      
2bc90 20 20 2f 2a 20 31 37 36 20 2a 2f 20 70 75 62 6c    /* 176 */ publ
2bca0 69 63 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 78  ic xRollbackTo x
2bcb0 52 6f 6c 6c 62 61 63 6b 54 6f 3b 0d 0a 20 20 20  RollbackTo;..   
2bcc0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
2bcd0 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
2bd20 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
2bd30 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
2bd40 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
2bd50 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
2bd60 76 74 61 62 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  vtab..    {..   
2bd70 20 20 20 20 20 2f 2a 20 20 30 20 2a 2f 20 70 75       /*  0 */ pu
2bd80 62 6c 69 63 20 49 6e 74 50 74 72 20 70 4d 6f 64  blic IntPtr pMod
2bd90 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ule;..        /*
2bda0 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e    8 */ public in
2bdb0 74 20 6e 52 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f  t nRef; /* NO LO
2bdc0 4e 47 45 52 20 55 53 45 44 20 2a 2f 0d 0a 20 20  NGER USED */..  
2bdd0 20 20 20 20 20 20 2f 2a 20 31 36 20 2a 2f 20 70        /* 16 */ p
2bde0 75 62 6c 69 63 20 49 6e 74 50 74 72 20 7a 45 72  ublic IntPtr zEr
2bdf0 72 4d 73 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rMsg;..    }....
2be00 20 20 20 20 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 2f  ////////////////
2be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2be50 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
2be60 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
2be70 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
2be80 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
2be90 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  t sqlite3_vtab_c
2bea0 75 72 73 6f 72 0d 0a 20 20 20 20 7b 0d 0a 20 20  ursor..    {..  
2beb0 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70 75        /* 0 */ pu
2bec0 62 6c 69 63 20 49 6e 74 50 74 72 20 70 56 54 61  blic IntPtr pVTa
2bed0 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  b;..    }....   
2bee0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2bef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bf30 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75      [StructLayou
2bf40 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71  t(LayoutKind.Seq
2bf50 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69  uential)]..    i
2bf60 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73  nternal struct s
2bf70 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
2bf80 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a  straint..    {..
2bf90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2bfa0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
2bfb0 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
2bfc0 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
2bfd0 78 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73  xConstraint cons
2bfe0 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20  traint..        
2bff0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2c000 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
2c010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c020 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61 69      if (constrai
2c030 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  nt != null)..   
2c040 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c050 20 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6c              iCol
2c060 75 6d 6e 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  umn = constraint
2c070 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20  .iColumn;..     
2c080 20 20 20 20 20 20 20 20 20 20 20 6f 70 20 3d 20             op = 
2c090 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a  constraint.op;..
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0b0 75 73 61 62 6c 65 20 3d 20 63 6f 6e 73 74 72 61  usable = constra
2c0c0 69 6e 74 2e 75 73 61 62 6c 65 3b 0d 0a 20 20 20  int.usable;..   
2c0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 54 65               iTe
2c0e0 72 6d 4f 66 66 73 65 74 20 3d 20 63 6f 6e 73 74  rmOffset = const
2c0f0 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65  raint.iTermOffse
2c100 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
2c110 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2c120 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c170 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30 20  ...        /* 0 
2c180 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43  */ public int iC
2c190 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
2c1a0 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20 53  /* 4 */ public S
2c1b0 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
2c1c0 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 20 20 20 20  aintOp op;..    
2c1d0 20 20 20 20 2f 2a 20 35 20 2a 2f 20 70 75 62 6c      /* 5 */ publ
2c1e0 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d  ic byte usable;.
2c1f0 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 20 2a 2f  .        /* 8 */
2c200 20 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72   public int iTer
2c210 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 7d 0d  mOffset;..    }.
2c220 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63  //....    [Struc
2c280 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69  tLayout(LayoutKi
2c290 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d  nd.Sequential)].
2c2a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
2c2b0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
2c2c0 65 78 5f 6f 72 64 65 72 62 79 0d 0a 20 20 20 20  ex_orderby..    
2c2d0 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
2c2e0 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  c sqlite3_index_
2c2f0 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20  orderby(..      
2c300 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
2c310 78 4f 72 64 65 72 42 79 20 6f 72 64 65 72 42 79  xOrderBy orderBy
2c320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2c330 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74  .            : t
2c340 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  his()..        {
2c350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2c360 20 28 6f 72 64 65 72 42 79 20 21 3d 20 6e 75 6c   (orderBy != nul
2c370 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2c380 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c390 20 20 20 69 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64     iColumn = ord
2c3a0 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  erBy.iColumn;.. 
2c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
2c3c0 65 73 63 20 3d 20 6f 72 64 65 72 42 79 2e 64 65  esc = orderBy.de
2c3d0 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sc;..           
2c3e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2c3f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c440 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 30  ....        /* 0
2c450 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 69   */ public int i
2c460 43 6f 6c 75 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d  Column; /* Colum
2c470 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20  n number */..   
2c480 20 20 20 20 20 2f 2a 20 34 20 2a 2f 20 70 75 62       /* 4 */ pub
2c490 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 20 20  lic byte desc;  
2c4a0 20 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53   /* True for DES
2c4b0 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53  C.  False for AS
2c4c0 43 2e 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  C. */..    }....
2c4d0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c520 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61  ...    [StructLa
2c530 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e  yout(LayoutKind.
2c540 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20  Sequential)]..  
2c550 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63    internal struc
2c560 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
2c570 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
2c580 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2c590 20 70 75 62 6c 69 63 20 73 71 6c 69 74 65 33 5f   public sqlite3_
2c5a0 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
2c5b0 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20  _usage(..       
2c5c0 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
2c5d0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
2c5e0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d  constraintUsage.
2c5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2c600 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
2c610 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
2c620 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2c630 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  (constraintUsage
2c640 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2c650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c660 20 20 20 20 20 20 20 20 20 20 61 72 67 76 49 6e            argvIn
2c670 64 65 78 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74  dex = constraint
2c680 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78 3b  Usage.argvIndex;
2c690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c6a0 20 20 6f 6d 69 74 20 3d 20 63 6f 6e 73 74 72 61    omit = constra
2c6b0 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a  intUsage.omit;..
2c6c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c6d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2c6e0 20 20 20 20 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 20  ///////////.... 
2c730 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
2c740 74 20 61 72 67 76 49 6e 64 65 78 3b 20 2f 2a 20  t argvIndex; /* 
2c750 69 66 20 3e 30 2c 20 63 6f 6e 73 74 72 61 69 6e  if >0, constrain
2c760 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72 67  t is part of arg
2c770 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d  v to xFilter */.
2c780 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2c790 62 79 74 65 20 6f 6d 69 74 3b 20 20 20 20 20 2f  byte omit;     /
2c7a0 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20  * Do not code a 
2c7b0 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f  test for this co
2c7c0 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
2c7d0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
2c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 53 74  /////....    [St
2c830 72 75 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75  ructLayout(Layou
2c840 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c  tKind.Sequential
2c850 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
2c860 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
2c870 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20  index_info..    
2c880 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 49 6e  {..        /* In
2c890 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  puts */..       
2c8a0 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69 63   /*  0 */ public
2c8b0 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
2c8c0 3b 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65  ; /* Number of e
2c8d0 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74  ntries in aConst
2c8e0 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20  raint */..      
2c8f0 20 20 2f 2a 20 20 38 20 2a 2f 20 70 75 62 6c 69    /*  8 */ publi
2c900 63 20 49 6e 74 50 74 72 20 61 43 6f 6e 73 74 72  c IntPtr aConstr
2c910 61 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f  aint;..        /
2c920 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69 63 20 69  * 16 */ public i
2c930 6e 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20  nt nOrderBy;    
2c940 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74  /* Number of ent
2c950 72 69 65 73 20 69 6e 20 61 4f 72 64 65 72 42 79  ries in aOrderBy
2c960 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2c970 32 34 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74  24 */ public Int
2c980 50 74 72 20 61 4f 72 64 65 72 42 79 3b 0d 0a 20  Ptr aOrderBy;.. 
2c990 20 20 20 20 20 20 20 2f 2a 20 4f 75 74 70 75 74         /* Output
2c9a0 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  s */..        /*
2c9b0 20 33 32 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e   32 */ public In
2c9c0 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
2c9d0 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20  Usage;..        
2c9e0 2f 2a 20 34 30 20 2a 2f 20 70 75 62 6c 69 63 20  /* 40 */ public 
2c9f0 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
2ca00 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
2ca10 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79  used to identify
2ca20 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20   the index */.. 
2ca30 20 20 20 20 20 20 20 2f 2a 20 34 38 20 2a 2f 20         /* 48 */ 
2ca40 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 69 64  public string id
2ca50 78 53 74 72 3b 20 20 20 20 20 20 20 20 2f 2a 20  xStr;        /* 
2ca60 53 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79  String, possibly
2ca70 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
2ca80 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f  qlite3_malloc */
2ca90 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 35 36 20  ..        /* 56 
2caa0 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 65  */ public int ne
2cab0 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20  edToFreeIdxStr; 
2cac0 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20 75  /* Free idxStr u
2cad0 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65  sing sqlite3_fre
2cae0 65 28 29 20 69 66 20 74 72 75 65 20 2a 2f 0d 0a  e() if true */..
2caf0 20 20 20 20 20 20 20 20 2f 2a 20 36 30 20 2a 2f          /* 60 */
2cb00 20 70 75 62 6c 69 63 20 69 6e 74 20 6f 72 64 65   public int orde
2cb10 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a  rByConsumed;  /*
2cb20 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20   True if output 
2cb30 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72  is already order
2cb40 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ed */..        /
2cb50 2a 20 36 34 20 2a 2f 20 70 75 62 6c 69 63 20 64  * 64 */ public d
2cb60 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
2cb70 6f 73 74 3b 20 2f 2a 20 45 73 74 69 6d 61 74 65  ost; /* Estimate
2cb80 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
2cb90 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a 20  this index */.. 
2cba0 20 20 20 20 20 20 20 2f 2a 20 37 32 20 2a 2f 20         /* 72 */ 
2cbb0 70 75 62 6c 69 63 20 6c 6f 6e 67 20 65 73 74 69  public long esti
2cbc0 6d 61 74 65 64 52 6f 77 73 3b 20 20 20 2f 2a 20  matedRows;   /* 
2cbd0 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72  Estimated number
2cbe0 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65   of rows returne
2cbf0 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  d */..        /*
2cc00 20 38 30 20 2a 2f 20 70 75 62 6c 69 63 20 53 51   80 */ public SQ
2cc10 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 69  LiteIndexFlags i
2cc20 64 78 46 6c 61 67 73 3b 20 2f 2a 20 4d 61 73 6b  dxFlags; /* Mask
2cc30 20 6f 66 20 53 51 4c 49 54 45 5f 49 4e 44 45 58   of SQLITE_INDEX
2cc40 5f 53 43 41 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f  _SCAN_* flags */
2cc50 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 38 20  ..        /* 88 
2cc60 2a 2f 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 63  */ public long c
2cc70 6f 6c 55 73 65 64 3b 20 20 20 20 20 20 20 20 20  olUsed;         
2cc80 2f 2a 20 49 6e 70 75 74 3a 20 4d 61 73 6b 20 6f  /* Input: Mask o
2cc90 66 20 63 6f 6c 75 6d 6e 73 20 75 73 65 64 20 62  f columns used b
2cca0 79 20 73 74 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a  y statement */..
2ccb0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2ccc0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
2ccd0 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e   }..  #endregion
2cce0 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
2ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd30 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e  ///....  #region
2cd40 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
2cd50 61 6d 65 77 6f 72 6b 20 28 6f 6e 6c 79 29 20 43  amework (only) C
2cd60 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 43 6c  riticalHandle Cl
2cd70 61 73 73 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  ass..#if PLATFOR
2cd80 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2cd90 52 4b 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 61  RK..  internal a
2cda0 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 43 72  bstract class Cr
2cdb0 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3a 20 49  iticalHandle : I
2cdc0 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d  Disposable..  {.
2cdd0 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f  .    private boo
2cde0 6c 20 5f 69 73 43 6c 6f 73 65 64 3b 0d 0a 20 20  l _isClosed;..  
2cdf0 20 20 70 72 6f 74 65 63 74 65 64 20 49 6e 74 50    protected IntP
2ce00 74 72 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  tr handle;....  
2ce10 20 20 70 72 6f 74 65 63 74 65 64 20 43 72 69 74    protected Crit
2ce20 69 63 61 6c 48 61 6e 64 6c 65 28 49 6e 74 50 74  icalHandle(IntPt
2ce30 72 20 69 6e 76 61 6c 69 64 48 61 6e 64 6c 65 56  r invalidHandleV
2ce40 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
2ce50 20 20 20 20 68 61 6e 64 6c 65 20 3d 20 69 6e 76      handle = inv
2ce60 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65 3b  alidHandleValue;
2ce70 0d 0a 20 20 20 20 20 20 5f 69 73 43 6c 6f 73 65  ..      _isClose
2ce80 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
2ce90 7d 0d 0a 0d 0a 20 20 20 20 7e 43 72 69 74 69 63  }....    ~Critic
2cea0 61 6c 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20  alHandle()..    
2ceb0 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 65  {..      Dispose
2cec0 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d 0d  (false);..    }.
2ced0 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76  ...    private v
2cee0 6f 69 64 20 43 6c 65 61 6e 75 70 28 29 0d 0a 20  oid Cleanup().. 
2cef0 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28     {..      if (
2cf00 21 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20  !IsClosed)..    
2cf10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69    {..        thi
2cf20 73 2e 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72  s._isClosed = tr
2cf30 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ue;..        if 
2cf40 28 21 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20  (!IsInvalid)..  
2cf50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cf60 20 20 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65     ReleaseHandle
2cf70 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 47  ();..          G
2cf80 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
2cf90 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
2cfa0 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20     }..      }.. 
2cfb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c     }....    publ
2cfc0 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d  ic void Close().
2cfd0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 69  .    {..      Di
2cfe0 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
2cff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
2d000 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
2d010 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
2d020 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
2d030 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 6f 74     }....    prot
2d040 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
2d050 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
2d060 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
2d070 7b 0d 0a 20 20 20 20 20 20 43 6c 65 61 6e 75 70  {..      Cleanup
2d080 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ();..    }....  
2d090 20 20 70 72 6f 74 65 63 74 65 64 20 61 62 73 74    protected abst
2d0a0 72 61 63 74 20 62 6f 6f 6c 20 52 65 6c 65 61 73  ract bool Releas
2d0b0 65 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20  eHandle();....  
2d0c0 20 20 70 72 6f 74 65 63 74 65 64 20 76 6f 69 64    protected void
2d0d0 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
2d0e0 72 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  r value)..    {.
2d0f0 0a 20 20 20 20 20 20 68 61 6e 64 6c 65 20 3d 20  .      handle = 
2d100 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  value;..    }...
2d110 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
2d120 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61   SetHandleAsInva
2d130 6c 69 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  lid()..    {..  
2d140 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
2d150 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 47 43 2e  true;..      GC.
2d160 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
2d170 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a  (this);..    }..
2d180 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
2d190 6c 20 49 73 43 6c 6f 73 65 64 0d 0a 20 20 20 20  l IsClosed..    
2d1a0 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72  {..      get { r
2d1b0 65 74 75 72 6e 20 5f 69 73 43 6c 6f 73 65 64 3b  eturn _isClosed;
2d1c0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2d1d0 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
2d1e0 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d   bool IsInvalid.
2d1f0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
2d200 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d  t;..    }....  }
2d210 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23 65 6e 64  ..#endif..  #end
2d220 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d280 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43   #region SQLiteC
2d290 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
2d2a0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 48 61  Class..    // Ha
2d2b0 6e 64 6c 65 73 20 74 68 65 20 75 6e 6d 61 6e 61  ndles the unmana
2d2c0 67 65 64 20 64 61 74 61 62 61 73 65 20 70 6f 69  ged database poi
2d2d0 6e 74 65 72 2c 20 61 6e 64 20 70 72 6f 76 69 64  nter, and provid
2d2e0 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d  es finalization.
2d2f0 0a 20 20 20 20 2f 2f 20 73 75 70 70 6f 72 74 20  .    // support 
2d300 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 69 6e 74  for it...    int
2d310 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
2d320 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ss SQLiteConnect
2d330 69 6f 6e 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  ionHandle : Crit
2d340 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
2d350 7b 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  {..#if SQLITE_ST
2d360 41 4e 44 41 52 44 20 26 26 20 21 50 4c 41 54 46  ANDARD && !PLATF
2d370 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2d380 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
2d390 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
2d3a0 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63  void CloseConnec
2d3b0 74 69 6f 6e 43 61 6c 6c 62 61 63 6b 28 0d 0a 20  tionCallback(.. 
2d3c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d3d0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2d3e0 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
2d3f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  );....        in
2d400 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 43 6c  ternal static Cl
2d410 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c  oseConnectionCal
2d420 6c 62 61 63 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65  lback closeConne
2d430 63 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20  ction =..       
2d440 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
2d450 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b  CloseConnection;
2d460 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2d470 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2d4c0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2d4d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2d4e0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 72        internal r
2d4f0 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73  eadonly object s
2d500 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62  yncRoot = new ob
2d510 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d  ject();..#endif.
2d520 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d570 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
2d580 69 76 61 74 65 20 62 6f 6f 6c 20 6f 77 6e 48 61  ivate bool ownHa
2d590 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
2d5a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2d5f0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2d600 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
2d610 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
2d620 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
2d630 65 20 64 62 29 0d 0a 20 20 20 20 20 20 20 20 7b  e db)..        {
2d640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2d650 20 28 64 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20   (db != null).. 
2d660 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2d670 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2d680 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2d690 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2d6a0 6b 20 28 64 62 2e 73 79 6e 63 52 6f 6f 74 29 0d  k (db.syncRoot).
2d6b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2d6c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6e0 72 65 74 75 72 6e 20 64 62 2e 68 61 6e 64 6c 65  return db.handle
2d6f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2d700 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d710 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2d720 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
2d730 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
2d740 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  //....        in
2d7a0 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
2d7b0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 49 6e  nectionHandle(In
2d7c0 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 6f 77  tPtr db, bool ow
2d7d0 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20  nHandle)..      
2d7e0 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 77 6e        : this(own
2d7f0 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20  Handle)..       
2d800 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2d810 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2d820 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
2d830 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2d840 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2d850 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d860 20 20 20 20 20 20 20 74 68 69 73 2e 6f 77 6e 48         this.ownH
2d870 61 6e 64 6c 65 20 3d 20 6f 77 6e 48 61 6e 64 6c  andle = ownHandl
2d880 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2d890 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 64 62      SetHandle(db
2d8a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d8b0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
2d8c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d910 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
2d920 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
2d930 69 6f 6e 48 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f  ionHandle(bool o
2d940 77 6e 48 61 6e 64 6c 65 29 0d 0a 20 20 20 20 20  wnHandle)..     
2d950 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e         : base(In
2d960 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2d970 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54      {..#if COUNT
2d980 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2d990 20 20 20 20 20 69 66 20 28 6f 77 6e 48 61 6e 64       if (ownHand
2d9a0 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le)..           
2d9b0 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2d9c0 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Increment(ref D
2d9d0 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74  ebugData.connect
2d9e0 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
2d9f0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
2da00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  ....        prot
2da60 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62  ected override b
2da70 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c  ool ReleaseHandl
2da80 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
2da90 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2daa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2dab0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2dac0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2dad0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2dae0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2daf0 20 20 20 69 66 20 28 21 6f 77 6e 48 61 6e 64 6c     if (!ownHandl
2db00 65 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d  e) return true;.
2db10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2db20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
2db30 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
2db40 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2db50 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2db60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2db70 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61    IntPtr localHa
2db80 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b  ndle = Interlock
2db90 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20  ed.Exchange(..  
2dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbb0 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e    ref handle, In
2dbc0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23  tPtr.Zero);....#
2dbd0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
2dbe0 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
2dbf0 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e      if (localHan
2dc00 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  dle != IntPtr.Ze
2dc10 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2dc20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 43 6f           closeCo
2dc30 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73 2c 20 6c  nnection(this, l
2dc40 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 23 65  ocalHandle);..#e
2dc50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2dc60 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 48 61       if (localHa
2dc70 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2dc80 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2dc90 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2dca0 42 61 73 65 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63  Base.CloseConnec
2dcb0 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
2dcc0 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64 69 66  Handle);..#endif
2dcd0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
2dce0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2dcf0 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2dd00 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2dd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dd30 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65       Trace.Write
2dd40 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
2dd50 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
2dd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dd70 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2dd80 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2dd90 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2ddb0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a  CloseConnection:
2ddc0 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61 6e 64   {0}", localHand
2ddd0 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  le)); /* throw *
2dde0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ddf0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2de00 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2de10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de30 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c 73 65  }..#endif..#else
2de40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de50 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
2de60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2de70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2de80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61            if (ha
2de90 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ndle != IntPtr.Z
2dea0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2deb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ded0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
2dee0 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
2def0 74 68 69 73 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a  this, handle);..
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df10 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c          SetHandl
2df20 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  e(IntPtr.Zero);.
2df30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2df40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2df50 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2df60 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  f..#if COUNT_HAN
2df70 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2df80 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64       Interlocked
2df90 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2dfa0 65 62 75 67 44 61 74 61 2e 63 6f 6e 6e 65 63 74  ebugData.connect
2dfb0 69 6f 6e 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64  ionCount);..#end
2dfc0 69 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  if..#if DEBUG.. 
2dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2dfe0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2dff0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2e000 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
2e010 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
2e020 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2e030 20 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69       catch (SQLi
2e040 74 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a  teException e)..
2e050 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
2e060 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65     catch (SQLite
2e070 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64  Exception)..#end
2e080 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2e090 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
2e0a0 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
2e0b0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
2e0c0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0f0 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
2e100 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
2e110 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
2e120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e130 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
2e140 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2e150 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
2e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
2e170 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20  loseConnection: 
2e180 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20  {0}, exception: 
2e190 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
2e1b0 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74  andle, e)); /* t
2e1c0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2e1d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e1e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2e1f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2e200 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e210 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
2e220 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e230 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
2e240 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
2e250 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e260 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e270 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2e280 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2e290 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2e2a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2c0 20 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e     SetHandleAsIn
2e2d0 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20  valid();..      
2e2e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e2f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
2e300 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
2e310 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2e320 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
2e330 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2e340 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
2e350 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43  ///////....#if C
2e3b0 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  OUNT_HANDLE..   
2e3c0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
2e3d0 57 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d  WasReleasedOk().
2e3e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2e3f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2e400 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65  nterlocked.Decre
2e410 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61  ment(ref DebugDa
2e420 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75  ta.connectionCou
2e430 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
2e440 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2e450 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e4a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
2e4b0 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20 20 20  l OwnHandle..   
2e4c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e4d0 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
2e4e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
2e4f0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2e500 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
2e510 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2e520 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2e530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e540 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e550 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77         return ow
2e560 6e 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  nHandle;..      
2e570 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2e580 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e590 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e5a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2e5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2e5f0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2e600 69 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c  ide bool IsInval
2e610 69 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  id..        {.. 
2e620 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
2e630 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2e640 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2e650 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2e670 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2e680 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2e690 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e6b0 74 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20  turn (handle == 
2e6c0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
2e6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2e6e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2e6f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2e700 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2e750 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
2e760 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2e770 69 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72  ide string ToStr
2e780 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
2e790 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
2e7a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2e7b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
2e7c0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2e7d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2e7e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e7f0 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64       return hand
2e800 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  le.ToString();..
2e810 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2e820 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2e830 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
2e840 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e8a0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2e8b0 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20  StatementHandle 
2e8c0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50 72  Class..    // Pr
2e8d0 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61 74  ovides finalizat
2e8e0 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ion support for 
2e8f0 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74 65  unmanaged SQLite
2e900 20 73 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20   statements...  
2e910 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
2e920 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74  d class SQLiteSt
2e930 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 20 3a 20  atementHandle : 
2e940 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a  CriticalHandle..
2e950 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
2e960 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2e970 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e  WORK..        in
2e980 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20  ternal readonly 
2e990 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
2e9a0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
2e9b0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
2e9c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2ea10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
2ea20 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
2ea30 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20  ndle cnn;....   
2ea40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ea90 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2eaa0 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f  tatic implicit o
2eab0 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53  perator IntPtr(S
2eac0 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61  QLiteStatementHa
2ead0 6e 64 6c 65 20 73 74 6d 74 29 0d 0a 20 20 20 20  ndle stmt)..    
2eae0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2eaf0 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20 6e     if (stmt != n
2eb00 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2eb10 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
2eb20 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2eb30 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2eb40 20 20 20 20 6c 6f 63 6b 20 28 73 74 6d 74 2e 73      lock (stmt.s
2eb50 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2eb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2eb80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2eb90 73 74 6d 74 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20  stmt.handle;..  
2eba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ebb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ebd0 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
2ebe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ebf0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ec00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ec40 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
2ec50 6c 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  l SQLiteStatemen
2ec60 74 48 61 6e 64 6c 65 28 53 51 4c 69 74 65 43 6f  tHandle(SQLiteCo
2ec70 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63  nnectionHandle c
2ec80 6e 6e 2c 20 49 6e 74 50 74 72 20 73 74 6d 74 29  nn, IntPtr stmt)
2ec90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20  ..            : 
2eca0 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2ecb0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2ecc0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2ecd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2ece0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  ck (syncRoot)..#
2ecf0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2ed00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ed10 20 20 20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d        this.cnn =
2ed20 20 63 6e 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20   cnn;..         
2ed30 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
2ed40 28 73 74 6d 74 29 3b 0d 0a 20 20 20 20 20 20 20  (stmt);..       
2ed50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ed60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2ed70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2edc0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 53 74  private SQLiteSt
2edd0 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 28 29 0d  atementHandle().
2ede0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62  .            : b
2edf0 61 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29  ase(IntPtr.Zero)
2ee00 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2ee10 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20   COUNT_HANDLE.. 
2ee20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72             Inter
2ee30 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74  locked.Increment
2ee40 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73  (ref DebugData.s
2ee50 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d  tatementCount);.
2ee60 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2ee70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eec0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2eed0 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
2eee0 69 64 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65  ide bool Release
2eef0 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
2ef00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2ef10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2ef20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
2ef30 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2ef40 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2ef50 20 20 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61       IntPtr loca
2ef60 6c 48 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c  lHandle = Interl
2ef70 6f 63 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d  ocked.Exchange(.
2ef80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ef90 20 20 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c       ref handle,
2efa0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2efb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2efc0 20 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c    if (localHandl
2efd0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2efe0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2eff0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
2f000 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d  e.FinalizeStatem
2f010 65 6e 74 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  ent(cnn, localHa
2f020 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
2f030 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2f040 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
2f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f060 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2f070 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f080 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2f090 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2f0a0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2f0b0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0d0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
2f0e0 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
2f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f100 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53 74       "FinalizeSt
2f110 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c  atement: {0}", l
2f120 6f 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a  ocalHandle)); /*
2f130 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2f140 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2f160 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
2f170 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f180 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2f190 66 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  f..#else..      
2f1a0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2f1b0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
2f1c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1e0 20 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20    if (handle != 
2f1f0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f210 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f220 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2f230 69 74 65 42 61 73 65 2e 46 69 6e 61 6c 69 7a 65  iteBase.Finalize
2f240 53 74 61 74 65 6d 65 6e 74 28 63 6e 6e 2c 20 68  Statement(cnn, h
2f250 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2f260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f270 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74 50 74   SetHandle(IntPt
2f280 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
2f290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2f2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2b0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20   }..#endif..#if 
2f2c0 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
2f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2f2e0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
2f2f0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
2f300 61 2e 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74  a.statementCount
2f310 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20  );..#endif..#if 
2f320 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
2f330 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
2f340 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ue;..#endif..   
2f350 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20           }..#if 
2f360 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
2f370 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
2f380 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
2f390 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74  ch (SQLiteExcept
2f3a0 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20  ion e)..#else.. 
2f3b0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2f3c0 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f   (SQLiteExceptio
2f3d0 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
2f3e0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
2f3f0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
2f400 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a  & TRACE_HANDLE..
2f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f420 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2f430 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f440 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2f450 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70  e.WriteLine(Help
2f460 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
2f470 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2f480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f490 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
2f4a0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 20 20 20 20 20 20 22 46 69 6e 61 6c 69 7a 65 53        "FinalizeS
2f4d0 74 61 74 65 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65  tatement: {0}, e
2f4e0 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d  xception: {1}",.
2f4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f500 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c           handle,
2f510 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a   e)); /* throw *
2f520 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2f530 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2f540 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2f550 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2f560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f570 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
2f580 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2f590 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
2f5a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2f5b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2f5c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
2f5e0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
2f5f0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
2f600 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f610 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2f620 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2f630 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f640 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2f650 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d     }..#if DEBUG.
2f660 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2f670 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73  urn false;..#els
2f680 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
2f690 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e  eturn true;..#en
2f6a0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2f6b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2f6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f700 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48  /....#if COUNT_H
2f710 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70  ANDLE..        p
2f720 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c  ublic int WasRel
2f730 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20  easedOk()..     
2f740 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f750 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f    return Interlo
2f760 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72  cked.Decrement(r
2f770 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74 61  ef DebugData.sta
2f780 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20  tementCount);.. 
2f790 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2f7a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2f800 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
2f810 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
2f820 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f830 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
2f840 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2f850 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2f860 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2f870 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2f880 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2f890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f8a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f8b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f8c0 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
2f8d0 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
2f8e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f8f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2f900 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f910 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f950 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2f960 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
2f970 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
2f980 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
2f990 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2f9a0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
2f9b0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2f9c0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
2f9d0 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
2f9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa00 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
2fa10 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
2fa20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2fa30 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
2fa40 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
2fa50 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
2fa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2faa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
2fab0 67 69 6f 6e 20 53 51 4c 69 74 65 42 61 63 6b 75  gion SQLiteBacku
2fac0 70 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20  pHandle Class.. 
2fad0 20 20 20 2f 2f 20 50 72 6f 76 69 64 65 73 20 66     // Provides f
2fae0 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70  inalization supp
2faf0 6f 72 74 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65  ort for unmanage
2fb00 64 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70 20  d SQLite backup 
2fb10 6f 62 6a 65 63 74 73 2e 0d 0a 20 20 20 20 69 6e  objects...    in
2fb20 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2fb30 61 73 73 20 53 51 4c 69 74 65 42 61 63 6b 75 70  ass SQLiteBackup
2fb40 48 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61  Handle : Critica
2fb50 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  lHandle..    {..
2fb60 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2fb70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2fb80 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2fb90 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20  readonly object 
2fba0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
2fbb0 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e 64 69 66  bject();..#endif
2fbc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2fbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2fc20 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 6f 6e  rivate SQLiteCon
2fc30 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e  nectionHandle cn
2fc40 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
2fc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2fca0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
2fcb0 6d 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72  mplicit operator
2fcc0 20 49 6e 74 50 74 72 28 53 51 4c 69 74 65 42 61   IntPtr(SQLiteBa
2fcd0 63 6b 75 70 48 61 6e 64 6c 65 20 62 61 63 6b 75  ckupHandle backu
2fce0 70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  p)..        {.. 
2fcf0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
2fd00 61 63 6b 75 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ackup != null)..
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2fd20 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2fd30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2fd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2fd50 63 6b 20 28 62 61 63 6b 75 70 2e 73 79 6e 63 52  ck (backup.syncR
2fd60 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2fd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd90 20 20 20 20 20 72 65 74 75 72 6e 20 62 61 63 6b       return back
2fda0 75 70 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  up.handle;..    
2fdb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2fdc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2fdd0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2fde0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2fdf0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2fe00 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2fe10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2fe50 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2fe60 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
2fe70 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  le(SQLiteConnect
2fe80 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49  ionHandle cnn, I
2fe90 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20  ntPtr backup).. 
2fea0 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
2feb0 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2fec0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2fed0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2fee0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2fef0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2ff00 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2ff10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ff20 20 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e     this.cnn = cn
2ff30 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
2ff40 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 62 61      SetHandle(ba
2ff50 63 6b 75 70 29 3b 0d 0a 20 20 20 20 20 20 20 20  ckup);..        
2ff60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2ff70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
2ffd0 72 69 76 61 74 65 20 53 51 4c 69 74 65 42 61 63  rivate SQLiteBac
2ffe0 6b 75 70 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  kupHandle()..   
2fff0 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
30000 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
30010 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
30020 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
30030 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
30040 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
30050 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
30060 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66  pCount);..#endif
30070 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
30080 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
300d0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
300e0 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f  ted override boo
300f0 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28  l ReleaseHandle(
30100 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
30110 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
30120 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
30130 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
30140 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
30150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
30160 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
30170 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
30180 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
30190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
301a0 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
301b0 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
301c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
301d0 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49 6e  ocalHandle != In
301e0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
301f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30200 53 51 4c 69 74 65 42 61 73 65 2e 46 69 6e 69 73  SQLiteBase.Finis
30210 68 42 61 63 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63  hBackup(cnn, loc
30220 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69  alHandle);....#i
30230 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
30240 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
30250 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
30260 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30270 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
30290 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
302a0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
302b0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
302c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302d0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
302e0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
302f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30300 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
30310 42 61 63 6b 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f  Backup: {0}", lo
30320 63 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20  calHandle)); /* 
30330 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
30340 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30350 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
30360 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
30370 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30380 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
30390 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
303a0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
303b0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
303c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
303d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303e0 20 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49   if (handle != I
303f0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30410 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30420 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
30430 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63  teBase.FinishBac
30440 6b 75 70 28 63 6e 6e 2c 20 68 61 6e 64 6c 65 29  kup(cnn, handle)
30450 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30460 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
30470 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f  ndle(IntPtr.Zero
30480 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30490 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
304a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
304b0 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e 54 5f  ndif..#if COUNT_
304c0 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
304d0 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63          Interloc
304e0 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65  ked.Decrement(re
304f0 66 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b  f DebugData.back
30500 75 70 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  upCount);..#endi
30510 66 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  f..#if DEBUG..  
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30530 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64  turn true;..#end
30540 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
30550 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  }..#if !NET_COMP
30560 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
30570 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20  HANDLE..        
30580 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
30590 65 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  eException e)..#
305a0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
305b0 20 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45    catch (SQLiteE
305c0 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69  xception)..#endi
305d0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
305e0 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
305f0 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48  CT_20 && TRACE_H
30600 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
30610 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
30620 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30640 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
30650 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
30660 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
30670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30680 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
30690 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
306a0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
306b0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 69               "Fi
306c0 6e 69 73 68 42 61 63 6b 75 70 3a 20 7b 30 7d 2c  nishBackup: {0},
306d0 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
306e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
306f0 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
30700 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
30710 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
30720 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30730 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
30740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30760 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
30770 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30780 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
30790 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
307a0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
307b0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
307d0 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
307e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
307f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
30810 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
30820 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
30830 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30840 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
30850 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
30860 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
30870 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
30880 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
30890 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
308a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
308b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308f0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
30900 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
30910 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
30920 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
30930 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30940 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
30950 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
30960 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62  (ref DebugData.b
30970 61 63 6b 75 70 43 6f 75 6e 74 29 3b 0d 0a 20 20  ackupCount);..  
30980 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
30990 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
309e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
309f0 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f  blic override bo
30a00 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20  ol IsInvalid..  
30a10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30a20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
30a30 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
30a40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
30a50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
30a60 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
30a70 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
30a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30a90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30aa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
30ab0 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72  handle == IntPtr
30ac0 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20  .Zero);..       
30ad0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30ae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30af0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
30b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44  ///////....#if D
30b50 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70 75  EBUG..        pu
30b60 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74  blic override st
30b70 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d  ring ToString().
30b80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
30b90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30ba0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30bb0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
30bc0 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
30bd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
30bf0 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53  eturn handle.ToS
30c00 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
30c10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30c20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
30c30 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
30c40 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
30ca0 69 6f 6e 20 53 51 4c 69 74 65 42 6c 6f 62 48 61  ion SQLiteBlobHa
30cb0 6e 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  ndle Class..    
30cc0 2f 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61  // Provides fina
30cd0 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
30ce0 20 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53   for unmanaged S
30cf0 51 4c 69 74 65 20 62 6c 6f 62 20 6f 62 6a 65 63  QLite blob objec
30d00 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ts...    interna
30d10 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
30d20 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20  QLiteBlobHandle 
30d30 3a 20 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65  : CriticalHandle
30d40 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41  ..    {..#if PLA
30d50 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
30d60 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
30d70 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c  internal readonl
30d80 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  y object syncRoo
30d90 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
30da0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
30db0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
30dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30e00 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
30e10 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
30e20 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20  Handle cnn;.... 
30e30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30e80 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
30e90 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74   static implicit
30ea0 20 6f 70 65 72 61 74 6f 72 20 49 6e 74 50 74 72   operator IntPtr
30eb0 28 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c  (SQLiteBlobHandl
30ec0 65 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20  e blob)..       
30ed0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30ee0 69 66 20 28 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c  if (blob != null
30ef0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
30f00 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
30f10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30f30 20 6c 6f 63 6b 20 28 62 6c 6f 62 2e 73 79 6e 63   lock (blob.sync
30f40 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
30f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30f70 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6c 6f        return blo
30f80 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  b.handle;..     
30f90 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30fa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30fb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
30fc0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
30fd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30fe0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31030 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
31040 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28  QLiteBlobHandle(
31050 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
31060 48 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50  Handle cnn, IntP
31070 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 20 20  tr blob)..      
31080 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
31090 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
310a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
310b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
310c0 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
310d0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
310e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
310f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
31100 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20  is.cnn = cnn;.. 
31110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
31120 65 74 48 61 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d  etHandle(blob);.
31130 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31140 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31150 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
311a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
311b0 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
311c0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
311d0 3a 20 62 61 73 65 28 49 6e 74 50 74 72 2e 5a 65  : base(IntPtr.Ze
311e0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
311f0 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45  #if COUNT_HANDLE
31200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
31210 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63 72 65 6d  terlocked.Increm
31220 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
31230 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23  a.blobCount);..#
31240 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
31250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
312b0 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
312c0 65 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61  e bool ReleaseHa
312d0 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  ndle()..        
312e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
312f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31300 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
31310 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31320 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
31330 20 20 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48     IntPtr localH
31340 61 6e 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63  andle = Interloc
31350 6b 65 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20  ked.Exchange(.. 
31360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31370 20 20 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49     ref handle, I
31380 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a  ntPtr.Zero);....
31390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
313a0 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
313b0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
313c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
313d0 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e       SQLiteBase.
313e0 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c  CloseBlob(cnn, l
313f0 6f 63 61 6c 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a  ocalHandle);....
31400 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
31410 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
31420 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
31430 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
31440 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31460 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
31470 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
31480 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
31490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314a0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
314b0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
314c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
314d0 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
314e0 65 42 6c 6f 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63  eBlob: {0}", loc
314f0 61 6c 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74  alHandle)); /* t
31500 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
31510 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31520 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
31530 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
31540 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31550 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
31560 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
31570 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
31580 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
31590 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
315a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315b0 69 66 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e  if (handle != In
315c0 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
315d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
315f0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
31600 65 42 61 73 65 2e 43 6c 6f 73 65 42 6c 6f 62 28  eBase.CloseBlob(
31610 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  cnn, handle);.. 
31620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31630 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
31640 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31660 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31670 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
31680 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
31690 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
316a0 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
316b0 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
316c0 62 75 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e  bugData.blobCoun
316d0 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 69 66  t);..#endif..#if
316e0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
316f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
31700 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
31710 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
31720 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
31730 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45   && TRACE_HANDLE
31740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
31750 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
31760 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d 0a  tion e)..#else..
31770 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
31780 68 20 28 53 51 4c 69 74 65 45 78 63 65 70 74 69  h (SQLiteExcepti
31790 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  on)..#endif..   
317a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
317b0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
317c0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
317d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
317e0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
317f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31800 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
31810 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
31820 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
31830 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
31840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31850 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
31860 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
31870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31880 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f         "CloseBlo
31890 62 3a 20 7b 30 7d 2c 20 65 78 63 65 70 74 69 6f  b: {0}, exceptio
318a0 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  n: {1}",..      
318b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318c0 20 20 68 61 6e 64 6c 65 2c 20 65 29 29 3b 20 2f    handle, e)); /
318d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
318e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
318f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31900 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
31910 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31920 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
31930 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
31940 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
31950 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
31960 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
31970 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
31980 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
31990 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
319a0 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  Root)..#endif.. 
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
319c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
319d0 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65 41        SetHandleA
319e0 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a 20 20 20  sInvalid();..   
319f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
31a00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
31a10 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
31a20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
31a30 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  se;..#else..    
31a40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
31a50 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
31a60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
31a70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
31ac0 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
31ad0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
31ae0 6e 74 20 57 61 73 52 65 6c 65 61 73 65 64 4f 6b  nt WasReleasedOk
31af0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
31b00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31b10 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65  n Interlocked.De
31b20 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75  crement(ref Debu
31b30 67 44 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29  gData.blobCount)
31b40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
31b50 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
31b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b70 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
31bb0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31bc0 64 65 20 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69  de bool IsInvali
31bd0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
31be0 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
31bf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31c00 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
31c10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
31c20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
31c30 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  k (syncRoot)..#e
31c40 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
31c50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31c60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31c70 75 72 6e 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49  urn (handle == I
31c80 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
31c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31cb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31cc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31d10 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
31d20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
31d30 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
31d40 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng()..        {.
31d50 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
31d60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
31d70 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
31d80 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e   (syncRoot)..#en
31d90 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
31da0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31db0 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e 64 6c      return handl
31dc0 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
31dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31de0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
31df0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
31e00 72 65 67 69 6f 6e 0d 0a 7d 0d 0a                 region..}..