System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ce07a60bc0ccb8a7589b155693341ca654c282e3:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61  System.Globaliza
0170: 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 54 52 41  tion;....#if TRA
0180: 43 45 5f 44 45 54 45 43 54 49 4f 4e 20 7c 7c 20  CE_DETECTION || 
0190: 54 52 41 43 45 5f 53 48 41 52 45 44 20 7c 7c 20  TRACE_SHARED || 
01a0: 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 20 7c 7c  TRACE_PRELOAD ||
01b0: 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
01c0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69   using System.Di
01d0: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e 64  agnostics;..#end
01e0: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
01f0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
0200: 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75 73 69  .Generic;..  usi
0210: 6e 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 20  ng System.IO;.. 
0220: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 65   using System.Re
0230: 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23 69 66  flection;....#if
0240: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0250: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 75  CTFRAMEWORK..  u
0260: 73 69 6e 67 20 53 79 73 74 65 6d 2e 53 65 63 75  sing System.Secu
0270: 72 69 74 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rity;..#endif...
0280: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0290: 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53  Runtime.InteropS
02a0: 65 72 76 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20  ervices;....#if 
02b0: 28 4e 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34  (NET_40 || NET_4
02c0: 35 20 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20  5 || NET_451 || 
02d0: 4e 45 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34  NET_452 || NET_4
02e0: 36 20 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20  6 || NET_461 || 
02f0: 4e 45 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34  NET_462 || NET_4
0300: 37 20 7c 7c 20 4e 45 54 5f 34 37 31 20 7c 7c 20  7 || NET_471 || 
0310: 4e 45 54 5f 34 37 32 29 20 26 26 20 21 50 4c 41  NET_472) && !PLA
0320: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0330: 4d 45 57 4f 52 4b 0d 0a 20 20 75 73 69 6e 67 20  MEWORK..  using 
0340: 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 56  System.Runtime.V
0350: 65 72 73 69 6f 6e 69 6e 67 3b 0d 0a 23 65 6e 64  ersioning;..#end
0360: 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79  if....  using Sy
0370: 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 23 69  stem.Text;....#i
0380: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
0390: 41 43 54 46 52 41 4d 45 57 4f 52 4b 20 7c 7c 20  ACTFRAMEWORK || 
03a0: 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
03b0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 68 72  using System.Thr
03c0: 65 61 64 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d  eading;..#endif.
03d0: 0a 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  ...  using Syste
03e0: 6d 2e 58 6d 6c 3b 0d 0a 0d 0a 20 20 23 72 65 67  m.Xml;....  #reg
03f0: 69 6f 6e 20 44 65 62 75 67 20 44 61 74 61 20 53  ion Debug Data S
0400: 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 23 69 66  tatic Class..#if
0410: 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 20 7c 7c   COUNT_HANDLE ||
0420: 20 44 45 42 55 47 0d 0a 20 20 2f 2f 2f 20 3c 73   DEBUG..  /// <s
0430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
0440: 68 69 73 20 63 6c 61 73 73 20 65 6e 63 61 70 73  his class encaps
0450: 75 6c 61 74 65 73 20 73 6f 6d 65 20 74 72 61 63  ulates some trac
0460: 6b 69 6e 67 20 64 61 74 61 20 74 68 61 74 20 69  king data that i
0470: 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67  s used for debug
0480: 67 69 6e 67 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20  ging..  /// and 
0490: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
04a0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
04b0: 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ry>..  internal 
04c0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 44 65 62  static class Deb
04d0: 75 67 44 61 74 61 0d 0a 20 20 7b 0d 0a 20 20 20  ugData..  {..   
04e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
04f0: 74 65 20 44 61 74 61 0d 0a 23 69 66 20 44 45 42  te Data..#if DEB
0500: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0510: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0520: 2f 2f 20 54 68 69 73 20 6c 6f 63 6b 20 69 73 20  // This lock is 
0530: 75 73 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20  used to protect 
0540: 73 65 76 65 72 61 6c 20 73 74 61 74 69 63 20 66  several static f
0550: 69 65 6c 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  ields...      //
0560: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0570: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0580: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  ic readonly obje
0590: 63 74 20 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  ct staticSyncRoo
05a0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
05b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
05c0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
0610: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 72        #region Cr
0620: 69 74 69 63 61 6c 20 48 61 6e 64 6c 65 20 43 6f  itical Handle Co
0630: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0640: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 43 4f 55  d Only)..#if COU
0650: 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
0660: 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
0670: 54 45 3a 20 54 68 65 73 65 20 63 6f 75 6e 74 73  TE: These counts
0680: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 74   represent the t
0690: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
06a0: 75 74 73 74 61 6e 64 69 6e 67 0d 0a 20 20 20 20  utstanding..    
06b0: 20 20 2f 2f 20 20 20 20 20 20 20 28 6e 6f 6e 2d    //       (non-
06c0: 64 69 73 70 6f 73 65 64 29 20 43 72 69 74 69 63  disposed) Critic
06d0: 61 6c 48 61 6e 64 6c 65 20 64 65 72 69 76 65 64  alHandle derived
06e0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
06f0: 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  s..      //     
0700: 20 20 63 72 65 61 74 65 64 20 62 79 20 74 68 69    created by thi
0710: 73 20 6c 69 62 72 61 72 79 20 61 6e 64 20 61 72  s library and ar
0720: 65 20 70 72 69 6d 61 72 69 6c 79 20 66 6f 72 20  e primarily for 
0730: 75 73 65 20 62 79 0d 0a 20 20 20 20 20 20 2f 2f  use by..      //
0740: 20 20 20 20 20 20 20 74 68 65 20 74 65 73 74 20         the test 
0750: 73 75 69 74 65 2e 20 20 54 68 65 73 65 20 63 6f  suite.  These co
0760: 75 6e 74 73 20 61 72 65 20 69 6e 63 72 65 6d 65  unts are increme
0770: 6e 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  nted by the..   
0780: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 6f     //       asso
0790: 63 69 61 74 65 64 20 63 6f 6e 73 74 72 75 63 74  ciated construct
07a0: 6f 72 73 20 61 6e 64 20 61 72 65 20 64 65 63 72  ors and are decr
07b0: 65 6d 65 6e 74 65 64 20 75 70 6f 6e 20 74 68 65  emented upon the
07c0: 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
07d0: 20 73 75 63 63 65 73 73 66 75 6c 20 63 6f 6d 70   successful comp
07e0: 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 73  letion of the as
07f0: 73 6f 63 69 61 74 65 64 20 52 65 6c 65 61 73 65  sociated Release
0800: 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 2f 2f  Handle..      //
0810: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 73 2e 0d         methods..
0820: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
0830: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
0840: 20 69 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 43   int connectionC
0850: 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 69 6e 74  ount;..      int
0860: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74  ernal static int
0870: 20 73 74 61 74 65 6d 65 6e 74 43 6f 75 6e 74 3b   statementCount;
0880: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
0890: 20 73 74 61 74 69 63 20 69 6e 74 20 62 61 63 6b   static int back
08a0: 75 70 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  upCount;..      
08b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
08c0: 69 6e 74 20 62 6c 6f 62 43 6f 75 6e 74 3b 0d 0a  int blobCount;..
08d0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23 65  #endif..      #e
08e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
08f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0940: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 65 74       #region Set
0950: 74 69 6e 67 73 20 52 65 61 64 20 43 6f 75 6e 74  tings Read Count
0960: 73 20 28 44 65 62 75 67 20 42 75 69 6c 64 20 4f  s (Debug Build O
0970: 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42 55 47 0d  nly)..#if DEBUG.
0980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0990: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
09a0: 54 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20  This dictionary 
09b0: 73 74 6f 72 65 73 20 74 68 65 20 72 65 61 64 20  stores the read 
09c0: 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65 20 72  counts for the r
09d0: 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  untime configura
09e0: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
09f0: 73 65 74 74 69 6e 67 73 2e 20 20 54 68 69 73 20  settings.  This 
0a00: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f  information is o
0a10: 6e 6c 79 20 72 65 63 6f 72 64 65 64 20 77 68 65  nly recorded whe
0a20: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0a30: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22 44 65  e..      /// "De
0a40: 62 75 67 22 20 62 75 69 6c 64 20 63 6f 6e 66 69  bug" build confi
0a50: 67 75 72 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  guration...     
0a60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0a70: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
0a80: 74 61 74 69 63 20 44 69 63 74 69 6f 6e 61 72 79  tatic Dictionary
0a90: 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 20 73 65  <string, int> se
0aa0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 3b  ttingReadCounts;
0ab0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
0b10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0b20: 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63 74 69    /// This dicti
0b30: 6f 6e 61 72 79 20 73 74 6f 72 65 73 20 74 68 65  onary stores the
0b40: 20 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72   read counts for
0b50: 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
0b60: 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20  figuration..    
0b70: 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73 20 76    /// settings v
0b80: 69 61 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  ia the XML confi
0b90: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 20 20  guration file.  
0ba0: 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  This information
0bb0: 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
0bc0: 2f 2f 2f 20 72 65 63 6f 72 64 65 64 20 77 68 65  /// recorded whe
0bd0: 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68  n compiled in th
0be0: 65 20 22 44 65 62 75 67 22 20 62 75 69 6c 64 20  e "Debug" build 
0bf0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0d 0a  configuration...
0c00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0c10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
0c20: 61 74 65 20 73 74 61 74 69 63 20 44 69 63 74 69  ate static Dicti
0c30: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
0c40: 74 3e 20 73 65 74 74 69 6e 67 46 69 6c 65 52 65  t> settingFileRe
0c50: 61 64 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69  adCounts;..#endi
0c60: 66 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  f..      #endreg
0c70: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0cd0: 23 72 65 67 69 6f 6e 20 4f 74 68 65 72 20 43 6f  #region Other Co
0ce0: 75 6e 74 73 20 28 44 65 62 75 67 20 42 75 69 6c  unts (Debug Buil
0cf0: 64 20 4f 6e 6c 79 29 0d 0a 23 69 66 20 44 45 42  d Only)..#if DEB
0d00: 55 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  UG..      /// <s
0d10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
0d20: 2f 2f 20 54 68 69 73 20 64 69 63 74 69 6f 6e 61  // This dictiona
0d30: 72 79 20 73 74 6f 72 65 73 20 6d 69 73 63 65 6c  ry stores miscel
0d40: 6c 61 6e 65 6f 75 73 20 63 6f 75 6e 74 73 20 75  laneous counts u
0d50: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
0d60: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 75 72  g..      /// pur
0d70: 70 6f 73 65 73 2e 20 20 54 68 69 73 20 69 6e 66  poses.  This inf
0d80: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  ormation is only
0d90: 20 72 65 63 6f 72 64 65 64 20 77 68 65 6e 20 63   recorded when c
0da0: 6f 6d 70 69 6c 65 64 20 69 6e 20 74 68 65 0d 0a  ompiled in the..
0db0: 20 20 20 20 20 20 2f 2f 2f 20 22 44 65 62 75 67        /// "Debug
0dc0: 22 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75 72  " build configur
0dd0: 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
0de0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0df0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0e00: 69 63 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ic Dictionary<st
0e10: 72 69 6e 67 2c 20 69 6e 74 3e 20 6f 74 68 65 72  ring, int> other
0e20: 43 6f 75 6e 74 73 3b 0d 0a 23 65 6e 64 69 66 0d  Counts;..#endif.
0e30: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
0e40: 6e 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  n..      #endreg
0e50: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0eb0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
0ec0: 65 74 68 6f 64 73 0d 0a 23 69 66 20 44 45 42 55  ethods..#if DEBU
0ed0: 47 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  G..      /// <su
0ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0ef0: 2f 20 43 72 65 61 74 65 73 20 64 69 63 74 69 6f  / Creates dictio
0f00: 6e 61 72 69 65 73 20 75 73 65 64 20 74 6f 20 73  naries used to s
0f10: 74 6f 72 65 20 74 68 65 20 72 65 61 64 20 63 6f  tore the read co
0f20: 75 6e 74 73 20 66 6f 72 20 65 61 63 68 20 6f 66  unts for each of
0f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
0f40: 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
0f50: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 20  ation settings. 
0f60: 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   These numbers a
0f70: 72 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20  re used for..   
0f80: 20 20 20 2f 2f 2f 20 64 65 62 75 67 67 69 6e 67     /// debugging
0f90: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
0fa0: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
0fb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0fc0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
0fd0: 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 69 74  static void Init
0fe0: 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20 20 20  ialize()..      
0ff0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63  {..          loc
1000: 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
1010: 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  t)..          {.
1020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1030: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1040: 20 2f 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65   // NOTE: Create
1050: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 69 65   the dictionarie
1060: 73 20 6f 66 20 73 74 61 74 69 73 74 69 63 73 20  s of statistics 
1070: 74 68 61 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20  that will..     
1080: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1090: 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 75    contain the nu
10a0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
10b0: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
10c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d0: 2f 2f 20 20 20 20 20 20 20 68 61 73 20 62 65 65  //       has bee
10e0: 6e 20 72 65 61 64 2e 0d 0a 20 20 20 20 20 20 20  n read...       
10f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1100: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
1110: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d  tingReadCounts =
1120: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1130: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
1140: 6e 67 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e  ngReadCounts = n
1150: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
1160: 72 69 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d  ring, int>();...
1170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1180: 66 20 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65  f (settingFileRe
1190: 61 64 43 6f 75 6e 74 73 20 3d 3d 20 6e 75 6c 6c  adCounts == null
11a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11b0: 20 20 20 20 20 73 65 74 74 69 6e 67 46 69 6c 65       settingFile
11c0: 52 65 61 64 43 6f 75 6e 74 73 20 3d 20 6e 65 77  ReadCounts = new
11d0: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
11e0: 6e 67 2c 20 69 6e 74 3e 28 29 3b 0d 0a 0d 0a 20  ng, int>();.... 
11f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1200: 28 6f 74 68 65 72 43 6f 75 6e 74 73 20 3d 3d 20  (otherCounts == 
1210: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1220: 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f           otherCo
1230: 75 6e 74 73 20 3d 20 6e 65 77 20 44 69 63 74 69  unts = new Dicti
1240: 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 69 6e  onary<string, in
1250: 74 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  t>();..         
1260: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1270: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
12d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12e0: 20 51 75 65 72 69 65 73 20 74 68 65 20 72 65 61   Queries the rea
12f0: 64 20 63 6f 75 6e 74 73 20 66 6f 72 20 74 68 65  d counts for the
1300: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
1310: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e  ration settings.
1320: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73  ..      /// Thes
1330: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
1340: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
1350: 20 61 6e 64 20 74 65 73 74 69 6e 67 20 70 75 72   and testing pur
1360: 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20  poses only...   
1370: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1380: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
1390: 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46 69 6c  ram name="viaFil
13a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  e">..      /// N
13b0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
13c0: 70 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67  pecified setting
13d0: 73 20 77 65 72 65 20 72 65 61 64 20 66 72 6f 6d  s were read from
13e0: 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20   the XML..      
13f0: 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  /// configuratio
1400: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
1410: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1420: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f  ..      /// A co
1440: 70 79 20 6f 66 20 74 68 65 20 73 74 61 74 69 73  py of the statis
1450: 74 69 63 73 20 66 6f 72 20 74 68 65 20 73 70 65  tics for the spe
1460: 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20 63  cified runtime c
1470: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
1480: 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 73      /// settings
1490: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
14a0: 65 79 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  ey are not avail
14b0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  able...      ///
14c0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
14d0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
14e0: 20 6f 62 6a 65 63 74 20 47 65 74 53 65 74 74 69   object GetSetti
14f0: 6e 67 52 65 61 64 43 6f 75 6e 74 73 28 0d 0a 20  ngReadCounts(.. 
1500: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69           bool vi
1510: 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  aFile..         
1520: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
1530: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61         lock (sta
1540: 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  ticSyncRoot)..  
1550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1560: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 69 61           if (via
1570: 46 69 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  File)..         
1580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1590: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
15a0: 74 74 69 6e 67 46 69 6c 65 52 65 61 64 43 6f 75  ttingFileReadCou
15b0: 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  nts == null)..  
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1600: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
1610: 6e 67 2c 20 69 6e 74 3e 28 73 65 74 74 69 6e 67  ng, int>(setting
1620: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 29 3b  FileReadCounts);
1630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1640: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1650: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1670: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1680: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
1690: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 69 63    return new Dic
16e0: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
16f0: 69 6e 74 3e 28 73 65 74 74 69 6e 67 52 65 61 64  int>(settingRead
1700: 43 6f 75 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20  Counts);..      
1710: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1720: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
1730: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
1740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1780: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
1790: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17a0: 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74 68 65 20   /// Clears the 
17b0: 72 65 61 64 20 63 6f 75 6e 74 73 20 66 6f 72 20  read counts for 
17c0: 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  the runtime conf
17d0: 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e  iguration settin
17e0: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  gs...      /// T
17f0: 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65  hese numbers are
1800: 20 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67   used for debugg
1810: 69 6e 67 20 61 6e 64 20 74 65 73 74 69 6e 67 20  ing and testing 
1820: 70 75 72 70 6f 73 65 73 20 6f 6e 6c 79 2e 0d 0a  purposes only...
1830: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1840: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
1850: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61  <param name="via
1860: 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  File">..      //
1870: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1880: 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
1890: 69 6e 67 73 20 77 65 72 65 20 72 65 61 64 20 66  ings were read f
18a0: 72 6f 6d 20 74 68 65 20 58 4d 4c 0d 0a 20 20 20  rom the XML..   
18b0: 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61     /// configura
18c0: 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20  tion file...    
18d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18e0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
18f0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 53 65  tic void ClearSe
1900: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 28  ttingReadCounts(
1910: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c  ..          bool
1920: 20 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20   viaFile..      
1930: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
1940: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1950: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
1960: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1980: 76 69 61 46 69 6c 65 29 0d 0a 20 20 20 20 20 20  viaFile)..      
1990: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
19b0: 28 73 65 74 74 69 6e 67 46 69 6c 65 52 65 61 64  (settingFileRead
19c0: 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d  Counts != null).
19d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e0: 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46 69         settingFi
19f0: 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 43 6c 65  leReadCounts.Cle
1a00: 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ar();..         
1a10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a20: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a50: 66 20 28 73 65 74 74 69 6e 67 52 65 61 64 43 6f  f (settingReadCo
1a60: 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  unts != null).. 
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a80: 20 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64       settingRead
1a90: 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28 29 3b 0d  Counts.Clear();.
1aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
1ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
1ac0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 63 72  ..      /// Incr
1b40: 65 6d 65 6e 74 73 20 74 68 65 20 72 65 61 64 20  ements the read 
1b50: 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 73 70  count for the sp
1b60: 65 63 69 66 69 65 64 20 72 75 6e 74 69 6d 65 20  ecified runtime 
1b70: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  configuration.. 
1b80: 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67       /// setting
1b90: 2e 20 20 54 68 65 73 65 20 6e 75 6d 62 65 72 73  .  These numbers
1ba0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 64 65   are used for de
1bb0: 62 75 67 67 69 6e 67 20 61 6e 64 20 74 65 73 74  bugging and test
1bc0: 69 6e 67 20 70 75 72 70 6f 73 65 73 0d 0a 20 20  ing purposes..  
1bd0: 20 20 20 20 2f 2f 2f 20 6f 6e 6c 79 2e 0d 0a 20      /// only... 
1be0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1bf0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
1c00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
1c10: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
1c20: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65  e name of the se
1c30: 74 74 69 6e 67 20 62 65 69 6e 67 20 72 65 61 64  tting being read
1c40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
1c50: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
1c60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69   <param name="vi
1c70: 61 46 69 6c 65 22 3e 0d 0a 20 20 20 20 20 20 2f  aFile">..      /
1c80: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
1c90: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74  he specified set
1ca0: 74 69 6e 67 20 69 73 20 62 65 69 6e 67 20 72 65  ting is being re
1cb0: 61 64 20 66 72 6f 6d 20 74 68 65 20 58 4d 4c 0d  ad from the XML.
1cc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69  .      /// confi
1cd0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
1ce0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cf0: 6d 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  m>..      public
1d00: 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 63   static void Inc
1d10: 72 65 6d 65 6e 74 53 65 74 74 69 6e 67 52 65 61  rementSettingRea
1d20: 64 43 6f 75 6e 74 28 0d 0a 20 20 20 20 20 20 20  dCount(..       
1d30: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
1d40: 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
1d50: 76 69 61 46 69 6c 65 0d 0a 20 20 20 20 20 20 20  viaFile..       
1d60: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
1d70: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
1d80: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
1d90: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1da0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1dc0: 4e 4f 54 45 3a 20 55 70 64 61 74 65 20 73 74 61  NOTE: Update sta
1dd0: 74 69 73 74 69 63 73 20 66 6f 72 20 74 68 69 73  tistics for this
1de0: 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65 2e 0d   setting value..
1df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1e00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e10: 20 69 66 20 28 76 69 61 46 69 6c 65 29 0d 0a 20   if (viaFile).. 
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e40: 20 20 69 66 20 28 73 65 74 74 69 6e 67 46 69 6c    if (settingFil
1e50: 65 52 65 61 64 43 6f 75 6e 74 73 20 21 3d 20 6e  eReadCounts != n
1e60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e90: 20 69 6e 74 20 63 6f 75 6e 74 3b 0d 0a 0d 0a 20   int count;.... 
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb0: 20 20 20 20 20 69 66 20 28 73 65 74 74 69 6e 67       if (setting
1ec0: 46 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 54  FileReadCounts.T
1ed0: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
1ee0: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f10: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 5b 6e 61  ileReadCounts[na
1f20: 6d 65 5d 20 3d 20 63 6f 75 6e 74 20 2b 20 31 3b  me] = count + 1;
1f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f40: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f60: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 46          settingF
1f70: 69 6c 65 52 65 61 64 43 6f 75 6e 74 73 2e 41 64  ileReadCounts.Ad
1f80: 64 28 6e 61 6d 65 2c 20 31 29 3b 0d 0a 20 20 20  d(name, 1);..   
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fc0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
1fd0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fe0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65            if (se
1ff0: 74 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 20  ttingReadCounts 
2000: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2010: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2030: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2040: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2050: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 65 74           if (set
2060: 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 73 2e 54  tingReadCounts.T
2070: 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
2080: 20 6f 75 74 20 63 6f 75 6e 74 29 29 0d 0a 20 20   out count))..  
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a0: 20 20 20 20 20 20 20 20 73 65 74 74 69 6e 67 52          settingR
20b0: 65 61 64 43 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20  eadCounts[name] 
20c0: 3d 20 63 6f 75 6e 74 20 2b 20 31 3b 0d 0a 20 20  = count + 1;..  
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
20f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2100: 20 20 20 20 73 65 74 74 69 6e 67 52 65 61 64 43      settingReadC
2110: 6f 75 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20  ounts.Add(name, 
2120: 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1);..           
2130: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2140: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2150: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
2160: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
2170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
21c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21d0: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 74 68 65   /// Queries the
21e0: 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68 65 73   counters.  Thes
21f0: 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 75 73  e numbers are us
2200: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
2210: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
2220: 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73  testing purposes
2230: 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f   only...      //
2240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2250: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2260: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  >..      /// A c
2270: 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 75 6e 74  opy of the count
2280: 65 72 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  ers -OR- null if
2290: 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 61 76   they are not av
22a0: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
22b0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
22c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
22d0: 74 69 63 20 6f 62 6a 65 63 74 20 47 65 74 4f 74  tic object GetOt
22e0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
22f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2300: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2310: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2330: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2340: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2360: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
2370: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2380: 72 6e 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72  rn new Dictionar
2390: 79 3c 73 74 72 69 6e 67 2c 20 69 6e 74 3e 28 6f  y<string, int>(o
23a0: 74 68 65 72 43 6f 75 6e 74 73 29 3b 0d 0a 20 20  therCounts);..  
23b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
23d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
2420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2430: 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74      /// Clears t
2440: 68 65 20 63 6f 75 6e 74 65 72 73 2e 20 20 54 68  he counters.  Th
2450: 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20  ese numbers are 
2460: 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69  used for debuggi
2470: 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f  ng and..      //
2480: 2f 20 74 65 73 74 69 6e 67 20 70 75 72 70 6f 73  / testing purpos
2490: 65 73 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  es only...      
24a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
24b0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
24c0: 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72 4f 74  tic void ClearOt
24d0: 68 65 72 43 6f 75 6e 74 73 28 29 0d 0a 20 20 20  herCounts()..   
24e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24f0: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
2500: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2510: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2520: 20 20 69 66 20 28 6f 74 68 65 72 43 6f 75 6e 74    if (otherCount
2530: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
2540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74                ot
2550: 68 65 72 43 6f 75 6e 74 73 2e 43 6c 65 61 72 28  herCounts.Clear(
2560: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
2570: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
2580: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e  y>..      /// In
25f0: 63 72 65 6d 65 6e 74 73 20 74 68 65 20 73 70 65  crements the spe
2600: 63 69 66 69 65 64 20 63 6f 75 6e 74 65 72 2e 0d  cified counter..
2610: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
2620: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
2630: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
2640: 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
2650: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
2660: 63 6f 75 6e 74 65 72 20 62 65 69 6e 67 20 69 6e  counter being in
2670: 63 72 65 6d 65 6e 74 65 64 2e 0d 0a 20 20 20 20  cremented...    
2680: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2690: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
26a0: 74 69 63 20 76 6f 69 64 20 49 6e 63 72 65 6d 65  tic void Increme
26b0: 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 0d 0a 20  ntOtherCount(.. 
26c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
26d0: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
26e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
26f0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74        lock (stat
2700: 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  icSyncRoot)..   
2710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2720: 20 20 20 20 20 20 20 20 69 66 20 28 6f 74 68 65          if (othe
2730: 72 43 6f 75 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  rCounts != null)
2740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2750: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2760: 20 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 0d       int count;.
2770: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2780: 20 20 20 20 20 69 66 20 28 6f 74 68 65 72 43 6f       if (otherCo
2790: 75 6e 74 73 2e 54 72 79 47 65 74 56 61 6c 75 65  unts.TryGetValue
27a0: 28 6e 61 6d 65 2c 20 6f 75 74 20 63 6f 75 6e 74  (name, out count
27b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
27c0: 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 43            otherC
27d0: 6f 75 6e 74 73 5b 6e 61 6d 65 5d 20 3d 20 63 6f  ounts[name] = co
27e0: 75 6e 74 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20  unt + 1;..      
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2810: 20 20 20 20 20 20 20 20 6f 74 68 65 72 43 6f 75          otherCou
2820: 6e 74 73 2e 41 64 64 28 6e 61 6d 65 2c 20 31 29  nts.Add(name, 1)
2830: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2840: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
2850: 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
2860: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
2870: 6f 6e 0d 0a 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  on..  }..#endif.
2880: 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d  .  #endregion...
2890: 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e0: 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 48 65  ....  #region He
28f0: 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 53 74 61  lper Methods Sta
2900: 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 2f 2f 2f  tic Class..  ///
2910: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
2920: 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63 6c  / This static cl
2930: 61 73 73 20 70 72 6f 76 69 64 65 73 20 73 6f 6d  ass provides som
2940: 65 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  e methods that a
2950: 72 65 20 73 68 61 72 65 64 20 62 65 74 77 65 65  re shared betwee
2960: 6e 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 6e 61 74  n the..  /// nat
2970: 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
2980: 6c 6f 61 64 65 72 20 61 6e 64 20 6f 74 68 65 72  loader and other
2990: 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20 2f 2f 2f   classes...  ///
29a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69   </summary>..  i
29b0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
29c0: 6c 61 73 73 20 48 65 6c 70 65 72 4d 65 74 68 6f  lass HelperMetho
29d0: 64 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23  ds..  {..      #
29e0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
29f0: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
2a00: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a10: 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c  ring DisplayNull
2a20: 4f 62 6a 65 63 74 20 3d 20 22 3c 6e 75 6c 6c 4f  Object = "<nullO
2a30: 62 6a 65 63 74 3e 22 3b 0d 0a 20 20 20 20 20 20  bject>";..      
2a40: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
2a50: 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d 70 74  ring DisplayEmpt
2a60: 79 53 74 72 69 6e 67 20 3d 20 22 3c 65 6d 70 74  yString = "<empt
2a70: 79 53 74 72 69 6e 67 3e 22 3b 0d 0a 20 20 20 20  yString>";..    
2a80: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2a90: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 53 74  string DisplaySt
2aa0: 72 69 6e 67 46 6f 72 6d 61 74 20 3d 20 22 5c 22  ringFormat = "\"
2ab0: 7b 30 7d 5c 22 22 3b 0d 0a 0d 0a 20 20 20 20 20  {0}\"";....     
2ac0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b10: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
2b20: 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79  t string Display
2b30: 4e 75 6c 6c 41 72 72 61 79 20 3d 20 22 3c 6e 75  NullArray = "<nu
2b40: 6c 6c 41 72 72 61 79 3e 22 3b 0d 0a 20 20 20 20  llArray>";..    
2b50: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2b60: 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 45 6d  string DisplayEm
2b70: 70 74 79 41 72 72 61 79 20 3d 20 22 3c 65 6d 70  ptyArray = "<emp
2b80: 74 79 41 72 72 61 79 3e 22 3b 0d 0a 0d 0a 20 20  tyArray>";....  
2b90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2be0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2bf0: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 4f  onst char ArrayO
2c00: 70 65 6e 20 3d 20 27 5b 27 3b 0d 0a 20 20 20 20  pen = '[';..    
2c10: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2c20: 73 74 72 69 6e 67 20 45 6c 65 6d 65 6e 74 53 65  string ElementSe
2c30: 70 61 72 61 74 6f 72 20 3d 20 22 2c 20 22 3b 0d  parator = ", ";.
2c40: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63  .      private c
2c50: 6f 6e 73 74 20 63 68 61 72 20 41 72 72 61 79 43  onst char ArrayC
2c60: 6c 6f 73 65 20 3d 20 27 5d 27 3b 0d 0a 0d 0a 20  lose = ']';.... 
2c70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cc0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
2cd0: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
2ce0: 63 68 61 72 5b 5d 20 53 70 61 63 65 43 68 61 72  char[] SpaceChar
2cf0: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  s = {..         
2d00: 20 27 5c 74 27 2c 20 27 5c 6e 27 2c 20 27 5c 72   '\t', '\n', '\r
2d10: 27 2c 20 27 5c 76 27 2c 20 27 5c 66 27 2c 20 27  ', '\v', '\f', '
2d20: 20 27 0d 0a 20 20 20 20 20 20 7d 3b 0d 0a 20 20   '..      };..  
2d30: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d90: 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69  /....      #regi
2da0: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
2db0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2dc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2dd0: 54 68 69 73 20 6c 6f 63 6b 20 69 73 20 75 73 65  This lock is use
2de0: 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65  d to protect the
2df0: 20 73 74 61 74 69 63 20 3c 73 65 65 20 63 72 65   static <see cre
2e00: 66 3d 22 69 73 4d 6f 6e 6f 22 20 2f 3e 20 61 6e  f="isMono" /> an
2e10: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  d..      /// <se
2e20: 65 20 63 72 65 66 3d 22 69 73 44 6f 74 4e 65 74  e cref="isDotNet
2e30: 43 6f 72 65 22 20 2f 3e 20 66 69 65 6c 64 73 2e  Core" /> fields.
2e40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
2e50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
2e60: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
2e70: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
2e80: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
2e90: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
2ea0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ef0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2f00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
2f10: 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c 79  his type is only
2f20: 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72 75   present when ru
2f30: 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a  nning on Mono...
2f40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2f50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
2f60: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
2f70: 6e 6c 79 20 73 74 72 69 6e 67 20 4d 6f 6e 6f 52  nly string MonoR
2f80: 75 6e 74 69 6d 65 54 79 70 65 20 3d 20 22 4d 6f  untimeType = "Mo
2f90: 6e 6f 2e 52 75 6e 74 69 6d 65 22 3b 0d 0a 0d 0a  no.Runtime";....
2fa0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
3000: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3010: 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e 6c  This type is onl
3020: 79 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20 72  y present when r
3030: 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e 45 54 20 43  unning on .NET C
3040: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ore...      /// 
3050: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
3080: 20 44 6f 74 4e 65 74 43 6f 72 65 4c 69 62 54 79   DotNetCoreLibTy
3090: 70 65 20 3d 20 22 53 79 73 74 65 6d 2e 43 6f 72  pe = "System.Cor
30a0: 65 4c 69 62 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  eLib";....      
30b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3100: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3110: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
3120: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
3130: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
3140: 6f 6e 20 4d 6f 6e 6f 2e 20 20 49 6e 69 74 69 61  on Mono.  Initia
3150: 6c 6c 79 20 6e 75 6c 6c 2c 20 69 74 20 69 73 0d  lly null, it is.
3160: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 20 62  .      /// set b
3170: 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  y the <see cref=
3180: 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65 74 68  "IsMono" /> meth
3190: 6f 64 20 6f 6e 20 69 74 73 20 66 69 72 73 74 20  od on its first 
31a0: 63 61 6c 6c 2e 20 20 4c 61 74 65 72 2c 20 69 74  call.  Later, it
31b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 72  ..      /// is r
31c0: 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d  eturned verbatim
31d0: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
31e0: 66 3d 22 49 73 4d 6f 6e 6f 22 20 2f 3e 20 6d 65  f="IsMono" /> me
31f0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
3200: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3210: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
3220: 63 20 62 6f 6f 6c 3f 20 69 73 4d 6f 6e 6f 20 3d  c bool? isMono =
3230: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
3290: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32a0: 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70 73 20        /// Keeps 
32b0: 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72  track of whether
32c0: 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
32d0: 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 20 20 49  on .NET Core.  I
32e0: 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c 0d 0a  nitially null,..
32f0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 69 73 20        /// it is 
3300: 73 65 74 20 62 79 20 74 68 65 20 3c 73 65 65 20  set by the <see 
3310: 63 72 65 66 3d 22 49 73 44 6f 74 4e 65 74 43 6f  cref="IsDotNetCo
3320: 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e  re" /> method on
3330: 20 69 74 73 20 66 69 72 73 74 0d 0a 20 20 20 20   its first..    
3340: 20 20 2f 2f 2f 20 63 61 6c 6c 2e 20 20 4c 61 74    /// call.  Lat
3350: 65 72 2c 20 69 74 20 69 73 20 72 65 74 75 72 6e  er, it is return
3360: 65 64 20 76 65 72 62 61 74 69 6d 20 62 79 20 74  ed verbatim by t
3370: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
3380: 65 65 20 63 72 65 66 3d 22 49 73 44 6f 74 4e 65  ee cref="IsDotNe
3390: 74 43 6f 72 65 22 20 2f 3e 20 6d 65 74 68 6f 64  tCore" /> method
33a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
33b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
33c0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
33d0: 6f 6c 3f 20 69 73 44 6f 74 4e 65 74 43 6f 72 65  ol? isDotNetCore
33e0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
33f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
3440: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3450: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4b 65 65 70  ..      /// Keep
3460: 73 20 74 72 61 63 6b 20 6f 66 20 77 68 65 74 68  s track of wheth
3470: 65 72 20 77 65 20 73 75 63 63 65 73 73 66 75 6c  er we successful
3480: 6c 79 20 69 6e 76 6f 6b 65 64 20 74 68 65 0d 0a  ly invoked the..
3490: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34a0: 72 65 66 3d 22 44 65 62 75 67 67 65 72 2e 42 72  ref="Debugger.Br
34b0: 65 61 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  eak" /> method. 
34c0: 20 49 6e 69 74 69 61 6c 6c 79 20 6e 75 6c 6c 2c   Initially null,
34d0: 20 69 74 20 69 73 20 73 65 74 20 62 79 0d 0a 20   it is set by.. 
34e0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
34f0: 65 20 63 72 65 66 3d 22 4d 61 79 62 65 42 72 65  e cref="MaybeBre
3500: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 20  akIntoDebugger" 
3510: 2f 3e 20 6d 65 74 68 6f 64 20 6f 6e 20 69 74 73  /> method on its
3520: 20 66 69 72 73 74 20 63 61 6c 6c 2e 0d 0a 20 20   first call...  
3530: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3540: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
3550: 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 64  e static bool? d
3560: 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e  ebuggerBreak = n
3570: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  ull;..      #end
3580: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35e0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
35f0: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
3600: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3610: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
3620: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
3630: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
3640: 65 73 73 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20  ess.  Only used 
3650: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a  for debugging...
3660: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3670: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
3680: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
3690: 20 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74   /// The ID of t
36a0: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
36b0: 73 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  ss -OR- zero if 
36c0: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
36d0: 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
36e0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
36f0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
3700: 61 74 69 63 20 69 6e 74 20 47 65 74 50 72 6f 63  atic int GetProc
3710: 65 73 73 49 64 28 29 0d 0a 20 20 20 20 20 20 7b  essId()..      {
3720: 0d 0a 20 20 20 20 20 20 20 20 20 20 50 72 6f 63  ..          Proc
3730: 65 73 73 20 70 72 6f 63 65 73 73 20 3d 20 50 72  ess process = Pr
3740: 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74  ocess.GetCurrent
3750: 50 72 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20  Process();....  
3760: 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63          if (proc
3770: 65 73 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ess == null)..  
3780: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3790: 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rn 0;....       
37a0: 20 20 20 72 65 74 75 72 6e 20 70 72 6f 63 65 73     return proces
37b0: 73 2e 49 64 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  s.Id;..      }..
37c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
37d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3810: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
3820: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
3830: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
3840: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73  ther or not this
3850: 20 61 73 73 65 6d 62 6c 79 20 69 73 20 72 75 6e   assembly is run
3860: 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f 2e 0d 0a 20  ning on Mono... 
3870: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3880: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
3890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
38a0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
38b0: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20 69 73  this assembly is
38c0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 4d 6f 6e 6f   running on Mono
38d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
38e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
38f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
3900: 6f 6c 20 49 73 4d 6f 6e 6f 28 29 0d 0a 20 20 20  ol IsMono()..   
3910: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3920: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  try..          {
3930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3940: 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63  lock (staticSync
3950: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
3960: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3970: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73            if (is
3980: 4d 6f 6e 6f 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Mono == null).. 
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 20 20 20 69 73 4d 6f 6e 6f 20 3d 20 28 54       isMono = (T
39b0: 79 70 65 2e 47 65 74 54 79 70 65 28 4d 6f 6e 6f  ype.GetType(Mono
39c0: 52 75 6e 74 69 6d 65 54 79 70 65 29 20 21 3d 20  RuntimeType) != 
39d0: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
39f0: 72 6e 20 28 62 6f 6f 6c 29 69 73 4d 6f 6e 6f 3b  rn (bool)isMono;
3a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a10: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
3a20: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
3a30: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
3a50: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
3a60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3a70: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
3a80: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  e;..      }.... 
3a90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3ae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3af0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
3b00: 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65  etermines whethe
3b10: 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 61 73  r or not this as
3b20: 73 65 6d 62 6c 79 20 69 73 20 72 75 6e 6e 69 6e  sembly is runnin
3b30: 67 20 6f 6e 20 2e 4e 45 54 20 43 6f 72 65 2e 0d  g on .NET Core..
3b40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
3b50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
3b60: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3b70: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
3b80: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20  f this assembly 
3b90: 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e  is running on .N
3ba0: 45 54 20 43 6f 72 65 2e 0d 0a 20 20 20 20 20 20  ET Core...      
3bb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3bc0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
3bd0: 74 69 63 20 62 6f 6f 6c 20 49 73 44 6f 74 4e 65  tic bool IsDotNe
3be0: 74 43 6f 72 65 28 29 0d 0a 20 20 20 20 20 20 7b  tCore()..      {
3bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
3c00: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
3c20: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3c40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3c50: 20 20 20 20 20 20 69 66 20 28 69 73 44 6f 74 4e        if (isDotN
3c60: 65 74 43 6f 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  etCore == null).
3c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c80: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 44 6f              isDo
3ca0: 74 4e 65 74 43 6f 72 65 20 3d 20 28 54 79 70 65  tNetCore = (Type
3cb0: 2e 47 65 74 54 79 70 65 28 0d 0a 20 20 20 20 20  .GetType(..     
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 44 6f 74 4e 65 74 43 6f 72 65 4c       DotNetCoreL
3ce0: 69 62 54 79 70 65 29 20 21 3d 20 6e 75 6c 6c 29  ibType) != null)
3cf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3d00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3d20: 72 6e 20 28 62 6f 6f 6c 29 69 73 44 6f 74 4e 65  rn (bool)isDotNe
3d30: 74 43 6f 72 65 3b 0d 0a 20 20 20 20 20 20 20 20  tCore;..        
3d40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3d50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
3d60: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
3d70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3d80: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
3d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
3da0: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
3db0: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
3dc0: 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
3dd0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3e30: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
3e40: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
3e50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3e60: 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20       /// Resets 
3e70: 74 68 65 20 63 61 63 68 65 64 20 76 61 6c 75 65  the cached value
3e80: 20 66 6f 72 20 74 68 65 20 22 50 72 65 4c 6f 61   for the "PreLoa
3e90: 64 53 51 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74  dSQLite_BreakInt
3ea0: 6f 44 65 62 75 67 67 65 72 22 0d 0a 20 20 20 20  oDebugger"..    
3eb0: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
3ec0: 69 6f 6e 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20  ion setting...  
3ed0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
3ee0: 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  y>..      intern
3ef0: 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 52  al static void R
3f00: 65 73 65 74 42 72 65 61 6b 49 6e 74 6f 44 65 62  esetBreakIntoDeb
3f10: 75 67 67 65 72 28 29 0d 0a 20 20 20 20 20 20 7b  ugger()..      {
3f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
3f30: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
3f40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
3f60: 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 6e 75  buggerBreak = nu
3f70: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ll;..          }
3f80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
3f90: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3fe0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3ff0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49  ry>..      /// I
4000: 66 20 74 68 65 20 22 50 72 65 4c 6f 61 64 53 51  f the "PreLoadSQ
4010: 4c 69 74 65 5f 42 72 65 61 6b 49 6e 74 6f 44 65  Lite_BreakIntoDe
4020: 62 75 67 67 65 72 22 20 63 6f 6e 66 69 67 75 72  bugger" configur
4030: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73  ation setting is
4040: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 73  ..      /// pres
4050: 65 6e 74 20 28 65 2e 67 2e 20 76 69 61 20 74 68  ent (e.g. via th
4060: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 29 2c 20  e environment), 
4070: 67 69 76 65 20 74 68 65 20 69 6e 74 65 72 61 63  give the interac
4080: 74 69 76 65 20 75 73 65 72 20 61 6e 0d 0a 20 20  tive user an..  
4090: 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e      /// opportun
40a0: 69 74 79 20 74 6f 20 61 74 74 61 63 68 20 61 20  ity to attach a 
40b0: 64 65 62 75 67 67 65 72 20 74 6f 20 74 68 65 20  debugger to the 
40c0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 3b  current process;
40d0: 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   otherwise,..   
40e0: 20 20 20 2f 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e     /// do nothin
40f0: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
4100: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4110: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
4120: 76 6f 69 64 20 4d 61 79 62 65 42 72 65 61 6b 49  void MaybeBreakI
4130: 6e 74 6f 44 65 62 75 67 67 65 72 28 29 0d 0a 20  ntoDebugger().. 
4140: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4150: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
4160: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
4170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4180: 20 20 20 20 69 66 20 28 64 65 62 75 67 67 65 72      if (debugger
4190: 42 72 65 61 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Break != null)..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20    return;..     
41c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
41d0: 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61      if (UnsafeNa
41e0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53  tiveMethods.GetS
41f0: 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
4200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
4210: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 72 65  reLoadSQLite_Bre
4220: 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 22 2c  akIntoDebugger",
4230: 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c 6c 29 0d   null) != null).
4240: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
4250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4270: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
4280: 6f 20 75 73 65 20 74 68 65 20 43 6f 6e 73 6f 6c  o use the Consol
4290: 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72  e in order to pr
42a0: 6f 6d 70 74 20 74 68 65 0d 0a 20 20 20 20 20 20  ompt the..      
42b0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
42c0: 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65   interactive use
42d0: 72 20 28 69 66 20 61 6e 79 29 2e 20 20 54 68 69  r (if any).  Thi
42e0: 73 20 6d 61 79 20 66 61 69 6c 20 66 6f 72 20 61  s may fail for a
42f0: 6e 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ny..            
4300: 20 20 2f 2f 20 20 20 20 20 20 20 6e 75 6d 62 65    //       numbe
4310: 72 20 6f 66 20 72 65 61 73 6f 6e 73 2e 20 20 45  r of reasons.  E
4320: 76 65 6e 20 69 6e 20 74 68 6f 73 65 20 63 61 73  ven in those cas
4330: 65 73 2c 20 77 65 20 73 74 69 6c 6c 0d 0a 20 20  es, we still..  
4340: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4350: 20 20 20 20 20 77 61 6e 74 20 74 6f 20 69 73 73       want to iss
4360: 75 65 20 74 68 65 20 61 63 74 75 61 6c 20 72 65  ue the actual re
4370: 71 75 65 73 74 20 74 6f 20 62 72 65 61 6b 20 69  quest to break i
4380: 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
4390: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
43a0: 64 65 62 75 67 67 65 72 2e 0d 0a 20 20 20 20 20  debugger...     
43b0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
43c0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
43d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
43e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
43f0: 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65     Console.Write
4400: 4c 69 6e 65 28 53 74 72 69 6e 67 46 6f 72 6d 61  Line(StringForma
4410: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
4420: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
4430: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
4440: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 74               "At
4460: 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
4470: 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20 22  to process {0} "
4480: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
4490: 20 20 20 20 20 20 20 20 20 20 22 61 6e 64 20 70            "and p
44a0: 72 65 73 73 20 61 6e 79 20 6b 65 79 20 74 6f 20  ress any key to 
44b0: 63 6f 6e 74 69 6e 75 65 2e 22 2c 0d 0a 20 20 20  continue.",..   
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44d0: 20 20 20 47 65 74 50 72 6f 63 65 73 73 49 64 28     GetProcessId(
44e0: 29 29 29 3b 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  )));....#if PLAT
44f0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
4500: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
4510: 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65           Console
4520: 2e 52 65 61 64 4c 69 6e 65 28 29 3b 0d 0a 23 65  .ReadLine();..#e
4530: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
4540: 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52         Console.R
4550: 65 61 64 4b 65 79 28 29 3b 0d 0a 23 65 6e 64 69  eadKey();..#endi
4560: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4570: 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   }..#if !NET_COM
4580: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
4590: 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20  _SHARED..       
45a0: 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
45b0: 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
45c0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
45d0: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
45e0: 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
45f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
4600: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
4610: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
4620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4630: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4640: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
4670: 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ine(HelperMethod
4680: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
4690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
46a0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
46b0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
46c0: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
46d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46e0: 20 20 22 46 61 69 6c 65 64 20 74 6f 20 69 73 73    "Failed to iss
46f0: 75 65 20 64 65 62 75 67 67 65 72 20 70 72 6f 6d  ue debugger prom
4700: 70 74 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  pt, " +..       
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4720: 20 20 20 22 7b 30 7d 20 6d 61 79 20 62 65 20 75     "{0} may be u
4730: 6e 75 73 61 62 6c 65 3a 20 7b 31 7d 22 2c 0d 0a  nusable: {1}",..
4740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4750: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
4760: 28 43 6f 6e 73 6f 6c 65 29 2c 20 65 29 29 3b 20  (Console), e)); 
4770: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
4790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
47a0: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
47e0: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
47f0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
4800: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
4810: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4820: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
4830: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4840: 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62 75              Debu
4850: 67 67 65 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 0d  gger.Break();...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4870: 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53     lock (staticS
4880: 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
4890: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
48a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48b0: 20 20 20 20 20 64 65 62 75 67 67 65 72 42 72 65       debuggerBre
48c0: 61 6b 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ak = true;..    
48d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
48e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
48f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4900: 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
4910: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4920: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
4930: 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
4940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4960: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
4970: 67 67 65 72 42 72 65 61 6b 20 3d 20 66 61 6c 73  ggerBreak = fals
4980: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
4990: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
49b0: 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow;..           
49c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
49d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  }..          els
49e0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  e..          {..
49f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
4a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4a10: 2f 2f 20 42 55 47 46 49 58 3a 20 54 68 65 72 65  // BUGFIX: There
4a20: 20 69 73 20 28 61 6c 6d 6f 73 74 29 20 6e 6f 20   is (almost) no 
4a30: 70 6f 69 6e 74 20 69 6e 20 63 68 65 63 6b 69 6e  point in checkin
4a40: 67 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  g for the..     
4a50: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
4a60: 20 20 20 20 61 73 73 6f 63 69 61 74 65 64 20 63      associated c
4a70: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
4a80: 74 69 6e 67 20 72 65 70 65 61 74 65 64 6c 79 2e  ting repeatedly.
4a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4aa0: 2f 2f 20 20 20 20 20 20 20 20 20 50 72 65 76 65  //         Preve
4ab0: 6e 74 20 74 68 61 74 20 68 65 72 65 20 62 79 20  nt that here by 
4ac0: 73 65 74 74 69 6e 67 20 74 68 65 20 63 61 63 68  setting the cach
4ad0: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4ae0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
4af0: 20 20 20 74 6f 20 66 61 6c 73 65 2e 0d 0a 20 20     to false...  
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
4b20: 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f  ck (staticSyncRo
4b30: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
4b40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4b50: 20 20 20 20 20 20 20 20 64 65 62 75 67 67 65 72          debugger
4b60: 42 72 65 61 6b 20 3d 20 66 61 6c 73 65 3b 0d 0a  Break = false;..
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
4b90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4bf0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  .      /// Deter
4c10: 6d 69 6e 65 73 20 74 68 65 20 49 44 20 6f 66 20  mines the ID of 
4c20: 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65  the current thre
4c30: 61 64 2e 20 20 4f 6e 6c 79 20 75 73 65 64 20 66  ad.  Only used f
4c40: 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 20  or debugging... 
4c50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4c60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
4c70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4c80: 2f 2f 2f 20 54 68 65 20 49 44 20 6f 66 20 74 68  /// The ID of th
4c90: 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64  e current thread
4ca0: 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20 69 74   -OR- zero if it
4cb0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
4cc0: 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  mined...      //
4cd0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4ce0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
4cf0: 74 69 63 20 69 6e 74 20 47 65 74 54 68 72 65 61  tic int GetThrea
4d00: 64 49 64 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  dId()..      {..
4d10: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
4d20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
4d30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4d40: 20 41 70 70 44 6f 6d 61 69 6e 2e 47 65 74 43 75   AppDomain.GetCu
4d50: 72 72 65 6e 74 54 68 72 65 61 64 49 64 28 29 3b  rrentThreadId();
4d60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4d70: 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65     return 0;..#e
4d80: 6e 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ndif..      }...
4d90: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
4da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
4df0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
4e00: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
4e10: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
4e20: 6c 61 67 73 20 61 72 65 20 70 72 65 73 65 6e 74  lags are present
4e30: 20 77 69 74 68 69 6e 20 74 68 65 20 66 6c 61 67   within the flag
4e40: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  s..      /// ass
4e50: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
4e60: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
4e70: 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20  on object...    
4e80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4e90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
4ea0: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
4ec0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
4ed0: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
4ee0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
4ef0: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
4f00: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
4f10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4f20: 68 61 73 46 6c 61 67 73 22 3e 0d 0a 20 20 20 20  hasFlags">..    
4f30: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4f40: 74 6f 20 63 68 65 63 6b 20 66 6f 72 2e 0d 0a 20  to check for... 
4f50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
4f60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
4f70: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
4f80: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
4f90: 65 20 73 70 65 63 69 66 69 65 64 20 66 6c 61 67  e specified flag
4fa0: 20 6f 72 20 66 6c 61 67 73 20 77 65 72 65 20 70   or flags were p
4fb0: 72 65 73 65 6e 74 3b 20 6f 74 68 65 72 77 69 73  resent; otherwis
4fc0: 65 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65  e,..      /// ze
4fd0: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
4fe0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4ff0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
5000: 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73 28 0d   bool HasFlags(.
5010: 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
5020: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5030: 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20   flags,..       
5040: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
5050: 69 6f 6e 46 6c 61 67 73 20 68 61 73 46 6c 61 67  ionFlags hasFlag
5060: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  s..          )..
5070: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5080: 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c 61 67     return ((flag
5090: 73 20 26 20 68 61 73 46 6c 61 67 73 29 20 3d 3d  s & hasFlags) ==
50a0: 20 68 61 73 46 6c 61 67 73 29 3b 0d 0a 20 20 20   hasFlags);..   
50b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
50c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
5110: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5120: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
5130: 69 6e 65 73 20 69 66 20 70 72 65 70 61 72 69 6e  ines if preparin
5140: 67 20 61 20 71 75 65 72 79 20 73 68 6f 75 6c 64  g a query should
5150: 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20   be logged...   
5160: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5170: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
5180: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
5190: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
51a0: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
51b0: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
51c0: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
51d0: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
51e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
51f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
5200: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
5210: 6f 20 69 66 20 74 68 65 20 71 75 65 72 79 20 70  o if the query p
5220: 72 65 70 61 72 61 74 69 6f 6e 20 73 68 6f 75 6c  reparation shoul
5230: 64 20 62 65 20 6c 6f 67 67 65 64 3b 20 6f 74 68  d be logged; oth
5240: 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20  erwise, zero... 
5250: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
5260: 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72  ns>..      inter
5270: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
5280: 4c 6f 67 50 72 65 70 61 72 65 28 0d 0a 20 20 20  LogPrepare(..   
5290: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
52a0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
52b0: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
52c0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
52d0: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
52e0: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
52f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5300: 2e 4c 6f 67 50 72 65 70 61 72 65 29 3b 0d 0a 20  .LogPrepare);.. 
5310: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
5370: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5380: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
5390: 69 6e 65 73 20 69 66 20 70 72 65 2d 70 61 72 61  ines if pre-para
53a0: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
53b0: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d  ould be logged..
53c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
53d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
53e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
53f0: 61 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ags">..      ///
5400: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
5410: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
5420: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
5430: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20   object...      
5440: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
5450: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
5460: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  >..      /// Non
5470: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 70 72 65  -zero if the pre
5480: 2d 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  -parameter bindi
5490: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ng should be log
54a0: 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  ged; otherwise,.
54b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e  .      /// zero.
54c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
54d0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
54e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
54f0: 6f 6c 20 4c 6f 67 50 72 65 42 69 6e 64 28 0d 0a  ol LogPreBind(..
5500: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5510: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5520: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  flags..         
5530: 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
5540: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 61         return Ha
5550: 73 46 6c 61 67 73 28 66 6c 61 67 73 2c 20 53 51  sFlags(flags, SQ
5560: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5570: 61 67 73 2e 4c 6f 67 50 72 65 42 69 6e 64 29 3b  ags.LogPreBind);
5580: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
5590: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
55a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
55e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
55f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  >..      /// Det
5600: 65 72 6d 69 6e 65 73 20 69 66 20 70 61 72 61 6d  ermines if param
5610: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68 6f  eter binding sho
5620: 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 2e 0d 0a  uld be logged...
5630: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5640: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
5650: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
5660: 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  gs">..      /// 
5670: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
5680: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
5690: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
56a0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f  object...      /
56b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
56c0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
56d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
56e0: 7a 65 72 6f 20 69 66 20 74 68 65 20 70 61 72 61  zero if the para
56f0: 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 20 73 68  meter binding sh
5700: 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 3b 20  ould be logged; 
5710: 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e  otherwise, zero.
5720: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
5730: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e  turns>..      in
5740: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
5750: 6f 6c 20 4c 6f 67 42 69 6e 64 28 0d 0a 20 20 20  ol LogBind(..   
5760: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
5770: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
5780: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
5790: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
57a0: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
57b0: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
57c0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
57d0: 2e 4c 6f 67 42 69 6e 64 29 3b 0d 0a 20 20 20 20  .LogBind);..    
57e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
57f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5830: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
5840: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5850: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
5860: 73 20 69 66 20 61 6e 20 65 78 63 65 70 74 69 6f  s if an exceptio
5870: 6e 20 69 6e 20 61 20 6e 61 74 69 76 65 20 63 61  n in a native ca
5880: 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 62 65  llback should be
5890: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
58a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
58b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
58c0: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
58d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
58e0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
58f0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
5900: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
5910: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
5920: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
5930: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
5940: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
5950: 66 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20  f the exception 
5960: 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67 65 64  should be logged
5970: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72  ; otherwise, zer
5980: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
5990: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
59a0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
59b0: 62 6f 6f 6c 20 4c 6f 67 43 61 6c 6c 62 61 63 6b  bool LogCallback
59c0: 45 78 63 65 70 74 69 6f 6e 73 28 0d 0a 20 20 20  Exceptions(..   
59d0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
59e0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
59f0: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  gs..          ).
5a00: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
5a10: 20 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c      return HasFl
5a20: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
5a30: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5a40: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
5a50: 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ption);..      }
5a60: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ab0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
5ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5ad0: 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
5ae0: 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72  f backup API err
5af0: 6f 72 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ors should be lo
5b00: 67 67 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  gged...      ///
5b10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5b20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5b30: 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20  me="flags">..   
5b40: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
5b50: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
5b60: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
5b70: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
5b80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5b90: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
5ba0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
5bb0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
5bc0: 68 65 20 62 61 63 6b 75 70 20 41 50 49 20 65 72  he backup API er
5bd0: 72 6f 72 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f  ror should be lo
5be0: 67 67 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  gged; otherwise,
5bf0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
5c00: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
5c10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5c20: 74 69 63 20 62 6f 6f 6c 20 4c 6f 67 42 61 63 6b  tic bool LogBack
5c30: 75 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53  up(..          S
5c40: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
5c50: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
5c60: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
5c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
5c80: 72 6e 20 48 61 73 46 6c 61 67 73 28 66 6c 61 67  rn HasFlags(flag
5c90: 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  s, SQLiteConnect
5ca0: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 42 61 63 6b  ionFlags.LogBack
5cb0: 75 70 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  up);..      }...
5cc0: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
5cd0: 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
5ce0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
5d30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5d40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65  ..      /// Dete
5d50: 72 6d 69 6e 65 73 20 69 66 20 6c 6f 67 67 69 6e  rmines if loggin
5d60: 67 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  g for the <see c
5d70: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
5d80: 65 22 20 2f 3e 20 63 6c 61 73 73 20 69 73 0d 0a  e" /> class is..
5d90: 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 61 62 6c        /// disabl
5da0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
5db0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5dc0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5dd0: 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 20  ="flags">..     
5de0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61   /// The flags a
5df0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
5e00: 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  he parent connec
5e10: 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20  tion object...  
5e20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5e30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
5e40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
5e50: 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6c 6f 67   Non-zero if log
5e60: 67 69 6e 67 20 66 6f 72 20 74 68 65 20 3c 73 65  ging for the <se
5e70: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
5e80: 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20 69  dule" /> class i
5e90: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 69 73  s..      /// dis
5ea0: 61 62 6c 65 64 3b 20 6f 74 68 65 72 77 69 73 65  abled; otherwise
5eb0: 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  , zero...      /
5ec0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5ed0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
5ee0: 61 74 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 4d  atic bool NoLogM
5ef0: 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
5f00: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
5f10: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20  onFlags flags.. 
5f20: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
5f30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
5f40: 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28 66  eturn HasFlags(f
5f50: 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  lags, SQLiteConn
5f60: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f  ectionFlags.NoLo
5f70: 67 4d 6f 64 75 6c 65 29 3b 0d 0a 20 20 20 20 20  gModule);..     
5f80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fd0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
5fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5ff0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
6000: 20 69 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   if <see cref="S
6010: 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
6020: 65 72 72 6f 72 73 20 73 68 6f 75 6c 64 20 62 65  errors should be
6030: 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20 20 20 20   logged...      
6040: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6050: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6060: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
6070: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
6080: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
6090: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
60a0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
60b0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
60c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
60d0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
60e0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
60f0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
6100: 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
6110: 3e 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20 62  > error should b
6120: 65 20 6c 6f 67 67 65 64 3b 0d 0a 20 20 20 20 20  e logged;..     
6130: 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2c 20   /// otherwise, 
6140: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero...      ///
6150: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6160: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
6170: 69 63 20 62 6f 6f 6c 20 4c 6f 67 4d 6f 64 75 6c  ic bool LogModul
6180: 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
6190: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
61a0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
61b0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
61c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
61d0: 72 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28  return HasFlags(
61e0: 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e  flags, SQLiteCon
61f0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67  nectionFlags.Log
6200: 4d 6f 64 75 6c 65 45 72 72 6f 72 29 3b 0d 0a 20  ModuleError);.. 
6210: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
6270: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6280: 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d        /// Determ
6290: 69 6e 65 73 20 69 66 20 3c 73 65 65 20 63 72 65  ines if <see cre
62a0: 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
62b0: 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 73 20 73   /> exceptions s
62c0: 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20  hould be..      
62d0: 2f 2f 2f 20 6c 6f 67 67 65 64 2e 0d 0a 20 20 20  /// logged...   
62e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
62f0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
6300: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
6310: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
6320: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
6330: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
6340: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
6350: 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ect...      /// 
6360: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6370: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6380: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
6390: 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20 63 72  o if the <see cr
63a0: 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
63b0: 22 20 2f 3e 20 65 78 63 65 70 74 69 6f 6e 20 73  " /> exception s
63c0: 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20  hould be..      
63d0: 2f 2f 2f 20 6c 6f 67 67 65 64 3b 20 6f 74 68 65  /// logged; othe
63e0: 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20  rwise, zero...  
63f0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6400: 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e  s>..      intern
6410: 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
6420: 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f  ogModuleExceptio
6430: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  n(..          SQ
6440: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
6450: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
6460: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
6470: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
6480: 6e 20 48 61 73 46 6c 61 67 73 28 66 6c 61 67 73  n HasFlags(flags
6490: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
64a0: 6f 6e 46 6c 61 67 73 2e 4c 6f 67 4d 6f 64 75 6c  onFlags.LogModul
64b0: 65 45 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20  eException);..  
64c0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
64d0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
64e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6520: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
6530: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
6540: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
6550: 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
6560: 73 73 20 69 73 20 72 75 6e 6e 69 6e 67 20 6f 6e  ss is running on
6570: 20 6f 6e 65 20 6f 66 20 74 68 65 20 57 69 6e 64   one of the Wind
6580: 6f 77 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5b  ows..      /// [
6590: 73 75 62 2d 5d 70 6c 61 74 66 6f 72 6d 73 2e 0d  sub-]platforms..
65a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
65b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
65c0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
65d0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 77    /// Non-zero w
65e0: 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 57  hen running on W
65f0: 69 6e 64 6f 77 73 3b 20 6f 74 68 65 72 77 69 73  indows; otherwis
6600: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  e, zero...      
6610: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
6620: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
6630: 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 57 69 6e  tatic bool IsWin
6640: 64 6f 77 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  dows()..      {.
6650: 0a 20 20 20 20 20 20 20 20 20 20 50 6c 61 74 66  .          Platf
6660: 6f 72 6d 49 44 20 70 6c 61 74 66 6f 72 6d 49 64  ormID platformId
6670: 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 4f   = Environment.O
6680: 53 56 65 72 73 69 6f 6e 2e 50 6c 61 74 66 6f 72  SVersion.Platfor
6690: 6d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  m;....          
66a0: 69 66 20 28 28 70 6c 61 74 66 6f 72 6d 49 64 20  if ((platformId 
66b0: 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69  == PlatformID.Wi
66c0: 6e 33 32 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20  n32S) ||..      
66d0: 20 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72          (platfor
66e0: 6d 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49  mId == PlatformI
66f0: 44 2e 57 69 6e 33 32 57 69 6e 64 6f 77 73 29 20  D.Win32Windows) 
6700: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
6710: 20 20 28 70 6c 61 74 66 6f 72 6d 49 64 20 3d 3d    (platformId ==
6720: 20 50 6c 61 74 66 6f 72 6d 49 44 2e 57 69 6e 33   PlatformID.Win3
6730: 32 4e 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  2NT) ||..       
6740: 20 20 20 20 20 20 20 28 70 6c 61 74 66 6f 72 6d         (platform
6750: 49 64 20 3d 3d 20 50 6c 61 74 66 6f 72 6d 49 44  Id == PlatformID
6760: 2e 57 69 6e 43 45 29 29 0d 0a 20 20 20 20 20 20  .WinCE))..      
6770: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6780: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
6790: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
67a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
67b0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
67c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
6820: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6830: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20    /// This is a 
6840: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
6850: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
6860: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 2e  ee cref="String.
6870: 46 6f 72 6d 61 74 28 49 46 6f 72 6d 61 74 50 72  Format(IFormatPr
6880: 6f 76 69 64 65 72 2c 53 74 72 69 6e 67 2c 4f 62  ovider,String,Ob
6890: 6a 65 63 74 5b 5d 29 22 20 2f 3e 20 6d 65 74 68  ject[])" /> meth
68a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4f  od...      /// O
68b0: 6e 20 4d 6f 6e 6f 2c 20 69 74 20 68 61 73 20 74  n Mono, it has t
68c0: 6f 20 63 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f  o call the metho
68d0: 64 20 6f 76 65 72 6c 6f 61 64 20 77 69 74 68 6f  d overload witho
68e0: 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ut the..      //
68f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 46 6f  / <see cref="IFo
6900: 72 6d 61 74 50 72 6f 76 69 64 65 72 22 20 2f 3e  rmatProvider" />
6910: 20 70 61 72 61 6d 65 74 65 72 2c 20 64 75 65 20   parameter, due 
6920: 74 6f 20 61 20 62 75 67 20 69 6e 20 4d 6f 6e 6f  to a bug in Mono
6930: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
6940: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
6950: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6960: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
6970: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 75 73    /// This is us
6980: 65 64 20 66 6f 72 20 63 75 6c 74 75 72 65 2d 73  ed for culture-s
6990: 70 65 63 69 66 69 63 20 66 6f 72 6d 61 74 74 69  pecific formatti
69a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
69b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
69c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
69d0: 66 6f 72 6d 61 74 22 3e 0d 0a 20 20 20 20 20 20  format">..      
69e0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 73  /// The format s
69f0: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  tring...      //
6a00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6a10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6a20: 65 3d 22 61 72 67 73 22 3e 0d 0a 20 20 20 20 20  e="args">..     
6a30: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 74 68   /// An array th
6a40: 65 20 6f 62 6a 65 63 74 73 20 74 6f 20 66 6f 72  e objects to for
6a50: 6d 61 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  mat...      /// 
6a60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6a70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6a80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73       /// The res
6a90: 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0d 0a  ulting string...
6aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
6ab0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  rns>..      inte
6ac0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
6ad0: 6e 67 20 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ng StringFormat(
6ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 6f 72  ..          IFor
6af0: 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76  matProvider prov
6b00: 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  ider,..         
6b10: 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 2c 0d   string format,.
6b20: 0a 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d  .          param
6b30: 73 20 6f 62 6a 65 63 74 5b 5d 20 61 72 67 73 0d  s object[] args.
6b40: 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
6b50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6b60: 20 69 66 20 28 49 73 4d 6f 6e 6f 28 29 29 0d 0a   if (IsMono())..
6b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6b80: 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d  turn String.Form
6b90: 61 74 28 66 6f 72 6d 61 74 2c 20 61 72 67 73 29  at(format, args)
6ba0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73  ;..          els
6bb0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
6bc0: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46   return String.F
6bd0: 6f 72 6d 61 74 28 70 72 6f 76 69 64 65 72 2c 20  ormat(provider, 
6be0: 66 6f 72 6d 61 74 2c 20 61 72 67 73 29 3b 0d 0a  format, args);..
6bf0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
6c00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6c10: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6c60: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
6c70: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
6c80: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
6c90: 63 20 73 74 72 69 6e 67 20 54 6f 44 69 73 70 6c  c string ToDispl
6ca0: 61 79 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ayString(..     
6cb0: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
6cc0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
6cd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6ce0: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
6cf0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6d00: 20 20 20 20 20 72 65 74 75 72 6e 20 44 69 73 70       return Disp
6d10: 6c 61 79 4e 75 6c 6c 4f 62 6a 65 63 74 3b 0d 0a  layNullObject;..
6d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
6d30: 6e 67 20 73 74 72 69 6e 67 56 61 6c 75 65 20 3d  ng stringValue =
6d40: 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28   value.ToString(
6d50: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6d60: 69 66 20 28 73 74 72 69 6e 67 56 61 6c 75 65 2e  if (stringValue.
6d70: 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  Length == 0)..  
6d80: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6d90: 72 6e 20 44 69 73 70 6c 61 79 45 6d 70 74 79 53  rn DisplayEmptyS
6da0: 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20 20 20 20  tring;....      
6db0: 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 56 61      if (stringVa
6dc0: 6c 75 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 53  lue.IndexOfAny(S
6dd0: 70 61 63 65 43 68 61 72 73 29 20 3c 20 30 29 0d  paceChars) < 0).
6de0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
6df0: 65 74 75 72 6e 20 73 74 72 69 6e 67 56 61 6c 75  eturn stringValu
6e00: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
6e10: 72 65 74 75 72 6e 20 48 65 6c 70 65 72 4d 65 74  return HelperMet
6e20: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
6e30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
6e40: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
6e50: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20  variantCulture, 
6e60: 44 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  DisplayStringFor
6e70: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
6e80: 20 20 20 20 73 74 72 69 6e 67 56 61 6c 75 65 29      stringValue)
6e90: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
6ea0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6ef0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74  .      public st
6f00: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 44 69  atic string ToDi
6f10: 73 70 6c 61 79 53 74 72 69 6e 67 28 0d 0a 20 20  splayString(..  
6f20: 20 20 20 20 20 20 20 20 41 72 72 61 79 20 61 72          Array ar
6f30: 72 61 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ray..          )
6f40: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
6f50: 20 20 20 20 20 69 66 20 28 61 72 72 61 79 20 3d       if (array =
6f60: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
6f70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 69         return Di
6f80: 73 70 6c 61 79 4e 75 6c 6c 41 72 72 61 79 3b 0d  splayNullArray;.
6f90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
6fa0: 28 61 72 72 61 79 2e 4c 65 6e 67 74 68 20 3d 3d  (array.Length ==
6fb0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
6fc0: 20 20 20 72 65 74 75 72 6e 20 44 69 73 70 6c 61     return Displa
6fd0: 79 45 6d 70 74 79 41 72 72 61 79 3b 0d 0a 0d 0a  yEmptyArray;....
6fe0: 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
6ff0: 42 75 69 6c 64 65 72 20 72 65 73 75 6c 74 20 3d  Builder result =
7000: 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64   new StringBuild
7010: 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  er();....       
7020: 20 20 20 66 6f 72 65 61 63 68 20 28 6f 62 6a 65     foreach (obje
7030: 63 74 20 76 61 6c 75 65 20 69 6e 20 61 72 72 61  ct value in arra
7040: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  y)..          {.
7050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
7060: 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68  f (result.Length
7070: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
7080: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e           result.
7090: 41 70 70 65 6e 64 28 45 6c 65 6d 65 6e 74 53 65  Append(ElementSe
70a0: 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20  parator);....   
70b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
70c0: 74 2e 41 70 70 65 6e 64 28 54 6f 44 69 73 70 6c  t.Append(ToDispl
70d0: 61 79 53 74 72 69 6e 67 28 76 61 6c 75 65 29 29  ayString(value))
70e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
70f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
7100: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3e 20  result.Length > 
7110: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  0)..          {.
7120: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
7130: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
7140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7150: 73 75 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20 41  sult.Insert(0, A
7160: 72 72 61 79 4f 70 65 6e 2e 54 6f 53 74 72 69 6e  rrayOpen.ToStrin
7170: 67 28 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  g());..#else..  
7180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
7190: 6c 74 2e 49 6e 73 65 72 74 28 30 2c 20 41 72 72  lt.Insert(0, Arr
71a0: 61 79 4f 70 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  ayOpen);..#endif
71b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
71c0: 20 20 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28    result.Append(
71d0: 41 72 72 61 79 43 6c 6f 73 65 29 3b 0d 0a 20 20  ArrayClose);..  
71e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
71f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
7200: 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b  sult.ToString();
7210: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
7220: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
7230: 0d 0a 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a  ..  #endregion..
7240: 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 0d 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 4e  /....  #region N
72a0: 61 74 69 76 65 20 4c 69 62 72 61 72 79 20 48 65  ative Library He
72b0: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 2f 2f  lper Class..  //
72c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
72d0: 2f 2f 20 54 68 69 73 20 73 74 61 74 69 63 20 63  // This static c
72e0: 6c 61 73 73 20 70 72 6f 76 69 64 65 73 20 61 20  lass provides a 
72f0: 74 68 69 6e 20 77 72 61 70 70 65 72 20 61 72 6f  thin wrapper aro
7300: 75 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 6c  und the native l
7310: 69 62 72 61 72 79 0d 0a 20 20 2f 2f 2f 20 6c 6f  ibrary..  /// lo
7320: 61 64 69 6e 67 20 66 65 61 74 75 72 65 73 20 6f  ading features o
7330: 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  f the underlying
7340: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 2f 2f   platform...  //
7350: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7360: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
7370: 63 6c 61 73 73 20 4e 61 74 69 76 65 4c 69 62 72  class NativeLibr
7380: 61 72 79 48 65 6c 70 65 72 0d 0a 20 20 7b 0d 0a  aryHelper..  {..
7390: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
73a0: 69 76 61 74 65 20 44 65 6c 65 67 61 74 65 73 0d  ivate Delegates.
73b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
73c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
73d0: 54 68 69 73 20 64 65 6c 65 67 61 74 65 20 69 73  This delegate is
73e0: 20 75 73 65 64 20 74 6f 20 77 72 61 70 20 74 68   used to wrap th
73f0: 65 20 63 6f 6e 63 65 70 74 20 6f 66 20 6c 6f 61  e concept of loa
7400: 64 69 6e 67 20 61 20 6e 61 74 69 76 65 0d 0a 20  ding a native.. 
7410: 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
7420: 2c 20 62 61 73 65 64 20 6f 6e 20 61 20 66 69 6c  , based on a fil
7430: 65 20 6e 61 6d 65 2c 20 61 6e 64 20 72 65 74 75  e name, and retu
7440: 72 6e 69 6e 67 20 74 68 65 20 6c 6f 61 64 65 64  rning the loaded
7450: 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 2f   module..      /
7460: 2f 2f 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  // handle...    
7470: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7480: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ..      /// <par
7490: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
74a0: 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
74b0: 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20  he file name of 
74c0: 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
74d0: 72 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20  ry to load...   
74e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
74f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
7500: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
7510: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
7520: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
7530: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
7540: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
7550: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
7560: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
7570: 70 72 69 76 61 74 65 20 64 65 6c 65 67 61 74 65  private delegate
7580: 20 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72   IntPtr LoadLibr
7590: 61 72 79 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  aryCallback(..  
75a0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
75b0: 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 29  ileName..      )
75c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  ;....      /////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
7620: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7630: 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 65 6c 65     /// This dele
7640: 67 61 74 65 20 69 73 20 75 73 65 64 20 74 6f 20  gate is used to 
7650: 77 72 61 70 20 74 68 65 20 63 6f 6e 63 65 70 74  wrap the concept
7660: 20 6f 66 20 71 75 65 72 79 69 6e 67 20 74 68 65   of querying the
7670: 20 6d 61 63 68 69 6e 65 0d 0a 20 20 20 20 20 20   machine..      
7680: 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
7690: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
76a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
76b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
76c0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
76d0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69     /// The machi
76e0: 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ne name for the 
76f0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
7700: 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69  -OR- null on fai
7710: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
7720: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
7730: 20 20 20 70 72 69 76 61 74 65 20 64 65 6c 65 67     private deleg
7740: 61 74 65 20 73 74 72 69 6e 67 20 47 65 74 4d 61  ate string GetMa
7750: 63 68 69 6e 65 43 61 6c 6c 62 61 63 6b 28 29 3b  chineCallback();
7760: 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
7770: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
77d0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
77e0: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f  ethods..      //
77f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7800: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
7810: 74 6f 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63  to load the spec
7820: 69 66 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62  ified native lib
7830: 72 61 72 79 20 66 69 6c 65 20 75 73 69 6e 67 20  rary file using 
7840: 74 68 65 20 57 69 6e 33 32 0d 0a 20 20 20 20 20  the Win32..     
7850: 20 2f 2f 2f 20 41 50 49 2e 0d 0a 20 20 20 20 20   /// API...     
7860: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7870: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
7880: 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65  m name="fileName
7890: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
78a0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74  e file name of t
78b0: 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  he native librar
78c0: 79 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20  y to load...    
78d0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
78e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
78f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
7900: 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
7910: 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63   handle upon suc
7920: 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72  cess -OR- IntPtr
7930: 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65  .Zero on failure
7940: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
7950: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
7960: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e  rivate static In
7970: 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79  tPtr LoadLibrary
7980: 57 69 6e 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Win32(..        
7990: 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
79a0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  e..          )..
79b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
79c0: 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
79d0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 57 69 6e  NativeMethodsWin
79e0: 33 32 2e 4c 6f 61 64 4c 69 62 72 61 72 79 28 66  32.LoadLibrary(f
79f0: 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
7a00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
7a60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7a70: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
7a80: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68   to determine th
7a90: 65 20 6d 61 63 68 69 6e 65 20 6e 61 6d 65 20 6f  e machine name o
7aa0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72  f the current pr
7ab0: 6f 63 65 73 73 20 75 73 69 6e 67 0d 0a 20 20 20  ocess using..   
7ac0: 20 20 20 2f 2f 2f 20 74 68 65 20 57 69 6e 33 32     /// the Win32
7ad0: 20 41 50 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f   API...      ///
7ae0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7af0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7b00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
7b10: 6d 61 63 68 69 6e 65 20 6e 61 6d 65 20 66 6f 72  machine name for
7b20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
7b30: 63 65 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f  cess -OR- null o
7b40: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
7b50: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7b60: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
7b70: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
7b80: 74 4d 61 63 68 69 6e 65 57 69 6e 33 32 28 29 0d  tMachineWin32().
7b90: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
7ba0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7bb0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e 20    // NOTE: When 
7bc0: 72 75 6e 6e 69 6e 67 20 6f 6e 20 57 69 6e 64 6f  running on Windo
7bd0: 77 73 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 75  ws, attempt to u
7be0: 73 65 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  se the native Wi
7bf0: 6e 33 32 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  n32..          /
7c00: 2f 20 20 20 20 20 20 20 41 50 49 20 66 75 6e 63  /       API func
7c10: 74 69 6f 6e 20 28 76 69 61 20 50 2f 49 6e 76 6f  tion (via P/Invo
7c20: 6b 65 29 20 74 68 61 74 20 63 61 6e 20 70 72 6f  ke) that can pro
7c30: 76 69 64 65 20 75 73 20 77 69 74 68 20 74 68 65  vide us with the
7c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
7c50: 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61       processor a
7c60: 72 63 68 69 74 65 63 74 75 72 65 2e 0d 0a 20 20  rchitecture...  
7c70: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7c80: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
7c90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7ca0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
7cb0: 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 2e 53  veMethodsWin32.S
7cc0: 59 53 54 45 4d 5f 49 4e 46 4f 20 73 79 73 74 65  YSTEM_INFO syste
7cd0: 6d 49 6e 66 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  mInfo;....      
7ce0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7cf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
7d00: 45 3a 20 51 75 65 72 79 20 74 68 65 20 73 79 73  E: Query the sys
7d10: 74 65 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  tem information 
7d20: 76 69 61 20 50 2f 49 6e 76 6f 6b 65 2c 20 74 68  via P/Invoke, th
7d30: 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  us..            
7d40: 20 20 2f 2f 20 20 20 20 20 20 20 66 69 6c 6c 69    //       filli
7d50: 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 65  ng the structure
7d60: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7d70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
7d80: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
7d90: 65 74 68 6f 64 73 57 69 6e 33 32 2e 47 65 74 53  ethodsWin32.GetS
7da0: 79 73 74 65 6d 49 6e 66 6f 28 6f 75 74 20 73 79  ystemInfo(out sy
7db0: 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20 20  stemInfo);....  
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7de0: 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
7df0: 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
7e00: 69 74 65 63 74 75 72 65 20 76 61 6c 75 65 20 61  itecture value a
7e10: 73 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  s a string...   
7e20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
7e40: 75 72 6e 20 73 79 73 74 65 6d 49 6e 66 6f 2e 77  urn systemInfo.w
7e50: 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
7e60: 63 74 75 72 65 2e 54 6f 53 74 72 69 6e 67 28 29  cture.ToString()
7e70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
7e80: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
7e90: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
7ea0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
7eb0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
7ec0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7ed0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
7ee0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
7ef0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7f40: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
7f50: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
7f60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
7f70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
7f80: 41 74 74 65 6d 70 74 73 20 74 6f 20 6c 6f 61 64  Attempts to load
7f90: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
7fa0: 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 66 69  ative library fi
7fb0: 6c 65 20 75 73 69 6e 67 20 74 68 65 20 50 4f 53  le using the POS
7fc0: 49 58 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 50  IX..      /// AP
7fd0: 49 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  I...      /// </
7fe0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7ff0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8000: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
8010: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
8020: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 61 74 69  name of the nati
8030: 76 65 20 6c 69 62 72 61 72 79 20 74 6f 20 6c 6f  ve library to lo
8040: 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ad...      /// <
8050: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
8060: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8070: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
8080: 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c 65  ve module handle
8090: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 2d 4f   upon success -O
80a0: 52 2d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 6f  R- IntPtr.Zero o
80b0: 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
80c0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
80d0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
80e0: 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 4c 6f  static IntPtr Lo
80f0: 61 64 4c 69 62 72 61 72 79 50 6f 73 69 78 28 0d  adLibraryPosix(.
8100: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
8110: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
8120: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
8130: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
8140: 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
8150: 65 74 68 6f 64 73 50 6f 73 69 78 2e 64 6c 6f 70  ethodsPosix.dlop
8160: 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
8170: 20 20 20 66 69 6c 65 4e 61 6d 65 2c 20 55 6e 73     fileName, Uns
8180: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8190: 50 6f 73 69 78 2e 52 54 4c 44 5f 44 45 46 41 55  Posix.RTLD_DEFAU
81a0: 4c 54 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  LT);..      }...
81b0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8200: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
8210: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
8220: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64  // Attempts to d
8230: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61 63  etermine the mac
8240: 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  hine name of the
8250: 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73   current process
8260: 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f   using..      //
8270: 2f 20 74 68 65 20 50 4f 53 49 58 20 41 50 49 2e  / the POSIX API.
8280: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8290: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
82a0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
82b0: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63 68 69     /// The machi
82c0: 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ne name for the 
82d0: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
82e0: 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66 61 69  -OR- null on fai
82f0: 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lure...      ///
8300: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
8310: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
8320: 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63 68  c string GetMach
8330: 69 6e 65 50 6f 73 69 78 28 29 0d 0a 20 20 20 20  inePosix()..    
8340: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
8350: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  /..          // 
8360: 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69  NOTE: When runni
8370: 6e 67 20 6f 6e 20 50 4f 53 49 58 20 28 6e 6f 6e  ng on POSIX (non
8380: 2d 57 69 6e 64 6f 77 73 29 2c 20 61 74 74 65 6d  -Windows), attem
8390: 70 74 20 74 6f 20 71 75 65 72 79 20 74 68 65 0d  pt to query the.
83a0: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
83b0: 20 20 20 20 6d 61 63 68 69 6e 65 20 66 72 6f 6d      machine from
83c0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
83d0: 79 73 74 65 6d 20 76 69 61 20 75 6e 61 6d 65 28  ystem via uname(
83e0: 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  )...          //
83f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79 0d  ..          try.
8400: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
8410: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
8420: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 50  feNativeMethodsP
8430: 6f 73 69 78 2e 75 74 73 6e 61 6d 65 20 75 74 73  osix.utsname uts
8440: 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
8450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8460: 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65   (UnsafeNativeMe
8470: 74 68 6f 64 73 50 6f 73 69 78 2e 47 65 74 4f 73  thodsPosix.GetOs
8480: 56 65 72 73 69 6f 6e 49 6e 66 6f 28 72 65 66 20  VersionInfo(ref 
8490: 75 74 73 4e 61 6d 65 29 20 26 26 0d 0a 20 20 20  utsName) &&..   
84a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
84b0: 75 74 73 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  utsName != null)
84c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
84d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
84e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 74 73        return uts
84f0: 4e 61 6d 65 2e 6d 61 63 68 69 6e 65 3b 0d 0a 20  Name.machine;.. 
8500: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8510: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
8520: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
8530: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8540: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
8550: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
8560: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8570: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
8580: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
8590: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
85a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
8600: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
8610: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
8620: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8630: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
8640: 20 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66   load the specif
8650: 69 65 64 20 6e 61 74 69 76 65 20 6c 69 62 72 61  ied native libra
8660: 72 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  ry file...      
8670: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8680: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
8690: 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
86a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
86b0: 20 66 69 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68   file name of th
86c0: 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
86d0: 20 74 6f 20 6c 6f 61 64 2e 0d 0a 20 20 20 20 20   to load...     
86e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
86f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8700: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
8710: 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
8720: 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75 63 63  handle upon succ
8730: 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74 72 2e  ess -OR- IntPtr.
8740: 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e  Zero on failure.
8750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
8760: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 75  turns>..      pu
8770: 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
8780: 74 72 20 4c 6f 61 64 4c 69 62 72 61 72 79 28 0d  tr LoadLibrary(.
8790: 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
87a0: 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g fileName..    
87b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
87c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 6f 61 64  ..          Load
87d0: 4c 69 62 72 61 72 79 43 61 6c 6c 62 61 63 6b 20  LibraryCallback 
87e0: 63 61 6c 6c 62 61 63 6b 20 3d 20 4c 6f 61 64 4c  callback = LoadL
87f0: 69 62 72 61 72 79 57 69 6e 33 32 3b 0d 0a 0d 0a  ibraryWin32;....
8800: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
8810: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
8820: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 48            if (!H
8830: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 57  elperMethods.IsW
8840: 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  indows())..     
8850: 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63           callbac
8860: 6b 20 3d 20 4c 6f 61 64 4c 69 62 72 61 72 79 50  k = LoadLibraryP
8870: 6f 73 69 78 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  osix;..#endif...
8880: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
8890: 6e 20 63 61 6c 6c 62 61 63 6b 28 66 69 6c 65 4e  n callback(fileN
88a0: 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ame);..      }..
88b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
8910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8920: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
8930: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61  determine the ma
8940: 63 68 69 6e 65 20 6e 61 6d 65 20 6f 66 20 74 68  chine name of th
8950: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
8960: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
8970: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8980: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
8990: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 63       /// The mac
89a0: 68 69 6e 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  hine name for th
89b0: 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
89c0: 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 6f 6e 20 66  s -OR- null on f
89d0: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ailure...      /
89e0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
89f0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
8a00: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4d 61 63  ic string GetMac
8a10: 68 69 6e 65 28 29 0d 0a 20 20 20 20 20 20 7b 0d  hine()..      {.
8a20: 0a 20 20 20 20 20 20 20 20 20 20 47 65 74 4d 61  .          GetMa
8a30: 63 68 69 6e 65 43 61 6c 6c 62 61 63 6b 20 63 61  chineCallback ca
8a40: 6c 6c 62 61 63 6b 20 3d 20 47 65 74 4d 61 63 68  llback = GetMach
8a50: 69 6e 65 57 69 6e 33 32 3b 0d 0a 0d 0a 23 69 66  ineWin32;....#if
8a60: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
8a70: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8a80: 20 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70         if (!Help
8a90: 65 72 4d 65 74 68 6f 64 73 2e 49 73 57 69 6e 64  erMethods.IsWind
8aa0: 6f 77 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ows())..        
8ab0: 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d        callback =
8ac0: 20 47 65 74 4d 61 63 68 69 6e 65 50 6f 73 69 78   GetMachinePosix
8ad0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
8ae0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61         return ca
8af0: 6c 6c 62 61 63 6b 28 29 3b 0d 0a 20 20 20 20 20  llback();..     
8b00: 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
8b10: 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e  gion..  }..  #en
8b20: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f  dregion....  ///
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b80: 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61 67 65  #region Unmanage
8b90: 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68 6f 64  d Interop Method
8ba0: 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 20 28  s Static Class (
8bb0: 50 4f 53 49 58 29 0d 0a 23 69 66 20 21 50 4c 41  POSIX)..#if !PLA
8bc0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8bd0: 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73  MEWORK..  /// <s
8be0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
8bf0: 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c 61 72  his class declar
8c00: 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  es P/Invoke meth
8c10: 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69  ods to call nati
8c20: 76 65 20 50 4f 53 49 58 20 41 50 49 73 2e 0d 0a  ve POSIX APIs...
8c30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8c40: 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d  ..  [SuppressUnm
8c50: 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75 72 69  anagedCodeSecuri
8c60: 74 79 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ty]..  internal 
8c70: 73 74 61 74 69 63 20 63 6c 61 73 73 20 55 6e 73  static class Uns
8c80: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8c90: 50 6f 73 69 78 0d 0a 20 20 7b 0d 0a 20 20 20 20  Posix..  {..    
8ca0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8cb0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
8cc0: 73 74 72 75 63 74 75 72 65 20 69 73 20 75 73 65  structure is use
8cd0: 64 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  d when running o
8ce0: 6e 20 50 4f 53 49 58 20 6f 70 65 72 61 74 69 6e  n POSIX operatin
8cf0: 67 20 73 79 73 74 65 6d 73 0d 0a 20 20 20 20 20  g systems..     
8d00: 20 2f 2f 2f 20 74 6f 20 73 74 6f 72 65 20 69 6e   /// to store in
8d10: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
8d20: 74 68 65 20 63 75 72 72 65 6e 74 20 6d 61 63 68  the current mach
8d30: 69 6e 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  ine, including t
8d40: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 75  he..      /// hu
8d50: 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 6e 61 6d  man readable nam
8d60: 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69  e of the operati
8d70: 6e 67 20 73 79 73 74 65 6d 20 61 73 20 77 65 6c  ng system as wel
8d80: 6c 20 61 73 20 74 68 61 74 20 6f 66 0d 0a 20 20  l as that of..  
8d90: 20 20 20 20 2f 2f 2f 20 74 68 65 20 75 6e 64 65      /// the unde
8da0: 72 6c 79 69 6e 67 20 68 61 72 64 77 61 72 65 2e  rlying hardware.
8db0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
8dc0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
8dd0: 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
8de0: 61 73 73 20 75 74 73 6e 61 6d 65 0d 0a 20 20 20  ass utsname..   
8df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8e00: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 73 79  public string sy
8e10: 73 6e 61 6d 65 3b 20 20 2f 2a 20 4e 61 6d 65 20  sname;  /* Name 
8e20: 6f 66 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e  of this implemen
8e30: 74 61 74 69 6f 6e 20 6f 66 0d 0a 20 20 20 20 20  tation of..     
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
8e60: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
8e70: 73 74 65 6d 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  stem. */..      
8e80: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
8e90: 67 20 6e 6f 64 65 6e 61 6d 65 3b 20 2f 2a 20 4e  g nodename; /* N
8ea0: 61 6d 65 20 6f 66 20 74 68 69 73 20 6e 6f 64 65  ame of this node
8eb0: 20 77 69 74 68 69 6e 20 74 68 65 0d 0a 20 20 20   within the..   
8ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ee0: 2a 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73  * communications
8ef0: 20 6e 65 74 77 6f 72 6b 20 74 6f 20 77 68 69 63   network to whic
8f00: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f20: 20 20 20 20 20 20 2a 20 74 68 69 73 20 6e 6f 64        * this nod
8f30: 65 20 69 73 20 61 74 74 61 63 68 65 64 2c 20 69  e is attached, i
8f40: 66 20 61 6e 79 2e 20 2a 2f 0d 0a 20 20 20 20 20  f any. */..     
8f50: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
8f60: 6e 67 20 72 65 6c 65 61 73 65 3b 20 20 2f 2a 20  ng release;  /* 
8f70: 43 75 72 72 65 6e 74 20 72 65 6c 65 61 73 65 20  Current release 
8f80: 6c 65 76 65 6c 20 6f 66 20 74 68 69 73 0d 0a 20  level of this.. 
8f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 20 20 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69    * implementati
8fc0: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
8fd0: 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
8fe0: 76 65 72 73 69 6f 6e 3b 20 20 2f 2a 20 43 75 72  version;  /* Cur
8ff0: 72 65 6e 74 20 76 65 72 73 69 6f 6e 20 6c 65 76  rent version lev
9000: 65 6c 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20  el of this..    
9010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a                 *
9030: 20 72 65 6c 65 61 73 65 2e 20 2a 2f 0d 0a 20 20   release. */..  
9040: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
9050: 74 72 69 6e 67 20 6d 61 63 68 69 6e 65 3b 20 20  tring machine;  
9060: 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 68  /* Name of the h
9070: 61 72 64 77 61 72 65 20 74 79 70 65 20 6f 6e 0d  ardware type on.
9080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90a0: 20 20 20 20 2a 20 77 68 69 63 68 20 74 68 65 20      * which the 
90b0: 73 79 73 74 65 6d 20 69 73 20 72 75 6e 6e 69 6e  system is runnin
90c0: 67 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a  g. */..      }..
90d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9120: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
9130: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9140: 2f 2f 2f 20 54 68 69 73 20 73 74 72 75 63 74 75  /// This structu
9150: 72 65 20 69 73 20 70 61 73 73 65 64 20 64 69 72  re is passed dir
9160: 65 63 74 6c 79 20 74 6f 20 74 68 65 20 50 2f 49  ectly to the P/I
9170: 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 6f 0d  nvoke method to.
9180: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 62 74 61 69  .      /// obtai
9190: 6e 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  n the informatio
91a0: 6e 20 61 62 6f 75 74 20 74 68 65 20 63 75 72 72  n about the curr
91b0: 65 6e 74 20 6d 61 63 68 69 6e 65 2c 20 69 6e 63  ent machine, inc
91c0: 6c 75 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  luding..      //
91d0: 2f 20 74 68 65 20 68 75 6d 61 6e 20 72 65 61 64  / the human read
91e0: 61 62 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  able name of the
91f0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
9200: 6d 20 61 73 20 77 65 6c 6c 20 61 73 0d 0a 20 20  m as well as..  
9210: 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 6f 66 20      /// that of 
9220: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 68  the underlying h
9230: 61 72 64 77 61 72 65 2e 0d 0a 20 20 20 20 20 20  ardware...      
9240: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9250: 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79        [StructLay
9260: 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
9270: 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
9280: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 75 63     private struc
9290: 74 20 75 74 73 6e 61 6d 65 5f 69 6e 74 65 72 6f  t utsname_intero
92a0: 70 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  p..      {..    
92b0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
92c0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
92d0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 69 6e   following strin
92e0: 67 20 66 69 65 6c 64 73 20 73 68 6f 75 6c 64 20  g fields should 
92f0: 62 65 20 70 72 65 73 65 6e 74 20 69 6e 0d 0a 20  be present in.. 
9300: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9310: 20 20 74 68 69 73 20 62 75 66 66 65 72 2c 20 61    this buffer, a
9320: 6c 6c 20 6f 66 20 77 68 69 63 68 20 77 69 6c 6c  ll of which will
9330: 20 62 65 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61   be zero-termina
9340: 74 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ted:..          
9350: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 20 20 20 20 73 79 73 6e 61 6d 65 0d 0a 20        sysname.. 
9380: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93a0: 20 6e 6f 64 65 6e 61 6d 65 0d 0a 20 20 20 20 20   nodename..     
93b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6c               rel
93d0: 65 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  ease..          
93e0: 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  //              
93f0: 20 20 20 20 20 20 20 20 76 65 72 73 69 6f 6e 0d          version.
9400: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
9410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9420: 20 20 20 6d 61 63 68 69 6e 65 0d 0a 20 20 20 20     machine..    
9430: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9440: 20 20 20 20 5b 4d 61 72 73 68 61 6c 41 73 28 55      [MarshalAs(U
9450: 6e 6d 61 6e 61 67 65 64 54 79 70 65 2e 42 79 56  nmanagedType.ByV
9460: 61 6c 41 72 72 61 79 2c 20 53 69 7a 65 43 6f 6e  alArray, SizeCon
9470: 73 74 20 3d 20 34 30 39 36 29 5d 0d 0a 20 20 20  st = 4096)]..   
9480: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
9490: 74 65 5b 5d 20 62 75 66 66 65 72 3b 0d 0a 20 20  te[] buffer;..  
94a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
94b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9500: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9510: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
9520: 69 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20  is the P/Invoke 
9530: 6d 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70  method that wrap
9540: 73 20 74 68 65 20 6e 61 74 69 76 65 20 55 6e 69  s the native Uni
9550: 78 20 75 6e 61 6d 65 0d 0a 20 20 20 20 20 20 2f  x uname..      /
9560: 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65  // function.  Se
9570: 65 20 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75  e the POSIX docu
9580: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
9590: 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68  ll details on wh
95a0: 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  at it..      ///
95b0: 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   does...      //
95c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
95d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
95e0: 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
95f0: 20 20 20 2f 2f 2f 20 53 74 72 75 63 74 75 72 65     /// Structure
9600: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 70 72   containing a pr
9610: 65 61 6c 6c 6f 63 61 74 65 64 20 62 79 74 65 20  eallocated byte 
9620: 62 75 66 66 65 72 20 74 6f 20 66 69 6c 6c 20 77  buffer to fill w
9630: 69 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ith the..      /
9640: 2f 2f 20 72 65 71 75 65 73 74 65 64 20 69 6e 66  // requested inf
9650: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  ormation...     
9660: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9670: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9680: 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 5a 65  s>..      /// Ze
9690: 72 6f 20 66 6f 72 20 73 75 63 63 65 73 73 20 61  ro for success a
96a0: 6e 64 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72  nd less than zer
96b0: 6f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  o upon failure..
96c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
96d0: 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53  urns>..#if NET_S
96e0: 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20  TANDARD_20..    
96f0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69    [DllImport("li
9700: 62 63 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  bc",..#else..   
9710: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 5f     [DllImport("_
9720: 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65 6e  _Internal",..#en
9730: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43  dif..          C
9740: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
9750: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
9760: 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20  tion.Cdecl)]..  
9770: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9780: 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 75 6e  ic extern int un
9790: 61 6d 65 28 6f 75 74 20 75 74 73 6e 61 6d 65 5f  ame(out utsname_
97a0: 69 6e 74 65 72 6f 70 20 6e 61 6d 65 29 3b 0d 0a  interop name);..
97b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
97c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9800: 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  /..      /// <su
9810: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9820: 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 50 2f  / This is the P/
9830: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 74 68  Invoke method th
9840: 61 74 20 77 72 61 70 73 20 74 68 65 20 6e 61 74  at wraps the nat
9850: 69 76 65 20 55 6e 69 78 20 64 6c 6f 70 65 6e 0d  ive Unix dlopen.
9860: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
9870: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 50 4f  ion.  See the PO
9880: 53 49 58 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SIX documentatio
9890: 6e 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69  n for full detai
98a0: 6c 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20  ls on what it.. 
98b0: 20 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a       /// does...
98c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
98d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
98e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c  <param name="fil
98f0: 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f  eName">..      /
9900: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
9910: 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 6c 69  he executable li
9920: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
9930: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
9940: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9950: 65 3d 22 6d 6f 64 65 22 3e 0d 0a 20 20 20 20 20  e="mode">..     
9960: 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74 20 62   /// This must b
9970: 65 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20  e a combination 
9980: 6f 66 20 74 68 65 20 69 6e 64 69 76 69 64 75 61  of the individua
9990: 6c 20 62 69 74 20 66 6c 61 67 73 20 52 54 4c 44  l bit flags RTLD
99a0: 5f 4c 41 5a 59 2c 0d 0a 20 20 20 20 20 20 2f 2f  _LAZY,..      //
99b0: 2f 20 52 54 4c 44 5f 4e 4f 57 2c 20 52 54 4c 44  / RTLD_NOW, RTLD
99c0: 5f 47 4c 4f 42 41 4c 2c 20 61 6e 64 2f 6f 72 20  _GLOBAL, and/or 
99d0: 52 54 4c 44 5f 4c 4f 43 41 4c 2e 0d 0a 20 20 20  RTLD_LOCAL...   
99e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
99f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  .      /// <retu
9a00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rns>..      /// 
9a10: 54 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  The native modul
9a20: 65 20 68 61 6e 64 6c 65 20 75 70 6f 6e 20 73 75  e handle upon su
9a30: 63 63 65 73 73 20 2d 4f 52 2d 20 49 6e 74 50 74  ccess -OR- IntPt
9a40: 72 2e 5a 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72  r.Zero on failur
9a50: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
9a60: 72 65 74 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45  returns>..#if NE
9a70: 54 5f 53 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20  T_STANDARD_20.. 
9a80: 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28       [DllImport(
9a90: 22 6c 69 62 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d  "libdl",..#else.
9aa0: 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  .      [DllImpor
9ab0: 74 28 22 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d  t("__Internal",.
9ac0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
9ad0: 20 20 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20     EntryPoint = 
9ae0: 22 64 6c 6f 70 65 6e 22 2c 0d 0a 20 20 20 20 20  "dlopen",..     
9af0: 20 20 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76       CallingConv
9b00: 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
9b10: 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
9b20: 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
9b30: 53 65 74 2e 41 6e 73 69 2c 0d 0a 20 20 20 20 20  Set.Ansi,..     
9b40: 20 20 20 20 20 42 65 73 74 46 69 74 4d 61 70 70       BestFitMapp
9b50: 69 6e 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72  ing = false, Thr
9b60: 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68  owOnUnmappableCh
9b70: 61 72 20 3d 20 74 72 75 65 2c 0d 0a 20 20 20 20  ar = true,..    
9b80: 20 20 20 20 20 20 53 65 74 4c 61 73 74 45 72 72        SetLastErr
9b90: 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a 20 20 20  or = true)]..   
9ba0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9bb0: 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
9bc0: 20 64 6c 6f 70 65 6e 28 73 74 72 69 6e 67 20 66   dlopen(string f
9bd0: 69 6c 65 4e 61 6d 65 2c 20 69 6e 74 20 6d 6f 64  ileName, int mod
9be0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  e);....      ///
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c30: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
9c40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9c50: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
9c60: 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68  he P/Invoke meth
9c70: 6f 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68  od that wraps th
9c80: 65 20 6e 61 74 69 76 65 20 55 6e 69 78 20 64 6c  e native Unix dl
9c90: 63 6c 6f 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  close..      ///
9ca0: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 53 65 65 20   function.  See 
9cb0: 74 68 65 20 50 4f 53 49 58 20 64 6f 63 75 6d 65  the POSIX docume
9cc0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 6c 6c  ntation for full
9cd0: 20 64 65 74 61 69 6c 73 20 6f 6e 20 77 68 61 74   details on what
9ce0: 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64   it..      /// d
9cf0: 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  oes...      /// 
9d00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9d10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9d20: 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
9d30: 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 6e 64 6c     /// The handl
9d40: 65 20 74 6f 20 74 68 65 20 6c 6f 61 64 65 64 20  e to the loaded 
9d50: 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 2e 0d  native library..
9d60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
9d70: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
9d80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9d90: 2f 2f 2f 20 5a 65 72 6f 20 75 70 6f 6e 20 73 75  /// Zero upon su
9da0: 63 63 65 73 73 20 2d 4f 52 2d 20 6e 6f 6e 2d 7a  ccess -OR- non-z
9db0: 65 72 6f 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  ero on failure..
9dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
9dd0: 75 72 6e 73 3e 0d 0a 23 69 66 20 4e 45 54 5f 53  urns>..#if NET_S
9de0: 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20 20  TANDARD_20..    
9df0: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6c 69    [DllImport("li
9e00: 62 64 6c 22 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20  bdl",..#else..  
9e10: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
9e20: 5f 5f 49 6e 74 65 72 6e 61 6c 22 2c 0d 0a 23 65  __Internal",..#e
9e30: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9e40: 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 64 6c  EntryPoint = "dl
9e50: 63 6c 6f 73 65 22 2c 0d 0a 20 20 20 20 20 20 20  close",..       
9e60: 20 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e     CallingConven
9e70: 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
9e80: 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20  nvention.Cdecl, 
9e90: 53 65 74 4c 61 73 74 45 72 72 6f 72 20 3d 20 74  SetLastError = t
9ea0: 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 69 6e 74  rue)]..      int
9eb0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
9ec0: 65 72 6e 20 69 6e 74 20 64 6c 63 6c 6f 73 65 28  ern int dlclose(
9ed0: 49 6e 74 50 74 72 20 6d 6f 64 75 6c 65 29 3b 0d  IntPtr module);.
9ee0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f30: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
9f40: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
9f50: 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  tants..      ///
9f60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9f70: 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20 77 69    /// For use wi
9f80: 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 62 69 6e  th dlopen(), bin
9f90: 64 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73  d function calls
9fa0: 20 6c 61 7a 69 6c 79 2e 0d 0a 20 20 20 20 20 20   lazily...      
9fb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9fc0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
9fd0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 41  onst int RTLD_LA
9fe0: 5a 59 20 3d 20 30 78 31 3b 0d 0a 0d 0a 20 20 20  ZY = 0x1;....   
9ff0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
a040: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a050: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  >..      /// For
a060: 20 75 73 65 20 77 69 74 68 20 64 6c 6f 70 65 6e   use with dlopen
a070: 28 29 2c 20 62 69 6e 64 20 66 75 6e 63 74 69 6f  (), bind functio
a080: 6e 20 63 61 6c 6c 73 20 69 6d 6d 65 64 69 61 74  n calls immediat
a090: 65 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ely...      /// 
a0a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a0b0: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
a0c0: 20 69 6e 74 20 52 54 4c 44 5f 4e 4f 57 20 3d 20   int RTLD_NOW = 
a0d0: 30 78 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  0x2;....      //
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a120: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a130: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a140: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
a150: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6d  with dlopen(), m
a160: 61 6b 65 20 73 79 6d 62 6f 6c 73 20 67 6c 6f 62  ake symbols glob
a170: 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 2e 0d  ally available..
a180: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a190: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e 74  mary>..      int
a1a0: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20  ernal const int 
a1b0: 52 54 4c 44 5f 47 4c 4f 42 41 4c 20 3d 20 30 78  RTLD_GLOBAL = 0x
a1c0: 31 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  100;....      //
a1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
a220: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a230: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 75 73 65 20      /// For use 
a240: 77 69 74 68 20 64 6c 6f 70 65 6e 28 29 2c 20 6f  with dlopen(), o
a250: 70 70 6f 73 69 74 65 20 6f 66 20 52 54 4c 44 5f  pposite of RTLD_
a260: 47 4c 4f 42 41 4c 2c 20 61 6e 64 20 74 68 65 20  GLOBAL, and the 
a270: 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20 20 20  default...      
a280: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a290: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63        internal c
a2a0: 6f 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 4c 4f  onst int RTLD_LO
a2b0: 43 41 4c 20 3d 20 30 78 30 30 30 3b 0d 0a 0d 0a  CAL = 0x000;....
a2c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a310: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a320: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a330: 46 6f 72 20 75 73 65 20 77 69 74 68 20 64 6c 6f  For use with dlo
a340: 70 65 6e 28 29 2c 20 74 68 65 20 64 65 66 61 75  pen(), the defau
a350: 6c 74 73 20 75 73 65 64 20 62 79 20 74 68 69 73  lts used by this
a360: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 2f   class...      /
a370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a380: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f       internal co
a390: 6e 73 74 20 69 6e 74 20 52 54 4c 44 5f 44 45 46  nst int RTLD_DEF
a3a0: 41 55 4c 54 20 3d 20 52 54 4c 44 5f 4e 4f 57 20  AULT = RTLD_NOW 
a3b0: 7c 20 52 54 4c 44 5f 47 4c 4f 42 41 4c 3b 0d 0a  | RTLD_GLOBAL;..
a3c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
a3d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
a430: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
a440: 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  a..      /// <su
a450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a460: 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20  / These are the 
a470: 63 68 61 72 61 63 74 65 72 73 20 75 73 65 64 20  characters used 
a480: 74 6f 20 73 65 70 61 72 61 74 65 20 74 68 65 20  to separate the 
a490: 73 74 72 69 6e 67 20 66 69 65 6c 64 73 20 77 69  string fields wi
a4a0: 74 68 69 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  thin..      /// 
a4b0: 74 68 65 20 72 61 77 20 62 75 66 66 65 72 20 72  the raw buffer r
a4c0: 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 3c  eturned by the <
a4d0: 73 65 65 20 63 72 65 66 3d 22 75 6e 61 6d 65 22  see cref="uname"
a4e0: 20 2f 3e 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74   /> P/Invoke met
a4f0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hod...      /// 
a500: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a510: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
a520: 20 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d   readonly char[]
a530: 20 75 74 73 4e 61 6d 65 53 65 70 61 72 61 74 6f   utsNameSeparato
a540: 72 73 20 3d 20 7b 20 27 5c 30 27 20 7d 3b 0d 0a  rs = { '\0' };..
a550: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
a560: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
a570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5b0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
a5c0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
a5d0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
a5e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a5f0: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
a600: 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
a610: 6f 75 6e 64 20 74 68 65 20 3c 73 65 65 20 63 72  ound the <see cr
a620: 65 66 3d 22 75 6e 61 6d 65 22 20 2f 3e 20 50 2f  ef="uname" /> P/
a630: 49 6e 76 6f 6b 65 0d 0a 20 20 20 20 20 20 2f 2f  Invoke..      //
a640: 2f 20 6d 65 74 68 6f 64 20 74 68 61 74 20 65 78  / method that ex
a650: 74 72 61 63 74 73 20 61 6e 64 20 72 65 74 75 72  tracts and retur
a660: 6e 73 20 74 68 65 20 68 75 6d 61 6e 20 72 65 61  ns the human rea
a670: 64 61 62 6c 65 20 73 74 72 69 6e 67 73 20 66 72  dable strings fr
a680: 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  om..      /// th
a690: 65 20 72 61 77 20 62 75 66 66 65 72 2e 0d 0a 20  e raw buffer... 
a6a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a6b0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
a6c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 75 74 73 4e  param name="utsN
a6d0: 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ame">..      ///
a6e0: 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65 2c   This structure,
a6f0: 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 20   which contains 
a700: 73 74 72 69 6e 67 73 2c 20 77 69 6c 6c 20 62 65  strings, will be
a710: 20 66 69 6c 6c 65 64 20 62 61 73 65 64 20 6f 6e   filled based on
a720: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
a730: 64 61 74 61 20 70 6c 61 63 65 64 20 69 6e 20 74  data placed in t
a740: 68 65 20 72 61 77 20 62 75 66 66 65 72 20 72 65  he raw buffer re
a750: 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 3c 73  turned by the <s
a760: 65 65 20 63 72 65 66 3d 22 75 6e 61 6d 65 22 20  ee cref="uname" 
a770: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 2f  />..      /// P/
a780: 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 2e 0d 0a  Invoke method...
a790: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
a7a0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
a7b0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
a7c0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
a7d0: 20 73 75 63 63 65 73 73 3b 20 6f 74 68 65 72 77   success; otherw
a7e0: 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
a7f0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
a800: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
a810: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 47 65 74   static bool Get
a820: 4f 73 56 65 72 73 69 6f 6e 49 6e 66 6f 28 0d 0a  OsVersionInfo(..
a830: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 75 74            ref ut
a840: 73 6e 61 6d 65 20 75 74 73 4e 61 6d 65 0d 0a 20  sname utsName.. 
a850: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a860: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
a870: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  ry..          {.
a880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  .              u
a890: 74 73 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 20 75  tsname_interop u
a8a0: 74 66 4e 61 6d 65 49 6e 74 65 72 6f 70 3b 0d 0a  tfNameInterop;..
a8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8c0: 69 66 20 28 75 6e 61 6d 65 28 6f 75 74 20 75 74  if (uname(out ut
a8d0: 66 4e 61 6d 65 49 6e 74 65 72 6f 70 29 20 3c 20  fNameInterop) < 
a8e0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
a8f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
a900: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
a910: 20 20 20 20 20 69 66 20 28 75 74 66 4e 61 6d 65       if (utfName
a920: 49 6e 74 65 72 6f 70 2e 62 75 66 66 65 72 20 3d  Interop.buffer =
a930: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a940: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a950: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
a960: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a970: 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67 20   bufferAsString 
a980: 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e  = Encoding.UTF8.
a990: 47 65 74 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  GetString(..    
a9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74                ut
a9b0: 66 4e 61 6d 65 49 6e 74 65 72 6f 70 2e 62 75 66  fNameInterop.buf
a9c0: 66 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  fer);....       
a9d0: 20 20 20 20 20 20 20 69 66 20 28 28 62 75 66 66         if ((buff
a9e0: 65 72 41 73 53 74 72 69 6e 67 20 3d 3d 20 6e 75  erAsString == nu
a9f0: 6c 6c 29 20 7c 7c 20 28 75 74 73 4e 61 6d 65 53  ll) || (utsNameS
aa00: 65 70 61 72 61 74 6f 72 73 20 3d 3d 20 6e 75 6c  eparators == nul
aa10: 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
aa20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
aa30: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
aa40: 20 20 20 20 20 20 62 75 66 66 65 72 41 73 53 74        bufferAsSt
aa50: 72 69 6e 67 20 3d 20 62 75 66 66 65 72 41 73 53  ring = bufferAsS
aa60: 74 72 69 6e 67 2e 54 72 69 6d 28 75 74 73 4e 61  tring.Trim(utsNa
aa70: 6d 65 53 65 70 61 72 61 74 6f 72 73 29 3b 0d 0a  meSeparators);..
aa80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa90: 73 74 72 69 6e 67 5b 5d 20 70 61 72 74 73 20 3d  string[] parts =
aaa0: 20 62 75 66 66 65 72 41 73 53 74 72 69 6e 67 2e   bufferAsString.
aab0: 53 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20  Split(..        
aac0: 20 20 20 20 20 20 20 20 20 20 75 74 73 4e 61 6d            utsNam
aad0: 65 53 65 70 61 72 61 74 6f 72 73 2c 20 53 74 72  eSeparators, Str
aae0: 69 6e 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73 2e  ingSplitOptions.
aaf0: 52 65 6d 6f 76 65 45 6d 70 74 79 45 6e 74 72 69  RemoveEmptyEntri
ab00: 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  es);....        
ab10: 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73 20        if (parts 
ab20: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ab40: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
ab50: 20 20 20 20 20 20 20 20 20 20 20 75 74 73 6e 61             utsna
ab60: 6d 65 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 20  me localUtsName 
ab70: 3d 20 6e 65 77 20 75 74 73 6e 61 6d 65 28 29 3b  = new utsname();
ab80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ab90: 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e 67    if (parts.Leng
aba0: 74 68 20 3e 3d 20 31 29 0d 0a 20 20 20 20 20 20  th >= 1)..      
abb0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61              loca
abc0: 6c 55 74 73 4e 61 6d 65 2e 73 79 73 6e 61 6d 65  lUtsName.sysname
abd0: 20 3d 20 70 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a   = parts[0];....
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
abf0: 20 28 70 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e   (parts.Length >
ac00: 3d 20 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 2)..          
ac10: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 55 74 73          localUts
ac20: 4e 61 6d 65 2e 6e 6f 64 65 6e 61 6d 65 20 3d 20  Name.nodename = 
ac30: 70 61 72 74 73 5b 31 5d 3b 0d 0a 0d 0a 20 20 20  parts[1];....   
ac40: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ac50: 61 72 74 73 2e 4c 65 6e 67 74 68 20 3e 3d 20 33  arts.Length >= 3
ac60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ac70: 20 20 20 20 20 6c 6f 63 61 6c 55 74 73 4e 61 6d       localUtsNam
ac80: 65 2e 72 65 6c 65 61 73 65 20 3d 20 70 61 72 74  e.release = part
ac90: 73 5b 32 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s[2];....       
aca0: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 74 73         if (parts
acb0: 2e 4c 65 6e 67 74 68 20 3e 3d 20 34 29 0d 0a 20  .Length >= 4).. 
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
acd0: 20 6c 6f 63 61 6c 55 74 73 4e 61 6d 65 2e 76 65   localUtsName.ve
ace0: 72 73 69 6f 6e 20 3d 20 70 61 72 74 73 5b 33 5d  rsion = parts[3]
acf0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ad00: 20 20 20 69 66 20 28 70 61 72 74 73 2e 4c 65 6e     if (parts.Len
ad10: 67 74 68 20 3e 3d 20 35 29 0d 0a 20 20 20 20 20  gth >= 5)..     
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
ad30: 61 6c 55 74 73 4e 61 6d 65 2e 6d 61 63 68 69 6e  alUtsName.machin
ad40: 65 20 3d 20 70 61 72 74 73 5b 34 5d 3b 0d 0a 0d  e = parts[4];...
ad50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  .              u
ad60: 74 73 4e 61 6d 65 20 3d 20 6c 6f 63 61 6c 55 74  tsName = localUt
ad70: 73 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  sName;..        
ad80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
ad90: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
ada0: 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
adb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
adc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
add0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
ade0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
adf0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
ae00: 73 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  se;..      }..  
ae10: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ae20: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 23    }..#endif..  #
ae30: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 2f  endregion....  /
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ae90: 20 20 23 72 65 67 69 6f 6e 20 55 6e 6d 61 6e 61    #region Unmana
aea0: 67 65 64 20 49 6e 74 65 72 6f 70 20 4d 65 74 68  ged Interop Meth
aeb0: 6f 64 73 20 53 74 61 74 69 63 20 43 6c 61 73 73  ods Static Class
aec0: 20 28 57 69 6e 33 32 29 0d 0a 20 20 2f 2f 2f 20   (Win32)..  /// 
aed0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
aee0: 20 54 68 69 73 20 63 6c 61 73 73 20 64 65 63 6c   This class decl
aef0: 61 72 65 73 20 50 2f 49 6e 76 6f 6b 65 20 6d 65  ares P/Invoke me
af00: 74 68 6f 64 73 20 74 6f 20 63 61 6c 6c 20 6e 61  thods to call na
af10: 74 69 76 65 20 57 69 6e 33 32 20 41 50 49 73 2e  tive Win32 APIs.
af20: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
af30: 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
af40: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
af50: 52 4b 0d 0a 20 20 5b 53 75 70 70 72 65 73 73 55  RK..  [SuppressU
af60: 6e 6d 61 6e 61 67 65 64 43 6f 64 65 53 65 63 75  nmanagedCodeSecu
af70: 72 69 74 79 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  rity]..#endif.. 
af80: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
af90: 20 63 6c 61 73 73 20 55 6e 73 61 66 65 4e 61 74   class UnsafeNat
afa0: 69 76 65 4d 65 74 68 6f 64 73 57 69 6e 33 32 0d  iveMethodsWin32.
afb0: 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  .  {..      ////
afc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b000: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
b010: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b020: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
b030: 65 20 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f  e P/Invoke metho
b040: 64 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65  d that wraps the
b050: 20 6e 61 74 69 76 65 20 57 69 6e 33 32 20 4c 6f   native Win32 Lo
b060: 61 64 4c 69 62 72 61 72 79 0d 0a 20 20 20 20 20  adLibrary..     
b070: 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 20 20   /// function.  
b080: 53 65 65 20 74 68 65 20 4d 53 44 4e 20 64 6f 63  See the MSDN doc
b090: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66  umentation for f
b0a0: 75 6c 6c 20 64 65 74 61 69 6c 73 20 6f 6e 20 77  ull details on w
b0b0: 68 61 74 20 69 74 0d 0a 20 20 20 20 20 20 2f 2f  hat it..      //
b0c0: 2f 20 64 6f 65 73 2e 0d 0a 20 20 20 20 20 20 2f  / does...      /
b0d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b0e0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
b0f0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
b100: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
b110: 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63  name of the exec
b120: 75 74 61 62 6c 65 20 6c 69 62 72 61 72 79 2e 0d  utable library..
b130: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
b140: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
b150: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
b160: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
b170: 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 75 70 6f  odule handle upo
b180: 6e 20 73 75 63 63 65 73 73 20 2d 4f 52 2d 20 49  n success -OR- I
b190: 6e 74 50 74 72 2e 5a 65 72 6f 20 6f 6e 20 66 61  ntPtr.Zero on fa
b1a0: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  ilure...      //
b1b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 69  / </returns>..#i
b1c0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
b1d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
b1e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
b1f0: 6b 65 72 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73  kernel32",..#els
b200: 65 0d 0a 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70  e..      [DllImp
b210: 6f 72 74 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a  ort("coredll",..
b220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
b230: 20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74    CallingConvent
b240: 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
b250: 76 65 6e 74 69 6f 6e 2e 57 69 6e 61 70 69 2c 20  vention.Winapi, 
b260: 43 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65  CharSet = CharSe
b270: 74 2e 41 75 74 6f 2c 0d 0a 23 69 66 20 21 50 4c  t.Auto,..#if !PL
b280: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
b290: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
b2a0: 20 20 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e     BestFitMappin
b2b0: 67 20 3d 20 66 61 6c 73 65 2c 20 54 68 72 6f 77  g = false, Throw
b2c0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
b2d0: 20 3d 20 74 72 75 65 2c 0d 0a 23 65 6e 64 69 66   = true,..#endif
b2e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 74 4c  ..          SetL
b2f0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
b300: 5d 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  ]..      interna
b310: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
b320: 49 6e 74 50 74 72 20 4c 6f 61 64 4c 69 62 72 61  IntPtr LoadLibra
b330: 72 79 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61  ry(string fileNa
b340: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  me);....      //
b350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b390: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b3a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b3b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
b3c0: 73 20 74 68 65 20 50 2f 49 6e 76 6f 6b 65 20 6d  s the P/Invoke m
b3d0: 65 74 68 6f 64 20 74 68 61 74 20 77 72 61 70 73  ethod that wraps
b3e0: 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 6e 33   the native Win3
b3f0: 32 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 0d  2 GetSystemInfo.
b400: 0a 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74  .      /// funct
b410: 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20 4d 53  ion.  See the MS
b420: 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  DN documentation
b430: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c   for full detail
b440: 73 20 6f 6e 20 77 68 61 74 20 69 74 0d 0a 20 20  s on what it..  
b450: 20 20 20 20 2f 2f 2f 20 64 6f 65 73 2e 0d 0a 20      /// does... 
b460: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b470: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
b480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 79 73 74  param name="syst
b490: 65 6d 49 6e 66 6f 22 3e 0d 0a 20 20 20 20 20 20  emInfo">..      
b4a0: 2f 2f 2f 20 54 68 65 20 73 79 73 74 65 6d 20 69  /// The system i
b4b0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 74 72 75 63  nformation struc
b4c0: 74 75 72 65 20 74 6f 20 62 65 20 66 69 6c 6c 65  ture to be fille
b4d0: 64 20 69 6e 20 62 79 20 74 68 65 20 66 75 6e 63  d in by the func
b4e0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
b4f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 23 69 66 20 21   </param>..#if !
b500: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
b510: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
b520: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 6b 65 72   [DllImport("ker
b530: 6e 65 6c 33 32 22 2c 0d 0a 23 65 6c 73 65 0d 0a  nel32",..#else..
b540: 20 20 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74        [DllImport
b550: 28 22 63 6f 72 65 64 6c 6c 22 2c 0d 0a 23 65 6e  ("coredll",..#en
b560: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 43  dif..          C
b570: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
b580: 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
b590: 74 69 6f 6e 2e 57 69 6e 61 70 69 29 5d 0d 0a 20  tion.Winapi)].. 
b5a0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
b5b0: 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
b5c0: 20 47 65 74 53 79 73 74 65 6d 49 6e 66 6f 28 6f   GetSystemInfo(o
b5d0: 75 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 20 73  ut SYSTEM_INFO s
b5e0: 79 73 74 65 6d 49 6e 66 6f 29 3b 0d 0a 0d 0a 20  ystemInfo);.... 
b5f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b640: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b650: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
b660: 68 69 73 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20  his enumeration 
b670: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 6f 73  contains the pos
b680: 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72  sible values for
b690: 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 0d 0a   the processor..
b6a0: 20 20 20 20 20 20 2f 2f 2f 20 61 72 63 68 69 74        /// archit
b6b0: 65 63 74 75 72 65 20 66 69 65 6c 64 20 6f 66 20  ecture field of 
b6c0: 74 68 65 20 73 79 73 74 65 6d 20 69 6e 66 6f 72  the system infor
b6d0: 6d 61 74 69 6f 6e 20 73 74 72 75 63 74 75 72 65  mation structure
b6e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b6f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69  ummary>..      i
b700: 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 50 72 6f  nternal enum Pro
b710: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
b720: 72 65 20 3a 20 75 73 68 6f 72 74 20 2f 2a 20 43  re : ushort /* C
b730: 4f 4d 50 41 54 3a 20 57 69 6e 33 32 2e 20 2a 2f  OMPAT: Win32. */
b740: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
b750: 20 20 20 20 20 49 6e 74 65 6c 20 3d 20 30 2c 0d       Intel = 0,.
b760: 0a 20 20 20 20 20 20 20 20 20 20 4d 49 50 53 20  .          MIPS 
b770: 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  = 1,..          
b780: 41 6c 70 68 61 20 3d 20 32 2c 0d 0a 20 20 20 20  Alpha = 2,..    
b790: 20 20 20 20 20 20 50 6f 77 65 72 50 43 20 3d 20        PowerPC = 
b7a0: 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 48  3,..          SH
b7b0: 78 20 3d 20 34 2c 0d 0a 20 20 20 20 20 20 20 20  x = 4,..        
b7c0: 20 20 41 52 4d 20 3d 20 35 2c 0d 0a 20 20 20 20    ARM = 5,..    
b7d0: 20 20 20 20 20 20 49 41 36 34 20 3d 20 36 2c 0d        IA64 = 6,.
b7e0: 0a 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61  .          Alpha
b7f0: 36 34 20 3d 20 37 2c 0d 0a 20 20 20 20 20 20 20  64 = 7,..       
b800: 20 20 20 4d 53 49 4c 20 3d 20 38 2c 0d 0a 20 20     MSIL = 8,..  
b810: 20 20 20 20 20 20 20 20 41 4d 44 36 34 20 3d 20          AMD64 = 
b820: 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 49 41  9,..          IA
b830: 33 32 5f 6f 6e 5f 57 69 6e 36 34 20 3d 20 31 30  32_on_Win64 = 10
b840: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 55 6e 6b  ,..          Unk
b850: 6e 6f 77 6e 20 3d 20 30 78 46 46 46 46 0d 0a 20  nown = 0xFFFF.. 
b860: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
b8c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b8d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73        /// This s
b8e0: 74 72 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e  tructure contain
b8f0: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  s information ab
b900: 6f 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20  out the current 
b910: 63 6f 6d 70 75 74 65 72 2e 20 54 68 69 73 0d 0a  computer. This..
b920: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64        /// includ
b930: 65 73 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  es the processor
b940: 20 74 79 70 65 2c 20 70 61 67 65 20 73 69 7a 65   type, page size
b950: 2c 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73  , memory address
b960: 65 73 2c 20 65 74 63 2e 0d 0a 20 20 20 20 20 20  es, etc...      
b970: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b980: 20 20 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79        [StructLay
b990: 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
b9a0: 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
b9b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75     internal stru
b9c0: 63 74 20 53 59 53 54 45 4d 5f 49 4e 46 4f 0d 0a  ct SYSTEM_INFO..
b9d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b9e0: 20 20 20 70 75 62 6c 69 63 20 50 72 6f 63 65 73     public Proces
b9f0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20  sorArchitecture 
ba00: 77 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  wProcessorArchit
ba10: 65 63 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 20  ecture;..       
ba20: 20 20 20 70 75 62 6c 69 63 20 75 73 68 6f 72 74     public ushort
ba30: 20 77 52 65 73 65 72 76 65 64 3b 20 2f 2a 20 4e   wReserved; /* N
ba40: 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
ba50: 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 69 6e        public uin
ba60: 74 20 64 77 50 61 67 65 53 69 7a 65 3b 20 2f 2a  t dwPageSize; /*
ba70: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
ba80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
ba90: 6e 74 50 74 72 20 6c 70 4d 69 6e 69 6d 75 6d 41  ntPtr lpMinimumA
baa0: 70 70 6c 69 63 61 74 69 6f 6e 41 64 64 72 65 73  pplicationAddres
bab0: 73 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  s; /* NOT USED *
bac0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62  /..          pub
bad0: 6c 69 63 20 49 6e 74 50 74 72 20 6c 70 4d 61 78  lic IntPtr lpMax
bae0: 69 6d 75 6d 41 70 70 6c 69 63 61 74 69 6f 6e 41  imumApplicationA
baf0: 64 64 72 65 73 73 3b 20 2f 2a 20 4e 4f 54 20 55  ddress; /* NOT U
bb00: 53 45 44 20 2a 2f 0d 0a 23 69 66 20 50 4c 41 54  SED */..#if PLAT
bb10: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
bb20: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
bb30: 20 70 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41   public uint dwA
bb40: 63 74 69 76 65 50 72 6f 63 65 73 73 6f 72 4d 61  ctiveProcessorMa
bb50: 73 6b 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  sk; /* NOT USED 
bb60: 2a 2f 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  */..#else..     
bb70: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
bb80: 74 72 20 64 77 41 63 74 69 76 65 50 72 6f 63 65  tr dwActiveProce
bb90: 73 73 6f 72 4d 61 73 6b 3b 20 2f 2a 20 4e 4f 54  ssorMask; /* NOT
bba0: 20 55 53 45 44 20 2a 2f 0d 0a 23 65 6e 64 69 66   USED */..#endif
bbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75 62 6c  ..          publ
bbc0: 69 63 20 75 69 6e 74 20 64 77 4e 75 6d 62 65 72  ic uint dwNumber
bbd0: 4f 66 50 72 6f 63 65 73 73 6f 72 73 3b 20 2f 2a  OfProcessors; /*
bbe0: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
bbf0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75          public u
bc00: 69 6e 74 20 64 77 50 72 6f 63 65 73 73 6f 72 54  int dwProcessorT
bc10: 79 70 65 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44  ype; /* NOT USED
bc20: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70   */..          p
bc30: 75 62 6c 69 63 20 75 69 6e 74 20 64 77 41 6c 6c  ublic uint dwAll
bc40: 6f 63 61 74 69 6f 6e 47 72 61 6e 75 6c 61 72 69  ocationGranulari
bc50: 74 79 3b 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20  ty; /* NOT USED 
bc60: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  */..          pu
bc70: 62 6c 69 63 20 75 73 68 6f 72 74 20 77 50 72 6f  blic ushort wPro
bc80: 63 65 73 73 6f 72 4c 65 76 65 6c 3b 20 2f 2a 20  cessorLevel; /* 
bc90: 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
bca0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 75 73         public us
bcb0: 68 6f 72 74 20 77 50 72 6f 63 65 73 73 6f 72 52  hort wProcessorR
bcc0: 65 76 69 73 69 6f 6e 3b 20 2f 2a 20 4e 4f 54 20  evision; /* NOT 
bcd0: 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d  USED */..      }
bce0: 0d 0a 20 20 7d 0d 0a 20 20 23 65 6e 64 72 65 67  ..  }..  #endreg
bcf0: 69 6f 6e 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f  ion....  ///////
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 23 72 65 67  //////....  #reg
bd50: 69 6f 6e 20 55 6e 6d 61 6e 61 67 65 64 20 49 6e  ion Unmanaged In
bd60: 74 65 72 6f 70 20 4d 65 74 68 6f 64 73 20 53 74  terop Methods St
bd70: 61 74 69 63 20 43 6c 61 73 73 20 28 53 51 4c 69  atic Class (SQLi
bd80: 74 65 29 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  te)..  /// <summ
bd90: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
bda0: 20 63 6c 61 73 73 20 64 65 63 6c 61 72 65 73 20   class declares 
bdb0: 50 2f 49 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 73  P/Invoke methods
bdc0: 20 74 6f 20 63 61 6c 6c 20 6e 61 74 69 76 65 20   to call native 
bdd0: 53 51 4c 69 74 65 20 41 50 49 73 2e 0d 0a 20 20  SQLite APIs...  
bde0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
bdf0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
be00: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
be10: 20 20 5b 53 75 70 70 72 65 73 73 55 6e 6d 61 6e    [SuppressUnman
be20: 61 67 65 64 43 6f 64 65 53 65 63 75 72 69 74 79  agedCodeSecurity
be30: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 69 6e 74  ]..#endif..  int
be40: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
be50: 73 73 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ss UnsafeNativeM
be60: 65 74 68 6f 64 73 0d 0a 20 20 7b 0d 0a 20 20 20  ethods..  {..   
be70: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
be80: 73 74 72 69 6e 67 20 45 78 63 65 70 74 69 6f 6e  string Exception
be90: 4d 65 73 73 61 67 65 46 6f 72 6d 61 74 20 3d 0d  MessageFormat =.
bea0: 0a 20 20 20 20 20 20 20 20 20 20 22 43 61 75 67  .          "Caug
beb0: 68 74 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20  ht exception in 
bec0: 5c 22 7b 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20  \"{0}\" method: 
bed0: 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  {1}";....      /
bee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bf30: 20 20 23 72 65 67 69 6f 6e 20 53 68 61 72 65 64    #region Shared
bf40: 20 4e 61 74 69 76 65 20 53 51 4c 69 74 65 20 4c   Native SQLite L
bf50: 69 62 72 61 72 79 20 50 72 65 2d 4c 6f 61 64 69  ibrary Pre-Loadi
bf60: 6e 67 20 43 6f 64 65 0d 0a 20 20 20 20 20 20 23  ng Code..      #
bf70: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
bf80: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
bf90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bfa0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c       /// The fil
bfb0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64  e extension used
bfc0: 20 66 6f 72 20 64 79 6e 61 6d 69 63 20 6c 69 6e   for dynamic lin
bfd0: 6b 20 6c 69 62 72 61 72 69 65 73 2e 0d 0a 20 20  k libraries...  
bfe0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bff0: 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
c000: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
c010: 79 20 73 74 72 69 6e 67 20 44 6c 6c 46 69 6c 65  y string DllFile
c020: 45 78 74 65 6e 73 69 6f 6e 20 3d 20 22 2e 64 6c  Extension = ".dl
c030: 6c 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  l";....      ///
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c080: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
c090: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c0a0: 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20     /// The file 
c0b0: 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 66  extension used f
c0c0: 6f 72 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  or the XML confi
c0d0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
c0e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c0f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
c100: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
c110: 6e 6c 79 20 73 74 72 69 6e 67 20 43 6f 6e 66 69  nly string Confi
c120: 67 46 69 6c 65 45 78 74 65 6e 73 69 6f 6e 20 3d  gFileExtension =
c130: 20 22 2e 63 6f 6e 66 69 67 22 3b 0d 0a 0d 0a 20   ".config";.... 
c140: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c190: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c1a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
c1b0: 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20  his is the name 
c1c0: 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  of the XML confi
c1d0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 73 70  guration file sp
c1e0: 65 63 69 66 69 63 20 74 6f 20 74 68 65 0d 0a 20  ecific to the.. 
c1f0: 20 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e       /// System.
c200: 44 61 74 61 2e 53 51 4c 69 74 65 20 61 73 73 65  Data.SQLite asse
c210: 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mbly...      ///
c220: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c230: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c240: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
c250: 67 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g XmlConfigFileN
c260: 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
c270: 20 74 79 70 65 6f 66 28 55 6e 73 61 66 65 4e 61   typeof(UnsafeNa
c280: 74 69 76 65 4d 65 74 68 6f 64 73 29 2e 4e 61 6d  tiveMethods).Nam
c290: 65 73 70 61 63 65 20 2b 20 44 6c 6c 46 69 6c 65  espace + DllFile
c2a0: 45 78 74 65 6e 73 69 6f 6e 20 2b 0d 0a 20 20 20  Extension +..   
c2b0: 20 20 20 20 20 20 20 43 6f 6e 66 69 67 46 69 6c         ConfigFil
c2c0: 65 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 0d 0a 20  eExtension;.... 
c2d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c320: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c330: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
c340: 68 69 73 20 69 73 20 74 68 65 20 58 4d 4c 20 63  his is the XML c
c350: 6f 6e 66 69 67 75 72 61 74 72 69 6f 6e 20 66 69  onfiguratrion fi
c360: 6c 65 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69  le token that wi
c370: 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ll be replaced w
c380: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ith..      /// t
c390: 68 65 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  he qualified pat
c3a0: 68 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  h to the directo
c3b0: 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ry containing th
c3c0: 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
c3d0: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ion..      /// f
c3e0: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ile...      /// 
c3f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c400: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c410: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
c420: 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72 65 63 74   XmlConfigDirect
c430: 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20 20 20  oryToken =..    
c440: 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61 64 53        "%PreLoadS
c450: 51 4c 69 74 65 5f 58 6d 6c 43 6f 6e 66 69 67 44  QLite_XmlConfigD
c460: 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 20 20 20  irectory%";..   
c470: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c480: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
c490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4d0: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
c4e0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
c4f0: 6e 74 73 20 28 44 65 73 6b 74 6f 70 20 46 72 61  nts (Desktop Fra
c500: 6d 65 77 6f 72 6b 20 4f 6e 6c 79 29 0d 0a 23 69  mework Only)..#i
c510: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
c520: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
c530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c540: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
c550: 73 20 69 73 20 74 68 65 20 65 6e 76 69 72 6f 6e  s is the environ
c560: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 74 6f  ment variable to
c570: 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ken that will be
c580: 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 0d 0a   replaced with..
c590: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 71 75        /// the qu
c5a0: 61 6c 69 66 69 65 64 20 70 61 74 68 20 74 6f 20  alified path to 
c5b0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f  the directory co
c5c0: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 61 73  ntaining this as
c5d0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  sembly...      /
c5e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c5f0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
c600: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
c610: 69 6e 67 20 41 73 73 65 6d 62 6c 79 44 69 72 65  ing AssemblyDire
c620: 63 74 6f 72 79 54 6f 6b 65 6e 20 3d 0d 0a 20 20  ctoryToken =..  
c630: 20 20 20 20 20 20 20 20 22 25 50 72 65 4c 6f 61          "%PreLoa
c640: 64 53 51 4c 69 74 65 5f 41 73 73 65 6d 62 6c 79  dSQLite_Assembly
c650: 44 69 72 65 63 74 6f 72 79 25 22 3b 0d 0a 0d 0a  Directory%";....
c660: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
c6b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c6c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c6d0: 54 68 69 73 20 69 73 20 74 68 65 20 65 6e 76 69  This is the envi
c6e0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
c6f0: 20 74 6f 6b 65 6e 20 74 68 61 74 20 77 69 6c 6c   token that will
c700: 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
c710: 68 20 61 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  h an..      /// 
c720: 61 62 62 72 65 76 69 61 74 69 6f 6e 20 6f 66 20  abbreviation of 
c730: 74 68 65 20 74 61 72 67 65 74 20 66 72 61 6d 65  the target frame
c740: 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
c750: 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20  alue associated 
c760: 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  with..      /// 
c770: 74 68 69 73 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  this assembly...
c780: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c790: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
c7a0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
c7b0: 6e 6c 79 20 73 74 72 69 6e 67 20 54 61 72 67 65  nly string Targe
c7c0: 74 46 72 61 6d 65 77 6f 72 6b 54 6f 6b 65 6e 20  tFrameworkToken 
c7d0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 22 25 50  =..          "%P
c7e0: 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 54 61 72  reLoadSQLite_Tar
c7f0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 25 22 3b 0d  getFramework%";.
c800: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 23  .#endif..      #
c810: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
c820: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c870: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
c880: 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
c890: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
c8b0: 6c 6f 63 6b 20 69 73 20 75 73 65 64 20 74 6f 20  lock is used to 
c8c0: 70 72 6f 74 65 63 74 20 74 68 65 20 73 74 61 74  protect the stat
c8d0: 69 63 20 5f 53 51 4c 69 74 65 4e 61 74 69 76 65  ic _SQLiteNative
c8e0: 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 2c 0d  ModuleFileName,.
c8f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 5f 53 51 4c 69  .      /// _SQLi
c900: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
c910: 6e 64 6c 65 2c 20 61 6e 64 20 70 72 6f 63 65 73  ndle, and proces
c920: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
c930: 6c 61 74 66 6f 72 6d 73 20 66 69 65 6c 64 73 2e  latforms fields.
c940: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c950: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
c960: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
c970: 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 74 61  donly object sta
c980: 74 69 63 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ticSyncRoot = ne
c990: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
c9a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c9f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ca00: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
ca10: 68 69 73 20 64 69 63 74 69 6f 6e 61 72 79 20 73  his dictionary s
ca20: 74 6f 72 65 73 20 74 68 65 20 6d 61 70 70 69 6e  tores the mappin
ca30: 67 73 20 62 65 74 77 65 65 6e 20 70 72 6f 63 65  gs between proce
ca40: 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
ca50: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  e..      /// nam
ca60: 65 73 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20  es and platform 
ca70: 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6d 61  names.  These ma
ca80: 70 70 69 6e 67 73 20 61 72 65 20 6e 6f 77 20 75  ppings are now u
ca90: 73 65 64 20 66 6f 72 20 74 77 6f 0d 0a 20 20 20  sed for two..   
caa0: 20 20 20 2f 2f 2f 20 70 75 72 70 6f 73 65 73 2e     /// purposes.
cab0: 20 20 46 69 72 73 74 2c 20 74 68 65 79 20 61 72    First, they ar
cac0: 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  e used to determ
cad0: 69 6e 65 20 69 66 20 74 68 65 20 61 73 73 65 6d  ine if the assem
cae0: 62 6c 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20  bly code..      
caf0: 2f 2f 2f 20 62 61 73 65 20 73 68 6f 75 6c 64 20  /// base should 
cb00: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20  be used instead 
cb10: 6f 66 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2c  of the location,
cb20: 20 62 61 73 65 64 20 75 70 6f 6e 20 77 68 65 74   based upon whet
cb30: 68 65 72 20 6f 6e 65 0d 0a 20 20 20 20 20 20 2f  her one..      /
cb40: 2f 2f 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68  // or more of th
cb50: 65 20 6e 61 6d 65 64 20 73 75 62 2d 64 69 72 65  e named sub-dire
cb60: 63 74 6f 72 69 65 73 20 65 78 69 73 74 20 77 69  ctories exist wi
cb70: 74 68 69 6e 20 74 68 65 20 61 73 73 65 6d 62 6c  thin the assembl
cb80: 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f  y code..      //
cb90: 2f 20 62 61 73 65 2e 20 20 53 65 63 6f 6e 64 2c  / base.  Second,
cba0: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 74   they are used t
cbb0: 6f 20 61 73 73 69 73 74 20 69 6e 20 6c 6f 61 64  o assist in load
cbc0: 69 6e 67 20 74 68 65 20 61 70 70 72 6f 70 72 69  ing the appropri
cbd0: 61 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ate..      /// S
cbe0: 51 4c 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73  QLite interop as
cbf0: 73 65 6d 62 6c 79 20 69 6e 74 6f 20 74 68 65 20  sembly into the 
cc00: 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e  current process.
cc10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
cc20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
cc30: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
cc40: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
cc50: 73 74 72 69 6e 67 3e 20 70 72 6f 63 65 73 73 6f  string> processo
cc60: 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
cc70: 74 66 6f 72 6d 73 3b 0d 0a 0d 0a 20 20 20 20 20  tforms;....     
cc80: 20 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 2f 2f 2f 2f 2f 2f  ////////////////
cca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
ccd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cce0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
ccf0: 69 73 20 74 68 65 20 63 61 63 68 65 64 20 72 65  is the cached re
cd00: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
cd10: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
cd20: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
cd30: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
cd40: 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e  /> method -OR- n
cd50: 75 6c 6c 20 69 66 20 74 68 61 74 20 6d 65 74 68  ull if that meth
cd60: 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61  od..      /// ha
cd70: 73 20 6e 65 76 65 72 20 72 65 74 75 72 6e 65 64  s never returned
cd80: 20 61 20 76 61 6c 69 64 20 76 61 6c 75 65 2e 0d   a valid value..
cd90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
cda0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
cdb0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
cdc0: 6e 67 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c  ng cachedAssembl
cdd0: 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d 0a 20  yDirectory;.... 
cde0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
ce30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ce40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
ce50: 68 65 6e 20 74 68 69 73 20 66 69 65 6c 64 20 69  hen this field i
ce60: 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 69 74 20 69  s non-zero, it i
ce70: 6e 64 69 63 61 74 65 73 20 74 68 65 0d 0a 20 20  ndicates the..  
ce80: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
ce90: 66 3d 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69  f="GetAssemblyDi
cea0: 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68  rectory" /> meth
ceb0: 6f 64 20 77 61 73 20 6e 6f 74 20 61 62 6c 65 20  od was not able 
cec0: 74 6f 20 6c 6f 63 61 74 65 20 61 0d 0a 20 20 20  to locate a..   
ced0: 20 20 20 2f 2f 2f 20 73 75 69 74 61 62 6c 65 20     /// suitable 
cee0: 61 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f  assembly directo
cef0: 72 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20  ry.  The..      
cf00: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
cf10: 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c 79  etCachedAssembly
cf20: 44 69 72 65 63 74 6f 72 79 22 20 2f 3e 20 6d 65  Directory" /> me
cf30: 74 68 6f 64 20 77 69 6c 6c 20 63 68 65 63 6b 20  thod will check 
cf40: 74 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  this..      /// 
cf50: 66 69 65 6c 64 20 61 6e 64 20 73 6b 69 70 73 20  field and skips 
cf60: 63 61 6c 6c 73 20 69 6e 74 6f 20 74 68 65 20 3c  calls into the <
cf70: 73 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73  see cref="GetAss
cf80: 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
cf90: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65  />..      /// me
cfa0: 74 68 6f 64 20 77 68 65 6e 65 76 65 72 20 69 74  thod whenever it
cfb0: 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20   is non-zero... 
cfc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
cfd0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
cfe0: 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6e  te static bool n
cff0: 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
d000: 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ry;....      ///
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d050: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f  //////..      //
d060: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d070: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
d080: 68 65 20 63 61 63 68 65 64 20 72 65 74 75 72 6e  he cached return
d090: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 0d   value from the.
d0a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
d0b0: 63 72 65 66 3d 22 47 65 74 58 6d 6c 43 6f 6e 66  cref="GetXmlConf
d0c0: 69 67 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d  igFileName" /> m
d0d0: 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ethod -OR- null 
d0e0: 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64 0d 0a  if that method..
d0f0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 65        /// has ne
d100: 76 65 72 20 72 65 74 75 72 6e 65 64 20 61 20 76  ver returned a v
d110: 61 6c 69 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20  alid value...   
d120: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d130: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
d140: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 63   static string c
d150: 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69  achedXmlConfigFi
d160: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
d170: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
d180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
d1c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d1d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
d1e0: 74 68 69 73 20 66 69 65 6c 64 20 69 73 20 6e 6f  this field is no
d1f0: 6e 2d 7a 65 72 6f 2c 20 69 74 20 69 6e 64 69 63  n-zero, it indic
d200: 61 74 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ates the..      
d210: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 47  /// <see cref="G
d220: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
d230: 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ame" /> method w
d240: 61 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 6c  as not able to l
d250: 6f 63 61 74 65 20 61 0d 0a 20 20 20 20 20 20 2f  ocate a..      /
d260: 2f 2f 20 73 75 69 74 61 62 6c 65 20 58 4d 4c 20  // suitable XML 
d270: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
d280: 6c 65 20 6e 61 6d 65 2e 20 20 54 68 65 0d 0a 20  le name.  The.. 
d290: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
d2a0: 65 66 3d 22 47 65 74 43 61 63 68 65 64 58 6d 6c  ef="GetCachedXml
d2b0: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 20  ConfigFileName" 
d2c0: 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63  /> method will c
d2d0: 68 65 63 6b 20 74 68 69 73 0d 0a 20 20 20 20 20  heck this..     
d2e0: 20 2f 2f 2f 20 66 69 65 6c 64 20 61 6e 64 20 73   /// field and s
d2f0: 6b 69 70 73 20 63 61 6c 6c 73 20 69 6e 74 6f 20  kips calls into 
d300: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47  the <see cref="G
d310: 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  etXmlConfigFileN
d320: 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  ame" />..      /
d330: 2f 2f 20 6d 65 74 68 6f 64 20 77 68 65 6e 65 76  // method whenev
d340: 65 72 20 69 74 20 69 73 20 6e 6f 6e 2d 7a 65 72  er it is non-zer
d350: 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  o...      /// </
d360: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d370: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
d380: 6f 6f 6c 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67 46  ool noXmlConfigF
d390: 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
d3a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d3b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
d400: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d410: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 46 6f  y>..      /// Fo
d420: 72 20 6e 6f 77 2c 20 74 68 69 73 20 6d 65 74 68  r now, this meth
d430: 6f 64 20 73 69 6d 70 6c 79 20 63 61 6c 6c 73 20  od simply calls 
d440: 74 68 65 20 49 6e 69 74 69 61 6c 69 7a 65 20 6d  the Initialize m
d450: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
d460: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d470: 20 20 20 20 73 74 61 74 69 63 20 55 6e 73 61 66      static Unsaf
d480: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 28 29  eNativeMethods()
d490: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
d4a0: 20 20 20 20 20 49 6e 69 74 69 61 6c 69 7a 65 28       Initialize(
d4b0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
d4c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d510: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
d520: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
d530: 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 69 74 69  ttempts to initi
d540: 61 6c 69 7a 65 20 74 68 69 73 20 63 6c 61 73 73  alize this class
d550: 20 62 79 20 70 72 65 2d 6c 6f 61 64 69 6e 67 20   by pre-loading 
d560: 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
d570: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62  e..      /// lib
d580: 72 61 72 79 20 66 6f 72 20 74 68 65 20 70 72 6f  rary for the pro
d590: 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74  cessor architect
d5a0: 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72 65  ure of the curre
d5b0: 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  nt process...   
d5c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d5d0: 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61  >..      interna
d5e0: 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e  l static void In
d5f0: 69 74 69 61 6c 69 7a 65 28 29 0d 0a 20 20 20 20  itialize()..    
d600: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
d610: 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
d620: 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
d630: 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  UG..          //
d640: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
d650: 4f 54 45 3a 20 43 72 65 61 74 65 20 74 68 65 20  OTE: Create the 
d660: 6c 69 73 74 73 20 6f 66 20 73 74 61 74 69 73 74  lists of statist
d670: 69 63 73 20 74 68 61 74 20 77 69 6c 6c 20 63 6f  ics that will co
d680: 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 20  ntain..         
d690: 20 2f 2f 20 20 20 20 20 20 20 76 61 72 69 6f 75   //       variou
d6a0: 73 20 63 6f 75 6e 74 73 20 75 73 65 64 20 69 6e  s counts used in
d6b0: 20 64 65 62 75 67 67 69 6e 67 2c 20 69 6e 63 6c   debugging, incl
d6c0: 75 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  uding the..     
d6d0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 75       //       nu
d6e0: 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 65 61  mber of times ea
d6f0: 63 68 20 73 65 74 74 69 6e 67 20 76 61 6c 75 65  ch setting value
d700: 20 68 61 73 20 62 65 65 6e 20 72 65 61 64 2e 0d   has been read..
d710: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d720: 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44 61           DebugDa
d730: 74 61 2e 49 6e 69 74 69 61 6c 69 7a 65 28 29 3b  ta.Initialize();
d740: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
d750: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
d760: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
d770: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d780: 45 3a 20 43 68 65 63 6b 20 69 66 20 61 20 64 65  E: Check if a de
d790: 62 75 67 67 65 72 20 6e 65 65 64 73 20 74 6f 20  bugger needs to 
d7a0: 62 65 20 61 74 74 61 63 68 65 64 20 62 65 66 6f  be attached befo
d7b0: 72 65 20 64 6f 69 6e 67 20 61 6e 79 0d 0a 20 20  re doing any..  
d7c0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
d7d0: 20 72 65 61 6c 20 77 6f 72 6b 2e 0d 0a 20 20 20   real work...   
d7e0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
d7f0: 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f       HelperMetho
d800: 64 73 2e 4d 61 79 62 65 42 72 65 61 6b 49 6e 74  ds.MaybeBreakInt
d810: 6f 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 0d 0a  oDebugger();....
d820: 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44  #if SQLITE_STAND
d830: 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52  ARD || USE_INTER
d840: 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f  OP_DLL || PLATFO
d850: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d860: 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c 4f 41 44  ORK..#if PRELOAD
d870: 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59 0d  _NATIVE_LIBRARY.
d880: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
d890: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
d8a0: 3a 20 49 66 20 74 68 65 20 22 4e 6f 5f 50 72 65  : If the "No_Pre
d8b0: 4c 6f 61 64 53 51 4c 69 74 65 22 20 65 6e 76 69  LoadSQLite" envi
d8c0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
d8d0: 20 69 73 20 73 65 74 20 28 74 6f 0d 0a 20 20 20   is set (to..   
d8e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
d8f0: 61 6e 79 74 68 69 6e 67 29 2c 20 73 6b 69 70 20  anything), skip 
d900: 61 6c 6c 20 6f 66 20 6f 75 72 20 73 70 65 63 69  all of our speci
d910: 61 6c 20 63 6f 64 65 20 61 6e 64 20 73 69 6d 70  al code and simp
d920: 6c 79 20 72 65 74 75 72 6e 2e 0d 0a 20 20 20 20  ly return...    
d930: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d940: 20 20 20 20 69 66 20 28 47 65 74 53 65 74 74 69      if (GetSetti
d950: 6e 67 56 61 6c 75 65 28 22 4e 6f 5f 50 72 65 4c  ngValue("No_PreL
d960: 6f 61 64 53 51 4c 69 74 65 22 2c 20 6e 75 6c 6c  oadSQLite", null
d970: 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  ) != null)..    
d980: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d990: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69  ;..#endif..#endi
d9a0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  f....          l
d9b0: 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52  ock (staticSyncR
d9c0: 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
d9d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d9e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
d9f0: 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 6b 65     // TODO: Make
da00: 20 73 75 72 65 20 74 68 69 73 20 6c 69 73 74 20   sure this list 
da10: 69 73 20 75 70 64 61 74 65 64 20 69 66 20 74 68  is updated if th
da20: 65 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20 20  e supported..   
da30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
da40: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 20 61 72      processor ar
da50: 63 68 69 74 65 63 74 75 72 65 20 6e 61 6d 65 73  chitecture names
da60: 20 61 6e 64 2f 6f 72 20 70 6c 61 74 66 6f 72 6d   and/or platform
da70: 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
da80: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
da90: 68 61 6e 67 65 73 2e 0d 0a 20 20 20 20 20 20 20  hanges...       
daa0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
dab0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f           if (pro
dac0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
dad0: 72 65 50 6c 61 74 66 6f 72 6d 73 20 3d 3d 20 6e  rePlatforms == n
dae0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
daf0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
db00: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
db20: 2f 20 4e 4f 54 45 3a 20 43 72 65 61 74 65 20 74  / NOTE: Create t
db30: 68 65 20 6d 61 70 20 6f 66 20 70 72 6f 63 65 73  he map of proces
db40: 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
db50: 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
db60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
db70: 20 20 20 74 6f 20 70 6c 61 74 66 6f 72 6d 20 6e     to platform n
db80: 61 6d 65 73 20 75 73 69 6e 67 20 61 20 63 61 73  ames using a cas
db90: 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 74  e-insensitive st
dba0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
dbb0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
dbc0: 20 63 6f 6d 70 61 72 65 72 2e 0d 0a 20 20 20 20   comparer...    
dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dbe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dbf0: 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
dc00: 68 69 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72  hitecturePlatfor
dc10: 6d 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ms =..          
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
dc30: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
dc40: 67 2c 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20  g, string>(..   
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
dc70: 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e  parer.OrdinalIgn
dc80: 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20  oreCase);....   
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dca0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
dcb0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65       // NOTE: Se
dcc0: 74 75 70 20 74 68 65 20 6c 69 73 74 20 6f 66 20  tup the list of 
dcd0: 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 73 20 61  platform names a
dce0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd00: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 73    //       the s
dd10: 75 70 70 6f 72 74 65 64 20 70 72 6f 63 65 73 73  upported process
dd20: 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65 73  or architectures
dd30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dd40: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
dd50: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
dd60: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
dd70: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 78  Platforms.Add("x
dd80: 38 36 22 2c 20 22 57 69 6e 33 32 22 29 3b 0d 0a  86", "Win32");..
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dda0: 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
ddb0: 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
ddc0: 2e 41 64 64 28 22 78 38 36 5f 36 34 22 2c 20 22  .Add("x86_64", "
ddd0: 78 36 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  x64");..        
dde0: 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73            proces
ddf0: 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
de00: 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41 4d  latforms.Add("AM
de10: 44 36 34 22 2c 20 22 78 36 34 22 29 3b 0d 0a 20  D64", "x64");.. 
de20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de30: 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
de40: 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73 2e  ecturePlatforms.
de50: 41 64 64 28 22 49 41 36 34 22 2c 20 22 49 74 61  Add("IA64", "Ita
de60: 6e 69 75 6d 22 29 3b 0d 0a 20 20 20 20 20 20 20  nium");..       
de70: 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65             proce
de80: 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
de90: 50 6c 61 74 66 6f 72 6d 73 2e 41 64 64 28 22 41  Platforms.Add("A
dea0: 52 4d 22 2c 20 22 57 69 6e 43 45 22 29 3b 0d 0a  RM", "WinCE");..
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
dec0: 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
ded0: 41 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e  ANDARD || USE_IN
dee0: 54 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41  TEROP_DLL || PLA
def0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
df00: 4d 45 57 4f 52 4b 0d 0a 23 69 66 20 50 52 45 4c  MEWORK..#if PREL
df10: 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41  OAD_NATIVE_LIBRA
df20: 52 59 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RY..            
df30: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
df40: 20 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57      // BUGBUG: W
df50: 68 61 74 20 61 62 6f 75 74 20 6f 74 68 65 72 20  hat about other 
df60: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
df70: 69 6e 73 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ins?..          
df80: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
df90: 20 20 20 20 20 20 69 66 20 28 5f 53 51 4c 69 74        if (_SQLit
dfa0: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e  eNativeModuleHan
dfb0: 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
dfc0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
dfd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dfe0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
dff0: 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d 20 6e  aseDirectory = n
e000: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
e010: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70          string p
e020: 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
e030: 74 75 72 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  ture = null;..  
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 62 6f 6f 6c 20 61 6c 6c 6f 77 42 61 73 65 44 69  bool allowBaseDi
e060: 72 65 63 74 6f 72 79 4f 6e 6c 79 20 3d 20 66 61  rectoryOnly = fa
e070: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
e080: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49 47 4e            /* IGN
e090: 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ORED */..       
e0a0: 20 20 20 20 20 20 20 20 20 20 20 53 65 61 72 63             Searc
e0b0: 68 46 6f 72 44 69 72 65 63 74 6f 72 79 28 0d 0a  hForDirectory(..
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0d0: 20 20 20 20 20 20 72 65 66 20 62 61 73 65 44 69        ref baseDi
e0e0: 72 65 63 74 6f 72 79 2c 20 72 65 66 20 70 72 6f  rectory, ref pro
e0f0: 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
e100: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
e110: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 61             ref a
e120: 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
e130: 79 4f 6e 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  yOnly);....     
e140: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
e150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e160: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65     // NOTE: Atte
e170: 6d 70 74 20 74 6f 20 70 72 65 2d 6c 6f 61 64 20  mpt to pre-load 
e180: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
e190: 6c 69 62 72 61 72 79 20 28 6f 72 0d 0a 20 20 20  library (or..   
e1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
e1b0: 2f 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20  /       interop 
e1c0: 61 73 73 65 6d 62 6c 79 29 20 61 6e 64 20 73 74  assembly) and st
e1d0: 6f 72 65 20 62 6f 74 68 20 74 68 65 20 66 69 6c  ore both the fil
e1e0: 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
e1f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
e200: 20 20 20 61 6e 64 20 6e 61 74 69 76 65 20 6d 6f     and native mo
e210: 64 75 6c 65 20 68 61 6e 64 6c 65 20 66 6f 72 20  dule handle for 
e220: 6c 61 74 65 72 20 75 73 61 67 65 2e 0d 0a 20 20  later usage...  
e230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e240: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
e250: 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45 44        /* IGNORED
e260: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
e270: 20 20 20 20 20 20 20 50 72 65 4c 6f 61 64 53 51         PreLoadSQ
e280: 4c 69 74 65 44 6c 6c 28 62 61 73 65 44 69 72 65  LiteDll(baseDire
e290: 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
e2b0: 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
e2c0: 75 72 65 2c 20 61 6c 6c 6f 77 42 61 73 65 44 69  ure, allowBaseDi
e2d0: 72 65 63 74 6f 72 79 4f 6e 6c 79 2c 0d 0a 20 20  rectoryOnly,..  
e2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2f0: 20 20 20 20 72 65 66 20 5f 53 51 4c 69 74 65 4e      ref _SQLiteN
e300: 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e  ativeModuleFileN
e310: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
e320: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
e330: 5f 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  _SQLiteNativeMod
e340: 75 6c 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  uleHandle);..   
e350: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
e360: 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ndif..#endif..  
e370: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e380: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
e390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
e3e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
e3f0: 20 20 2f 2f 2f 20 43 6f 6d 62 69 6e 65 73 20 74    /// Combines t
e400: 77 6f 20 70 61 74 68 20 73 74 72 69 6e 67 73 2e  wo path strings.
e410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e420: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
e430: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
e440: 61 74 68 31 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  ath1">..      //
e450: 2f 20 54 68 65 20 66 69 72 73 74 20 70 61 74 68  / The first path
e460: 20 2d 4f 52 2d 20 6e 75 6c 6c 2e 0d 0a 20 20 20   -OR- null...   
e470: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
e480: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
e490: 6d 20 6e 61 6d 65 3d 22 70 61 74 68 32 22 3e 0d  m name="path2">.
e4a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
e4b0: 65 63 6f 6e 64 20 70 61 74 68 20 2d 4f 52 2d 20  econd path -OR- 
e4c0: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  null...      ///
e4d0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
e4e0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
e4f0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
e500: 6d 62 69 6e 65 64 20 70 61 74 68 20 73 74 72 69  mbined path stri
e510: 6e 67 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  ng -OR- null if 
e520: 62 6f 74 68 20 6f 66 20 74 68 65 20 6f 72 69 67  both of the orig
e530: 69 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20  inal path..     
e540: 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 61 72 65   /// strings are
e550: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   null...      //
e560: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
e570: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
e580: 69 63 20 73 74 72 69 6e 67 20 4d 61 79 62 65 43  ic string MaybeC
e590: 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20 20 20  ombinePath(..   
e5a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 61         string pa
e5b0: 74 68 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  th1,..          
e5c0: 73 74 72 69 6e 67 20 70 61 74 68 32 0d 0a 20 20  string path2..  
e5d0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
e5e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
e5f0: 20 28 70 61 74 68 31 20 21 3d 20 6e 75 6c 6c 29   (path1 != null)
e600: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e620: 28 70 61 74 68 32 20 21 3d 20 6e 75 6c 6c 29 0d  (path2 != null).
e630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e640: 20 20 20 72 65 74 75 72 6e 20 50 61 74 68 2e 43     return Path.C
e650: 6f 6d 62 69 6e 65 28 70 61 74 68 31 2c 20 70 61  ombine(path1, pa
e660: 74 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  th2);..         
e670: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
e680: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e690: 75 72 6e 20 70 61 74 68 31 3b 0d 0a 20 20 20 20  urn path1;..    
e6a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e6b0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
e6c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e6d0: 20 20 20 20 69 66 20 28 70 61 74 68 32 20 21 3d      if (path2 !=
e6e0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
e6f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e700: 20 70 61 74 68 32 3b 0d 0a 20 20 20 20 20 20 20   path2;..       
e710: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e730: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
e740: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
e750: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
e760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7a0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
e7b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e7c0: 20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20   /// Resets the 
e7d0: 63 61 63 68 65 64 20 58 4d 4c 20 63 6f 6e 66 69  cached XML confi
e7e0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61  guration file na
e7f0: 6d 65 20 76 61 6c 75 65 2c 20 74 68 75 73 20 66  me value, thus f
e800: 6f 72 63 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  orcing the..    
e810: 20 20 2f 2f 2f 20 6e 65 78 74 20 63 61 6c 6c 20    /// next call 
e820: 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  to <see cref="Ge
e830: 74 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67  tCachedXmlConfig
e840: 46 69 6c 65 4e 61 6d 65 22 20 2f 3e 20 6d 65 74  FileName" /> met
e850: 68 6f 64 20 74 6f 20 72 65 6c 79 0d 0a 20 20 20  hod to rely..   
e860: 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 74 68 65 20     /// upon the 
e870: 3c 73 65 65 20 63 72 65 66 3d 22 47 65 74 58 6d  <see cref="GetXm
e880: 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22  lConfigFileName"
e890: 20 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 66 65   /> method to fe
e8a0: 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  tch the..      /
e8b0: 2f 2f 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61  // XML configura
e8c0: 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e 0d  tion file name..
e8d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
e8e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
e8f0: 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64  vate static void
e900: 20 52 65 73 65 74 43 61 63 68 65 64 58 6d 6c 43   ResetCachedXmlC
e910: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d  onfigFileName().
e920: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
e930: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75      #region Debu
e940: 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69  g Build Only..#i
e950: 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  f DEBUG..       
e960: 20 20 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63     DebugData.Inc
e970: 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74  rementOtherCount
e980: 28 22 4d 65 74 68 6f 64 5f 52 65 73 65 74 43 61  ("Method_ResetCa
e990: 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  chedXmlConfigFil
e9a0: 65 4e 61 6d 65 22 29 3b 0d 0a 23 65 6e 64 69 66  eName");..#endif
e9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
e9c0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
e9d0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
e9e0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
e9f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ea00: 20 20 20 20 20 20 63 61 63 68 65 64 58 6d 6c 43        cachedXmlC
ea10: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20  onfigFileName = 
ea20: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
ea30: 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69 67       noXmlConfig
ea40: 46 69 6c 65 4e 61 6d 65 20 3d 20 66 61 6c 73 65  FileName = false
ea50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
ea60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ea70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ea80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eaa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
eac0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ead0: 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69  .      /// Queri
eae0: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
eaf0: 68 65 20 63 61 63 68 65 64 20 58 4d 4c 20 63 6f  he cached XML co
eb00: 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
eb10: 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 0d 0a 20   name for the.. 
eb20: 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c       /// assembl
eb30: 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  y containing the
eb40: 20 6d 61 6e 61 67 65 64 20 53 79 73 74 65 6d 2e   managed System.
eb50: 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f 6d 70  Data.SQLite comp
eb60: 6f 6e 65 6e 74 73 2c 20 69 66 0d 0a 20 20 20 20  onents, if..    
eb70: 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2e    /// available.
eb80: 20 20 49 66 20 74 68 65 20 63 61 63 68 65 64 20    If the cached 
eb90: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
eba0: 6e 20 66 69 6c 65 20 6e 61 6d 65 20 76 61 6c 75  n file name valu
ebb0: 65 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20  e is not..      
ebc0: 2f 2f 2f 20 61 76 61 69 6c 61 62 6c 65 2c 20 74  /// available, t
ebd0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 47 65  he <see cref="Ge
ebe0: 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61  tXmlConfigFileNa
ebf0: 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  me" /> method wi
ec00: 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
ec10: 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
ec20: 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72  the XML configur
ec30: 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65 2e  ation file name.
ec40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
ec50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ec60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
ec70: 20 20 20 2f 2f 2f 20 54 68 65 20 58 4d 4c 20 63     /// The XML c
ec80: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c  onfiguration fil
ec90: 65 20 6e 61 6d 65 20 2d 4f 52 2d 20 6e 75 6c 6c  e name -OR- null
eca0: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
ecb0: 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20   determined..   
ecc0: 20 20 20 2f 2f 2f 20 6f 72 20 64 6f 65 73 20 6e     /// or does n
ecd0: 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20 20 20 20  ot exist...     
ece0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
ecf0: 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
ed00: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
ed10: 43 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46  CachedXmlConfigF
ed20: 69 6c 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20  ileName()..     
ed30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72   {..          #r
ed40: 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69 6c  egion Debug Buil
ed50: 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42 55  d Only..#if DEBU
ed60: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 62  G..          Deb
ed70: 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74  ugData.Increment
ed80: 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d 65 74 68  OtherCount("Meth
ed90: 6f 64 5f 47 65 74 43 61 63 68 65 64 58 6d 6c 43  od_GetCachedXmlC
eda0: 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b  onfigFileName");
edb0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
edc0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
edd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
ede0: 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
edf0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
ee00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ee10: 20 28 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66 69   (cachedXmlConfi
ee20: 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75 6c  gFileName != nul
ee30: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
ee40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 63        return cac
ee50: 68 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65  hedXmlConfigFile
ee60: 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
ee70: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 58 6d 6c         if (noXml
ee80: 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 0d  ConfigFileName).
ee90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eea0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
eeb0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
eec0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
eed0: 20 47 65 74 58 6d 6c 43 6f 6e 66 69 67 46 69 6c   GetXmlConfigFil
eee0: 65 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20  eName();..      
eef0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
ef00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef40: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
ef50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ef60: 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64   /// Queries and
ef70: 20 72 65 74 75 72 6e 73 20 74 68 65 20 58 4d 4c   returns the XML
ef80: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
ef90: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
efa0: 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   assembly..     
efb0: 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20   /// containing 
efc0: 74 68 65 20 6d 61 6e 61 67 65 64 20 53 79 73 74  the managed Syst
efd0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63  em.Data.SQLite c
efe0: 6f 6d 70 6f 6e 65 6e 74 73 2e 0d 0a 20 20 20 20  omponents...    
eff0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
f000: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74  ..      /// <ret
f010: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urns>..      ///
f020: 20 54 68 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75   The XML configu
f030: 72 61 74 69 6f 6e 20 66 69 6c 65 20 6e 61 6d 65  ration file name
f040: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
f050: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
f060: 6d 69 6e 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  mined..      ///
f070: 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 65 78 69   or does not exi
f080: 73 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  st...      /// <
f090: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
f0a0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f0b0: 73 74 72 69 6e 67 20 47 65 74 58 6d 6c 43 6f 6e  string GetXmlCon
f0c0: 66 69 67 46 69 6c 65 4e 61 6d 65 28 29 0d 0a 20  figFileName().. 
f0d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f0e0: 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
f0f0: 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
f100: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
f110: 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
f120: 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
f130: 4d 65 74 68 6f 64 5f 47 65 74 58 6d 6c 43 6f 6e  Method_GetXmlCon
f140: 66 69 67 46 69 6c 65 4e 61 6d 65 22 29 3b 0d 0a  figFileName");..
f150: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
f160: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
f170: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
f180: 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
f190: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
f1a0: 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 23 69 66 20 21  leName;....#if !
f1b0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
f1c0: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
f1d0: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
f1e0: 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
f1f0: 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72  ntDomain.BaseDir
f200: 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
f210: 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d 61     fileName = Ma
f220: 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 64  ybeCombinePath(d
f230: 69 72 65 63 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e  irectory, XmlCon
f240: 66 69 67 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  figFileName);...
f250: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46  .          if (F
f260: 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65 4e  ile.Exists(fileN
f270: 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
f280: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f290: 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
f2a0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
f2b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 63 68              cach
f2d0: 65 64 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  edXmlConfigFileN
f2e0: 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d  ame = fileName;.
f2f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
f300: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f310: 20 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d    return fileNam
f320: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
f330: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
f340: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
f350: 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62   GetCachedAssemb
f360: 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
f370: 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61            fileNa
f380: 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69 6e  me = MaybeCombin
f390: 65 50 61 74 68 28 64 69 72 65 63 74 6f 72 79 2c  ePath(directory,
f3a0: 20 58 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61   XmlConfigFileNa
f3b0: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
f3c0: 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73 74    if (File.Exist
f3d0: 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  s(fileName))..  
f3e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f3f0: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
f400: 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f430: 20 20 20 63 61 63 68 65 64 58 6d 6c 43 6f 6e 66     cachedXmlConf
f440: 69 67 46 69 6c 65 4e 61 6d 65 20 3d 20 66 69 6c  igFileName = fil
f450: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
f460: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f470: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f480: 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
f490: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f4a0: 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
f4b0: 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
f4c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f4d0: 20 20 20 20 20 20 6e 6f 58 6d 6c 43 6f 6e 66 69        noXmlConfi
f4e0: 67 46 69 6c 65 4e 61 6d 65 20 3d 20 74 72 75 65  gFileName = true
f4f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
f500: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
f510: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
f520: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
f530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f570: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
f580: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f590: 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65 73 73     /// If necess
f5a0: 61 72 79 2c 20 72 65 70 6c 61 63 65 73 20 61 6c  ary, replaces al
f5b0: 6c 20 73 75 70 70 6f 72 74 65 64 20 58 4d 4c 20  l supported XML 
f5c0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
f5d0: 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20  le tokens..     
f5e0: 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20   /// with their 
f5f0: 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65  associated value
f600: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
f610: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f620: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
f630: 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20  "fileName">..   
f640: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
f650: 6f 66 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  of the XML confi
f660: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 20 62 65  guration file be
f670: 69 6e 67 20 72 65 61 64 2e 0d 0a 20 20 20 20 20  ing read...     
f680: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
f690: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f6a0: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
f6b0: 20 20 20 20 20 2f 2f 2f 20 41 20 73 65 74 74 69       /// A setti
f6c0: 6e 67 20 76 61 6c 75 65 20 72 65 61 64 20 66 72  ng value read fr
f6d0: 6f 6d 20 74 68 65 20 58 4d 4c 20 63 6f 6e 66 69  om the XML confi
f6e0: 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a  guration file...
f6f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f700: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
f710: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
f720: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
f730: 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61  the <paramref na
f740: 6d 65 3d 22 76 61 6c 75 65 22 20 2f 3e 20 77 69  me="value" /> wi
f750: 6c 6c 20 61 6c 6c 20 73 75 70 70 6f 72 74 65 64  ll all supported
f760: 20 58 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   XML..      /// 
f770: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
f780: 6c 65 20 74 6f 6b 65 6e 73 20 72 65 70 6c 61 63  le tokens replac
f790: 65 64 2e 20 20 4e 6f 20 72 65 74 75 72 6e 20 76  ed.  No return v
f7a0: 61 6c 75 65 20 69 73 20 72 65 73 65 72 76 65 64  alue is reserved
f7b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69  ..      /// to i
f7c0: 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72  ndicate an error
f7d0: 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  .  This method c
f7e0: 61 6e 6e 6f 74 20 66 61 69 6c 2e 0d 0a 20 20 20  annot fail...   
f7f0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
f800: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
f810: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 52   static string R
f820: 65 70 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46  eplaceXmlConfigF
f830: 69 6c 65 54 6f 6b 65 6e 73 28 0d 0a 20 20 20 20  ileTokens(..    
f840: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
f850: 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
f860: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a    string value..
f870: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
f880: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f890: 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
f8a0: 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
f8b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
f8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f8d0: 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
f8e0: 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65  OrEmpty(fileName
f8f0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
f900: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f910: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
f920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f940: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
f950: 72 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47  rectory = Path.G
f960: 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
f970: 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  fileName);....  
f980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f990: 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
f9a0: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69  IsNullOrEmpty(di
f9b0: 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20  rectory))..     
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9d0: 20 7b 0d 0a 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 20 20 76 61                va
f9f0: 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c  lue = value.Repl
fa00: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa20: 20 20 20 20 58 6d 6c 43 6f 6e 66 69 67 44 69 72      XmlConfigDir
fa30: 65 63 74 6f 72 79 54 6f 6b 65 6e 2c 20 64 69 72  ectoryToken, dir
fa40: 65 63 74 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  ectory);..      
fa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa60: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
fa70: 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
fa80: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
fa90: 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
fab0: 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
fac0: 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
fad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
fae0: 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a  ch (Exception)..
faf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
fb00: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
fb10: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
fb20: 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
fb30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fb40: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb80: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
fb90: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
fba0: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbc0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
fbd0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
fbe0: 6c 74 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c  lture, "Native l
fbf0: 69 62 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20  ibrary " +..    
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc10: 20 20 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c            "pre-l
fc20: 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20  oader failed to 
fc30: 72 65 70 6c 61 63 65 20 58 4d 4c 20 22 20 2b 0d  replace XML " +.
fc40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
fc60: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
fc70: 6c 65 20 5c 22 7b 30 7d 5c 22 20 74 6f 6b 65 6e  le \"{0}\" token
fc80: 73 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  s: {1}",..      
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fca0: 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
fcb0: 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20  , e)); /* throw 
fcc0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
fcd0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcf0: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
fd30: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd50: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
fd80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d   }..          }.
fd90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
fda0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
fdb0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
fdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fe10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fe20: 20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73       /// Queries
fe30: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
fe40: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 70   value of the sp
fe50: 65 63 69 66 69 65 64 20 73 65 74 74 69 6e 67 2c  ecified setting,
fe60: 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
fe70: 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
fe80: 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
fe90: 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 2f  n file...      /
fea0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
feb0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
fec0: 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
fed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
fee0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 58 4d 4c 20  name of the XML 
fef0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69  configuration fi
ff00: 6c 65 20 74 6f 20 72 65 61 64 2e 0d 0a 20 20 20  le to read...   
ff10: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
ff20: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
ff30: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
ff40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
ff50: 6d 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e  me of the settin
ff60: 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  g...      /// </
ff70: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
ff80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
ff90: 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 20 20  efault">..      
ffa0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
ffb0: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
ffc0: 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20  the setting has 
ffd0: 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
ffe0: 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 20 20 2f  licitly..      /
fff0: 2f 2f 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20  // or cannot be 
10000 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20  determined...   
10010 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10020 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
10030 6d 20 6e 61 6d 65 3d 22 65 78 70 61 6e 64 22 3e  m name="expand">
10040 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  ..      /// Non-
10050 7a 65 72 6f 20 74 6f 20 65 78 70 61 6e 64 20 61  zero to expand a
10060 6e 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  ny environment v
10070 61 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e 63  ariable referenc
10080 65 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d  es contained in.
10090 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73  .      /// the s
100a0 65 74 74 69 6e 67 20 76 61 6c 75 65 20 74 6f 20  etting value to 
100b0 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68  be returned.  Th
100c0 69 73 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  is has no effect
100d0 20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20   on the .NET..  
100e0 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 63 74 20      /// Compact 
100f0 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  Framework...    
10100 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10110 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
10120 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
10130 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
10140 73 65 74 74 69 6e 67 20 2d 4f 52 2d 20 74 68 65  setting -OR- the
10150 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 73   default value s
10160 70 65 63 69 66 69 65 64 20 62 79 0d 0a 20 20 20  pecified by..   
10170 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
10180 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20   name="default" 
10190 2f 3e 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74  /> if it has not
101a0 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
101b0 69 74 6c 79 20 6f 72 0d 0a 20 20 20 20 20 20 2f  itly or..      /
101c0 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
101d0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
101e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
101f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
10200 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53  atic string GetS
10210 65 74 74 69 6e 67 56 61 6c 75 65 56 69 61 58 6d  ettingValueViaXm
10220 6c 43 6f 6e 66 69 67 46 69 6c 65 28 0d 0a 20 20  lConfigFile(..  
10230 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
10240 69 6c 65 4e 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a  ileName, /* in *
10250 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
10260 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 2f 2a  ing name,     /*
10270 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
10280 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c    string @defaul
10290 74 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  t, /* in */..   
102a0 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 78 70 61         bool expa
102b0 6e 64 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f  nd      /* in */
102c0 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
102d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
102e0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
102f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10300 20 20 69 66 20 28 28 66 69 6c 65 4e 61 6d 65 20    if ((fileName 
10310 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d  == null) || (nam
10320 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  e == null))..   
10330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
10340 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74 3b 0d  eturn @default;.
10350 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10360 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 64 6f 63   XmlDocument doc
10370 75 6d 65 6e 74 20 3d 20 6e 65 77 20 58 6d 6c 44  ument = new XmlD
10380 6f 63 75 6d 65 6e 74 28 29 3b 0d 0a 0d 0a 20 20  ocument();....  
10390 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
103a0 6d 65 6e 74 2e 4c 6f 61 64 28 66 69 6c 65 4e 61  ment.Load(fileNa
103b0 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  me); /* throw */
103c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
103d0 20 20 58 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65    XmlElement ele
103e0 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  ment = document.
103f0 53 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65  SelectSingleNode
10400 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10410 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f       HelperMetho
10420 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
10430 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
10440 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  riantCulture,.. 
10450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10460 20 22 2f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   "/configuration
10470 2f 61 70 70 53 65 74 74 69 6e 67 73 2f 61 64 64  /appSettings/add
10480 5b 40 6b 65 79 3d 27 7b 30 7d 27 5d 22 2c 20 6e  [@key='{0}']", n
10490 61 6d 65 29 29 20 61 73 0d 0a 20 20 20 20 20 20  ame)) as..      
104a0 20 20 20 20 20 20 20 20 20 20 20 20 58 6d 6c 45              XmlE
104b0 6c 65 6d 65 6e 74 3b 20 2f 2a 20 74 68 72 6f 77  lement; /* throw
104c0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
104d0 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
104e0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
104f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
10510 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75 6c  ring value = nul
10520 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
10530 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d          if (elem
10540 65 6e 74 2e 48 61 73 41 74 74 72 69 62 75 74 65  ent.HasAttribute
10550 28 22 76 61 6c 75 65 22 29 29 0d 0a 20 20 20 20  ("value"))..    
10560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10570 20 20 76 61 6c 75 65 20 3d 20 65 6c 65 6d 65 6e    value = elemen
10580 74 2e 47 65 74 41 74 74 72 69 62 75 74 65 28 22  t.GetAttribute("
10590 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20  value");....    
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
105b0 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
105c0 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29 29 0d  OrEmpty(value)).
105d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
105e0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
105f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
10600 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
10610 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
10620 65 78 70 61 6e 64 29 0d 0a 20 20 20 20 20 20 20  expand)..       
10630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10640 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72     value = Envir
10650 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76  onment.ExpandEnv
10660 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65  ironmentVariable
10670 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  s(value);....   
10680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10690 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70 6c 61     value = Repla
106a0 63 65 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  ceEnvironmentVar
106b0 69 61 62 6c 65 54 6f 6b 65 6e 73 28 76 61 6c 75  iableTokens(valu
106c0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
106d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106e0 20 20 20 20 20 76 61 6c 75 65 20 3d 20 52 65 70       value = Rep
106f0 6c 61 63 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  laceXmlConfigFil
10700 65 54 6f 6b 65 6e 73 28 66 69 6c 65 4e 61 6d 65  eTokens(fileName
10710 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  , value);..     
10720 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
10730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10740 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d      if (value !=
10750 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
10760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10770 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
10780 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
10790 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
107a0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
107b0 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
107c0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
107d0 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23  (Exception e)..#
107e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
107f0 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
10800 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
10810 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
10820 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
10830 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20  RACE_SHARED..   
10840 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
10850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10870 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
10880 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
10890 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
108a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
108b0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
108c0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
108d0 2c 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72  , "Native librar
108e0 79 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  y " +..         
108f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 70 72               "pr
10900 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20  e-loader failed 
10910 74 6f 20 67 65 74 20 73 65 74 74 69 6e 67 20 5c  to get setting \
10920 22 7b 30 7d 5c 22 20 76 61 6c 75 65 20 22 20 2b  "{0}\" value " +
10930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10940 20 20 20 20 20 20 20 20 22 66 72 6f 6d 20 58 4d          "from XM
10950 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  L configuration 
10960 66 69 6c 65 20 5c 22 7b 31 7d 5c 22 3a 20 7b 32  file \"{1}\": {2
10970 7d 22 2c 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20  }", name,..     
10980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10990 20 66 69 6c 65 4e 61 6d 65 2c 20 65 29 29 3b 20   fileName, e)); 
109a0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
109b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
109c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
109d0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
109e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
109f0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
10a00 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
10a10 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
10a20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10a30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
10a40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  default;..      
10a50 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
10ab0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
10ac0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 2f 2f  MEWORK..      //
10ad0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10ae0 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
10af0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
10b00 20 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72   target framewor
10b10 6b 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75  k attribute valu
10b20 65 20 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20  e that is..     
10b30 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
10b40 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
10b50 65 64 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  ed managed assem
10b60 62 6c 79 2c 20 69 66 20 61 70 70 6c 69 63 61 62  bly, if applicab
10b70 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  le...      /// <
10b80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10b90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
10ba0 3d 22 61 73 73 65 6d 62 6c 79 22 3e 0d 0a 20 20  ="assembly">..  
10bb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
10bc0 67 65 64 20 61 73 73 65 6d 62 6c 79 20 74 6f 20  ged assembly to 
10bd0 72 65 61 64 20 74 68 65 20 74 61 72 67 65 74 20  read the target 
10be0 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
10bf0 75 74 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ute value..     
10c00 20 2f 2f 2f 20 66 72 6f 6d 2e 0d 0a 20 20 20 20   /// from...    
10c10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10c20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
10c30 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ns>..      /// T
10c40 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
10c50 74 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b  target framework
10c60 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65   attribute value
10c70 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
10c80 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61  ed..      /// ma
10c90 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 79 20 2d  naged assembly -
10ca0 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63  OR- null if it c
10cb0 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
10cc0 6e 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  ned.  If this.. 
10cd0 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c       /// assembl
10ce0 79 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77  y was compiled w
10cf0 69 74 68 20 61 20 76 65 72 73 69 6f 6e 20 6f 66  ith a version of
10d00 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
10d10 6f 72 6b 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20  ork prior to..  
10d20 20 20 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20      /// version 
10d30 34 2e 30 2c 20 74 68 65 20 76 61 6c 75 65 20 72  4.0, the value r
10d40 65 74 75 72 6e 65 64 20 4d 41 59 20 72 65 66 6c  eturned MAY refl
10d50 65 63 74 20 74 68 61 74 20 76 65 72 73 69 6f 6e  ect that version
10d60 20 6f 66 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20   of the .NET..  
10d70 20 20 20 20 2f 2f 2f 20 46 72 61 6d 65 77 6f 72      /// Framewor
10d80 6b 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  k instead of the
10d90 20 6f 6e 65 20 61 73 73 6f 63 69 61 74 65 64 20   one associated 
10da0 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
10db0 65 64 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20  ed managed..    
10dc0 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 0d    /// assembly..
10dd0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  .      /// </ret
10de0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69  urns>..      pri
10df0 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
10e00 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 61  ng GetAssemblyTa
10e10 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28 0d 0a  rgetFramework(..
10e20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
10e30 6c 79 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20  ly assembly..   
10e40 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
10e50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
10e60 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c  (assembly != nul
10e70 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
10e80 0a 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20 4e  .#if NET_40 || N
10e90 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35 31  ET_45 || NET_451
10ea0 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20 4e   || NET_452 || N
10eb0 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36 31  ET_46 || NET_461
10ec0 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20 4e   || NET_462 || N
10ed0 45 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37 31  ET_47 || NET_471
10ee0 20 7c 7c 20 4e 45 54 5f 34 37 32 20 7c 7c 20 4e   || NET_472 || N
10ef0 45 54 5f 53 54 41 4e 44 41 52 44 5f 32 30 0d 0a  ET_STANDARD_20..
10f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
10f10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
10f20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10f30 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
10f40 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 0d 0a 20  ly.IsDefined(.. 
10f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f60 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
10f70 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41  TargetFrameworkA
10f80 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
10f90 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
10fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
10fc0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74  argetFrameworkAt
10fd0 74 72 69 62 75 74 65 20 74 61 72 67 65 74 46 72  tribute targetFr
10fe0 61 6d 65 77 6f 72 6b 20 3d 0d 0a 20 20 20 20 20  amework =..     
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11000 20 20 20 20 20 28 54 61 72 67 65 74 46 72 61 6d       (TargetFram
11010 65 77 6f 72 6b 41 74 74 72 69 62 75 74 65 29 0d  eworkAttribute).
11020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11030 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d             assem
11040 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74 74  bly.GetCustomAtt
11050 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20 20  ributes(..      
11060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11070 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54          typeof(T
11080 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 41 74  argetFrameworkAt
11090 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29  tribute), false)
110a0 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  [0];....        
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
110c0 74 75 72 6e 20 74 61 72 67 65 74 46 72 61 6d 65  turn targetFrame
110d0 77 6f 72 6b 2e 46 72 61 6d 65 77 6f 72 6b 4e 61  work.FrameworkNa
110e0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
110f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11100 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11110 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
11120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11140 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
11150 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11160 20 7d 0d 0a 23 65 6c 69 66 20 4e 45 54 5f 33 35   }..#elif NET_35
11170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11180 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72 61 6d  return ".NETFram
11190 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d 76 33  ework,Version=v3
111a0 2e 35 22 3b 0d 0a 23 65 6c 69 66 20 4e 45 54 5f  .5";..#elif NET_
111b0 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  20..            
111c0 20 20 72 65 74 75 72 6e 20 22 2e 4e 45 54 46 72    return ".NETFr
111d0 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f 6e 3d  amework,Version=
111e0 76 32 2e 30 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a  v2.0";..#endif..
111f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11200 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11210 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  null;..      }..
11220 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
11230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11270 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
11280 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11290 2f 2f 2f 20 41 63 63 65 70 74 73 20 61 20 6c 6f  /// Accepts a lo
112a0 6e 67 20 74 61 72 67 65 74 20 66 72 61 6d 65 77  ng target framew
112b0 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76 61  ork attribute va
112c0 6c 75 65 20 61 6e 64 20 6d 61 6b 65 73 20 69 74  lue and makes it
112d0 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 20 20 2f   into a..      /
112e0 2f 2f 20 6d 75 63 68 20 73 68 6f 72 74 65 72 20  // much shorter 
112f0 76 65 72 73 69 6f 6e 2c 20 73 75 69 74 61 62 6c  version, suitabl
11300 65 20 66 6f 72 20 75 73 65 20 77 69 74 68 20 4e  e for use with N
11310 75 47 65 74 20 70 61 63 6b 61 67 65 73 2e 0d 0a  uGet packages...
11320 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11330 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
11340 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
11350 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ue">..      /// 
11360 54 68 65 20 6c 6f 6e 67 20 74 61 72 67 65 74 20  The long target 
11370 66 72 61 6d 65 77 6f 72 6b 20 61 74 74 72 69 62  framework attrib
11380 75 74 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  ute value to con
11390 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  vert...      ///
113a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
113b0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
113c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 68        /// The sh
113d0 6f 72 74 20 74 61 72 67 65 74 20 66 72 61 6d 65  ort target frame
113e0 77 6f 72 6b 20 61 74 74 72 69 62 75 74 65 20 76  work attribute v
113f0 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  alue -OR- null i
11400 66 20 69 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20  f it cannot..   
11410 20 20 20 2f 2f 2f 20 62 65 20 64 65 74 65 72 6d     /// be determ
11420 69 6e 65 64 20 6f 72 20 63 6f 6e 76 65 72 74 65  ined or converte
11430 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
11440 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11450 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
11460 74 72 69 6e 67 20 41 62 62 72 65 76 69 61 74 65  tring Abbreviate
11470 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 28  TargetFramework(
11480 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69  ..          stri
11490 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
114a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
114b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
114c0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
114d0 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ty(value))..    
114e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
114f0 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20   value;....     
11500 20 20 20 20 20 76 61 6c 75 65 20 3d 20 76 61 6c       value = val
11510 75 65 2e 52 65 70 6c 61 63 65 28 22 2e 4e 45 54  ue.Replace(".NET
11520 46 72 61 6d 65 77 6f 72 6b 2c 56 65 72 73 69 6f  Framework,Versio
11530 6e 3d 76 22 2c 20 22 6e 65 74 22 29 3b 0d 0a 20  n=v", "net");.. 
11540 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11550 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28 22   value.Replace("
11560 2e 22 2c 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  .", String.Empty
11570 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11580 69 6e 74 20 69 6e 64 65 78 20 3d 20 76 61 6c 75  int index = valu
11590 65 2e 49 6e 64 65 78 4f 66 28 27 2c 27 29 3b 0d  e.IndexOf(',');.
115a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
115b0 28 69 6e 64 65 78 20 21 3d 20 2d 31 29 0d 0a 20  (index != -1).. 
115c0 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
115d0 75 65 20 3d 20 76 61 6c 75 65 2e 53 75 62 73 74  ue = value.Subst
115e0 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 3b 0d  ring(0, index);.
115f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
11600 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  urn value;..    
11610 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11660 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11670 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11680 20 20 20 20 20 2f 2f 2f 20 49 66 20 6e 65 63 65       /// If nece
11690 73 73 61 72 79 2c 20 72 65 70 6c 61 63 65 73 20  ssary, replaces 
116a0 61 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 65 6e  all supported en
116b0 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
116c0 6c 65 20 74 6f 6b 65 6e 73 0d 0a 20 20 20 20 20  le tokens..     
116d0 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 69 72 20   /// with their 
116e0 61 73 73 6f 63 69 61 74 65 64 20 76 61 6c 75 65  associated value
116f0 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
11700 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11710 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11720 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
11730 2f 2f 2f 20 41 20 73 65 74 74 69 6e 67 20 76 61  /// A setting va
11740 6c 75 65 20 72 65 61 64 20 66 72 6f 6d 20 61 6e  lue read from an
11750 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
11760 69 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  iable...      //
11770 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11780 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
11790 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
117a0 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 70 61 72  alue of the <par
117b0 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75  amref name="valu
117c0 65 22 20 2f 3e 20 77 69 6c 6c 20 61 6c 6c 20 73  e" /> will all s
117d0 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20  upported..      
117e0 2f 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  /// environment 
117f0 76 61 72 69 61 62 6c 65 20 74 6f 6b 65 6e 73 20  variable tokens 
11800 72 65 70 6c 61 63 65 64 2e 20 20 4e 6f 20 72 65  replaced.  No re
11810 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 72 65  turn value is re
11820 73 65 72 76 65 64 0d 0a 20 20 20 20 20 20 2f 2f  served..      //
11830 2f 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 6e  / to indicate an
11840 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 6d 65   error.  This me
11850 74 68 6f 64 20 63 61 6e 6e 6f 74 20 66 61 69 6c  thod cannot fail
11860 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
11870 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
11880 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
11890 72 69 6e 67 20 52 65 70 6c 61 63 65 45 6e 76 69  ring ReplaceEnvi
118a0 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 54  ronmentVariableT
118b0 6f 6b 65 6e 73 28 0d 0a 20 20 20 20 20 20 20 20  okens(..        
118c0 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a    string value..
118d0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
118e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
118f0 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
11900 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75 65 29  llOrEmpty(value)
11910 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11930 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
11940 20 47 65 74 43 61 63 68 65 64 41 73 73 65 6d 62   GetCachedAssemb
11950 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  lyDirectory();..
11960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11970 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
11980 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
11990 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ory))..         
119a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
119b0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
119c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
119e0 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
119f0 3d 20 76 61 6c 75 65 2e 52 65 70 6c 61 63 65 28  = value.Replace(
11a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11a10 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
11a20 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 54 6f 6b  mblyDirectoryTok
11a30 65 6e 2c 20 64 69 72 65 63 74 6f 72 79 29 3b 0d  en, directory);.
11a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11a50 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54 5f 43     }..#if !NET_C
11a60 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
11a70 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
11a80 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
11a90 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
11aa0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
11ab0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
11ac0 20 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65   (Exception)..#e
11ad0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
11ae0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
11af0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
11b00 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
11b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
11b60 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
11b70 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
11b80 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ba0 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
11bb0 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
11bc0 75 72 65 2c 20 22 4e 61 74 69 76 65 20 6c 69 62  ure, "Native lib
11bd0 72 61 72 79 20 22 20 2b 0d 0a 20 20 20 20 20 20  rary " +..      
11be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11bf0 20 20 20 20 20 20 20 20 22 70 72 65 2d 6c 6f 61          "pre-loa
11c00 64 65 72 20 66 61 69 6c 65 64 20 74 6f 20 72 65  der failed to re
11c10 70 6c 61 63 65 20 61 73 73 65 6d 62 6c 79 20 22  place assembly "
11c20 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
11c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c40 20 20 22 64 69 72 65 63 74 6f 72 79 20 74 6f 6b    "directory tok
11c50 65 6e 3a 20 7b 30 7d 22 2c 20 65 29 29 3b 20 2f  en: {0}", e)); /
11c60 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
11c90 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
11ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11cb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11cd0 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
11ce0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
11cf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
11d00 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
11d10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11d20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
11d30 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
11d40 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20  mbly assembly = 
11d50 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
11d60 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
11d70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
11d90 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
11da0 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41  ly.GetExecutingA
11db0 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 20 20 20 20  ssembly();..    
11dc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66            }..#if
11dd0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
11de0 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45 44   && TRACE_SHARED
11df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e00 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
11e10 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
11e20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
11e30 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 23 65 6e  (Exception)..#en
11e40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
11e50 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43     {..#if !NET_C
11e60 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
11e70 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20 20  CE_SHARED..     
11e80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
11e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11ea0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
11ec0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
11ed0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
11ee0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
11ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f00 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
11f10 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
11f20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
11f30 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
11f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
11f50 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c 65  pre-loader faile
11f60 64 20 74 6f 20 6f 62 74 61 69 6e 20 65 78 65 63  d to obtain exec
11f70 75 74 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20  uting " +..     
11f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f90 20 20 20 20 20 22 61 73 73 65 6d 62 6c 79 3a 20       "assembly: 
11fa0 7b 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68  {0}", e)); /* th
11fb0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
11fc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11fe0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
11ff0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12010 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
12020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12030 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
12040 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
12060 74 72 69 6e 67 20 74 61 72 67 65 74 46 72 61 6d  tring targetFram
12070 65 77 6f 72 6b 20 3d 20 41 62 62 72 65 76 69 61  ework = Abbrevia
12080 74 65 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  teTargetFramewor
12090 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
120a0 20 20 20 20 20 20 47 65 74 41 73 73 65 6d 62 6c        GetAssembl
120b0 79 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  yTargetFramework
120c0 28 61 73 73 65 6d 62 6c 79 29 29 3b 0d 0a 0d 0a  (assembly));....
120d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
120e0 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
120f0 4f 72 45 6d 70 74 79 28 74 61 72 67 65 74 46 72  OrEmpty(targetFr
12100 61 6d 65 77 6f 72 6b 29 29 0d 0a 20 20 20 20 20  amework))..     
12110 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
12130 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
12140 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
12160 6c 75 65 20 3d 20 76 61 6c 75 65 2e 52 65 70 6c  lue = value.Repl
12170 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12190 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 54  TargetFrameworkT
121a0 6f 6b 65 6e 2c 20 74 61 72 67 65 74 46 72 61 6d  oken, targetFram
121b0 65 77 6f 72 6b 29 3b 0d 0a 20 20 20 20 20 20 20  ework);..       
121c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69             }..#i
121d0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
121e0 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
121f0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
12200 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
12210 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65 0d  ption e)..#else.
12220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12230 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
12240 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12260 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  {..#if !NET_COMP
12270 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
12280 53 48 41 52 45 44 0d 0a 20 20 20 20 20 20 20 20  SHARED..        
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
122a0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
122b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122d0 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
122e0 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
122f0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
12300 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
12330 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22 4e 61  rentCulture, "Na
12340 74 69 76 65 20 6c 69 62 72 61 72 79 20 22 20 2b  tive library " +
12350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 22 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c  "pre-loader fail
12380 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74 61  ed to replace ta
12390 72 67 65 74 20 22 20 2b 0d 0a 20 20 20 20 20 20  rget " +..      
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123b0 20 20 20 20 20 20 20 20 22 66 72 61 6d 65 77 6f          "framewo
123c0 72 6b 20 74 6f 6b 65 6e 3a 20 7b 30 7d 22 2c 20  rk token: {0}", 
123d0 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
123e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
123f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12410 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
12420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12440 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
12450 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12470 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
124a0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
124b0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
124c0 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
124d0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
124e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
12530 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12540 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
12550 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
12560 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
12570 65 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74  e specified sett
12580 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 20 58  ing, using the X
12590 4d 4c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ML..      /// co
125a0 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
125b0 20 61 6e 64 2f 6f 72 20 74 68 65 20 65 6e 76 69   and/or the envi
125c0 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
125d0 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  s for the curren
125e0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  t..      /// pro
125f0 63 65 73 73 20 61 6e 64 2f 6f 72 20 74 68 65 20  cess and/or the 
12600 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 2c 20  current system, 
12610 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d  when available..
12620 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12630 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12640 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
12650 6d 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  me">..      /// 
12660 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
12670 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 20 20  setting...      
12680 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12690 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
126a0 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 3e 0d 0a  ame="default">..
126b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
126c0 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
126d0 65 64 20 69 66 20 74 68 65 20 73 65 74 74 69 6e  ed if the settin
126e0 67 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  g has not been s
126f0 65 74 20 65 78 70 6c 69 63 69 74 6c 79 0d 0a 20  et explicitly.. 
12700 20 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e 6e       /// or cann
12710 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
12720 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
12730 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
12740 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12750 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
12760 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67 20 2d  of the setting -
12770 4f 52 2d 20 74 68 65 20 64 65 66 61 75 6c 74 20  OR- the default 
12780 76 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20  value specified 
12790 62 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  by..      /// <p
127a0 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65  aramref name="de
127b0 66 61 75 6c 74 22 20 2f 3e 20 69 66 20 69 74 20  fault" /> if it 
127c0 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74  has not been set
127d0 20 65 78 70 6c 69 63 69 74 6c 79 20 6f 72 0d 0a   explicitly or..
127e0 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74        /// cannot
127f0 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 20   be determined. 
12800 20 42 79 20 64 65 66 61 75 6c 74 2c 20 61 6c 6c   By default, all
12810 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 65   references to e
12820 78 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f  xisting..      /
12830 2f 2f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  // environment v
12840 61 72 69 61 62 6c 65 73 20 77 69 6c 6c 20 62 65  ariables will be
12850 20 65 78 70 61 6e 64 65 64 20 74 6f 20 74 68 65   expanded to the
12860 69 72 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ir corresponding
12870 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 2f   values..      /
12880 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20 76 61  // within the va
12890 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
128a0 65 64 20 75 6e 6c 65 73 73 20 65 69 74 68 65 72  ed unless either
128b0 20 74 68 65 20 22 4e 6f 5f 45 78 70 61 6e 64 22   the "No_Expand"
128c0 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 22   or..      /// "
128d0 4e 6f 5f 45 78 70 61 6e 64 5f 3c 70 61 72 61 6d  No_Expand_<param
128e0 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 20  ref name="name" 
128f0 2f 3e 22 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20  />" environment 
12900 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20  variable is set 
12910 5b 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  [to..      /// a
12920 6e 79 74 68 69 6e 67 5d 2e 0d 0a 20 20 20 20 20  nything]...     
12930 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
12940 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
12950 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
12960 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a  tSettingValue(..
12970 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12980 20 6e 61 6d 65 2c 20 20 20 20 2f 2a 20 69 6e 20   name,    /* in 
12990 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  */..          st
129a0 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 2f 2a  ring @default /*
129b0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
129c0 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69    )..      {..#i
129d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
129e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
129f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12a00 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
12a10 66 20 74 68 65 20 73 70 65 63 69 61 6c 20 22 4e  f the special "N
12a20 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74 74 69  o_SQLiteGetSetti
12a30 6e 67 56 61 6c 75 65 22 20 65 6e 76 69 72 6f 6e  ngValue" environ
12a40 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
12a50 2f 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c  //       variabl
12a60 65 20 69 73 20 73 65 74 20 5b 74 6f 20 61 6e 79  e is set [to any
12a70 74 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74  thing], this met
12a80 68 6f 64 20 77 69 6c 6c 20 61 6c 77 61 79 73 0d  hod will always.
12a90 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
12aa0 20 20 20 20 72 65 74 75 72 6e 20 74 68 65 20 64      return the d
12ab0 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a 20  efault value... 
12ac0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12ad0 20 20 20 20 20 20 20 69 66 20 28 45 6e 76 69 72         if (Envir
12ae0 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
12af0 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a  nmentVariable(..
12b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b10 22 4e 6f 5f 53 51 4c 69 74 65 47 65 74 53 65 74  "No_SQLiteGetSet
12b20 74 69 6e 67 56 61 6c 75 65 22 29 20 21 3d 20 6e  tingValue") != n
12b30 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12b40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12b50 20 72 65 74 75 72 6e 20 40 64 65 66 61 75 6c 74   return @default
12b60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
12b70 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12b80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
12b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12bd0 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20         if (name 
12be0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12bf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40          return @
12c00 64 65 66 61 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20  default;....    
12c10 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
12c60 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
12c70 20 44 65 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c   Debug Build Onl
12c80 79 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20  y..#if DEBUG..  
12c90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12ca0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
12cb0 65 20 61 72 65 20 61 62 6f 75 74 20 74 6f 20 72  e are about to r
12cc0 65 61 64 20 61 20 73 65 74 74 69 6e 67 20 76 61  ead a setting va
12cd0 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 65 6e 76  lue from the env
12ce0 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  ironment..      
12cf0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 72 20      //       or 
12d00 70 6f 73 73 69 62 6c 79 20 66 72 6f 6d 20 74 68  possibly from th
12d10 65 20 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74  e XML configurat
12d20 69 6f 6e 20 66 69 6c 65 3b 20 63 72 65 61 74 65  ion file; create
12d30 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   or..          /
12d40 2f 20 20 20 20 20 20 20 69 6e 63 72 65 6d 65 6e  /       incremen
12d50 74 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74  t the appropriat
12d60 65 20 73 74 61 74 69 73 74 69 63 20 6e 6f 77 2e  e statistic now.
12d70 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
12d80 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 44            DebugD
12d90 61 74 61 2e 49 6e 63 72 65 6d 65 6e 74 53 65 74  ata.IncrementSet
12da0 74 69 6e 67 52 65 61 64 43 6f 75 6e 74 28 6e 61  tingReadCount(na
12db0 6d 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e  me, false);..#en
12dc0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 23  dif..          #
12dd0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
12de0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12e30 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65            bool e
12e40 78 70 61 6e 64 20 3d 20 74 72 75 65 3b 20 2f 2a  xpand = true; /*
12e50 20 53 48 41 52 45 44 3a 20 45 6e 76 69 72 6f 6e   SHARED: Environ
12e60 6d 65 6e 74 20 2d 41 4e 44 2d 20 58 4d 4c 20 63  ment -AND- XML c
12e70 6f 6e 66 69 67 20 66 69 6c 65 2e 20 2a 2f 0d 0a  onfig file. */..
12e80 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
12e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ed0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
12ee0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
12ef0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ORK..          s
12f00 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 6e 75  tring value = nu
12f10 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
12f20 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
12f30 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
12f40 61 72 69 61 62 6c 65 28 22 4e 6f 5f 45 78 70 61  ariable("No_Expa
12f50 6e 64 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  nd") != null).. 
12f60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12f70 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e 64            expand
12f80 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
12f90 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12fa0 20 20 65 6c 73 65 20 69 66 20 28 45 6e 76 69 72    else if (Envir
12fb0 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69 72 6f  onment.GetEnviro
12fc0 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28 0d 0a  nmentVariable(..
12fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fe0 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e    HelperMethods.
12ff0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
13000 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
13010 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
13020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
13030 6f 5f 45 78 70 61 6e 64 5f 7b 30 7d 22 2c 20 6e  o_Expand_{0}", n
13040 61 6d 65 29 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ame)) != null)..
13050 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13060 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61 6e             expan
13070 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  d = false;..    
13080 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13090 20 20 20 20 20 76 61 6c 75 65 20 3d 20 45 6e 76       value = Env
130a0 69 72 6f 6e 6d 65 6e 74 2e 47 65 74 45 6e 76 69  ironment.GetEnvi
130b0 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 28  ronmentVariable(
130c0 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
130d0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
130e0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
130f0 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
13100 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13110 20 20 69 66 20 28 65 78 70 61 6e 64 29 0d 0a 20    if (expand).. 
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13130 20 76 61 6c 75 65 20 3d 20 45 6e 76 69 72 6f 6e   value = Environ
13140 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e 76 69 72  ment.ExpandEnvir
13150 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28  onmentVariables(
13160 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
13170 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
13180 20 52 65 70 6c 61 63 65 45 6e 76 69 72 6f 6e 6d   ReplaceEnvironm
13190 65 6e 74 56 61 72 69 61 62 6c 65 54 6f 6b 65 6e  entVariableToken
131a0 73 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  s(value);..     
131b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
131c0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d      if (value !=
131d0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
131e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
131f0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
13200 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
13210 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22  / NOTE: If the "
13220 4e 6f 5f 53 51 4c 69 74 65 58 6d 6c 43 6f 6e 66  No_SQLiteXmlConf
13230 69 67 46 69 6c 65 22 20 65 6e 76 69 72 6f 6e 6d  igFile" environm
13240 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73 0d  ent variable is.
13250 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20  .          //   
13260 20 20 20 20 73 65 74 20 5b 74 6f 20 61 6e 79 74      set [to anyt
13270 68 69 6e 67 5d 2c 20 74 68 69 73 20 6d 65 74 68  hing], this meth
13280 6f 64 20 77 69 6c 6c 20 4e 45 56 45 52 20 72 65  od will NEVER re
13290 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ad from the..   
132a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
132b0 58 4d 4c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  XML configuratio
132c0 6e 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20  n file...       
132d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
132e0 20 69 66 20 28 45 6e 76 69 72 6f 6e 6d 65 6e 74   if (Environment
132f0 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56  .GetEnvironmentV
13300 61 72 69 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  ariable(..      
13310 20 20 20 20 20 20 20 20 20 20 22 4e 6f 5f 53 51            "No_SQ
13320 4c 69 74 65 58 6d 6c 43 6f 6e 66 69 67 46 69 6c  LiteXmlConfigFil
13330 65 22 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  e") != null)..  
13340 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13350 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13360 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20  @default;..     
13370 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
13380 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  /....          #
133e0 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42 75 69  region Debug Bui
133f0 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44 45 42  ld Only..#if DEB
13400 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  UG..          //
13410 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e  ..          // N
13420 4f 54 45 3a 20 57 65 20 61 72 65 20 61 62 6f 75  OTE: We are abou
13430 74 20 74 6f 20 72 65 61 64 20 61 20 73 65 74 74  t to read a sett
13440 69 6e 67 20 76 61 6c 75 65 20 66 72 6f 6d 20 74  ing value from t
13450 68 65 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20 20  he XML..        
13460 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66 69    //       confi
13470 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 3b 20 63  guration file; c
13480 72 65 61 74 65 20 6f 72 20 69 6e 63 72 65 6d 65  reate or increme
13490 6e 74 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  nt the appropria
134a0 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  te..          //
134b0 20 20 20 20 20 20 20 73 74 61 74 69 73 74 69 63         statistic
134c0 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20   now...         
134d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 44   //..          D
134e0 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d 65  ebugData.Increme
134f0 6e 74 53 65 74 74 69 6e 67 52 65 61 64 43 6f 75  ntSettingReadCou
13500 6e 74 28 6e 61 6d 65 2c 20 74 72 75 65 29 3b 0d  nt(name, true);.
13510 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
13520 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13530 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
13540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
13590 74 75 72 6e 20 47 65 74 53 65 74 74 69 6e 67 56  turn GetSettingV
135a0 61 6c 75 65 56 69 61 58 6d 6c 43 6f 6e 66 69 67  alueViaXmlConfig
135b0 46 69 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  File(..         
135c0 20 20 20 20 20 47 65 74 43 61 63 68 65 64 58 6d       GetCachedXm
135d0 6c 43 6f 6e 66 69 67 46 69 6c 65 4e 61 6d 65 28  lConfigFileName(
135e0 29 2c 20 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ), name, @defaul
135f0 74 2c 20 65 78 70 61 6e 64 29 3b 0d 0a 20 20 20  t, expand);..   
13600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13650 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
13660 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
13670 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
13680 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
13690 73 74 72 69 6e 67 20 4c 69 73 74 54 6f 53 74 72  string ListToStr
136a0 69 6e 67 28 49 4c 69 73 74 3c 73 74 72 69 6e 67  ing(IList<string
136b0 3e 20 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 7b  > list)..      {
136c0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
136d0 6c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  list == null).. 
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
136f0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
13700 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69         StringBui
13710 6c 64 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65  lder result = ne
13720 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28  w StringBuilder(
13730 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13740 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20  foreach (string 
13750 65 6c 65 6d 65 6e 74 20 69 6e 20 6c 69 73 74 29  element in list)
13760 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
13770 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13780 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c  (element == null
13790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
137a0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
137b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
137c0 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e 67 74  if (result.Lengt
137d0 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
137e0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
137f0 2e 41 70 70 65 6e 64 28 27 20 27 29 3b 0d 0a 0d  .Append(' ');...
13800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
13810 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 65 6c 65  esult.Append(ele
13820 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
13830 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13840 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 54   return result.T
13850 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
13860 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
13870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
138c0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
138d0 6e 74 20 43 68 65 63 6b 46 6f 72 41 72 63 68 69  nt CheckForArchi
138e0 74 65 63 74 75 72 65 73 41 6e 64 50 6c 61 74 66  tecturesAndPlatf
138f0 6f 72 6d 73 28 0d 0a 20 20 20 20 20 20 20 20 20  orms(..         
13900 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
13910 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  y,..          re
13920 66 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6d  f List<string> m
13930 61 74 63 68 65 73 0d 0a 20 20 20 20 20 20 20 20  atches..        
13940 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20    )..      {..  
13950 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
13960 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
13970 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73       if (matches
13980 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
13990 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73           matches
139a0 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
139b0 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng>();....      
139c0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
139d0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
139e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
139f0 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
13a00 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
13a10 64 69 72 65 63 74 6f 72 79 29 20 26 26 0d 0a 20  directory) &&.. 
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a30 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
13a40 74 65 63 74 75 72 65 50 6c 61 74 66 6f 72 6d 73  tecturePlatforms
13a50 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   != null))..    
13a60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
13a80 6f 72 65 61 63 68 20 28 4b 65 79 56 61 6c 75 65  oreach (KeyValue
13a90 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 73 74 72  Pair<string, str
13aa0 69 6e 67 3e 20 70 61 69 72 0d 0a 20 20 20 20 20  ing> pair..     
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 20 20 20 20 20 20 69 6e 20 70 72 6f 63 65 73         in proces
13ad0 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 50  sorArchitectureP
13ae0 6c 61 74 66 6f 72 6d 73 29 0d 0a 20 20 20 20 20  latforms)..     
13af0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b10 20 20 20 20 20 20 69 66 20 28 44 69 72 65 63 74        if (Direct
13b20 6f 72 79 2e 45 78 69 73 74 73 28 4d 61 79 62 65  ory.Exists(Maybe
13b30 43 6f 6d 62 69 6e 65 50 61 74 68 28 64 69 72 65  CombinePath(dire
13b40 63 74 6f 72 79 2c 20 70 61 69 72 2e 4b 65 79 29  ctory, pair.Key)
13b50 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
13b60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b80 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e 41         matches.A
13b90 64 64 28 70 61 69 72 2e 4b 65 79 29 3b 0d 0a 20  dd(pair.Key);.. 
13ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bb0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b           result+
13bc0 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
13bd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bf0 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
13c00 65 20 3d 20 70 61 69 72 2e 56 61 6c 75 65 3b 0d  e = pair.Value;.
13c10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13c20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
13c30 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
13c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c50 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
13c60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13c70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 69            if (Di
13c80 72 65 63 74 6f 72 79 2e 45 78 69 73 74 73 28 4d  rectory.Exists(M
13c90 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
13ca0 64 69 72 65 63 74 6f 72 79 2c 20 76 61 6c 75 65  directory, value
13cb0 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )))..           
13cc0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ce0 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 73 2e          matches.
13cf0 41 64 64 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  Add(value);..   
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 20 20 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b         result++;
13d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13d60 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
13d70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13d80 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
13d90 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72  ////....      pr
13df0 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
13e00 6c 20 43 68 65 63 6b 41 73 73 65 6d 62 6c 79 43  l CheckAssemblyC
13e10 6f 64 65 42 61 73 65 28 0d 0a 20 20 20 20 20 20  odeBase(..      
13e20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
13e30 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20  embly,..        
13e40 20 20 72 65 66 20 73 74 72 69 6e 67 20 66 69 6c    ref string fil
13e50 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
13e60 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
13e70 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
13e80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13e90 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d         if (assem
13ea0 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  bly == null)..  
13eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ec0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
13ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73  .              s
13ee0 74 72 69 6e 67 20 63 6f 64 65 42 61 73 65 20 3d  tring codeBase =
13ef0 20 61 73 73 65 6d 62 6c 79 2e 43 6f 64 65 42 61   assembly.CodeBa
13f00 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
13f10 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
13f20 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
13f30 64 65 42 61 73 65 29 29 0d 0a 20 20 20 20 20 20  deBase))..      
13f40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13f50 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
13f60 20 20 20 20 20 20 20 20 20 20 20 55 72 69 20 75             Uri u
13f70 72 69 20 3d 20 6e 65 77 20 55 72 69 28 63 6f 64  ri = new Uri(cod
13f80 65 42 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  eBase);..       
13f90 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f         string lo
13fa0 63 61 6c 46 69 6c 65 4e 61 6d 65 20 3d 20 75 72  calFileName = ur
13fb0 69 2e 4c 6f 63 61 6c 50 61 74 68 3b 0d 0a 0d 0a  i.LocalPath;....
13fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13fd0 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73 28 6c   (!File.Exists(l
13fe0 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  ocalFileName))..
13ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14000 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
14010 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14020 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
14030 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
14040 63 74 6f 72 79 4e 61 6d 65 28 0d 0a 20 20 20 20  ctoryName(..    
14050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
14060 63 61 6c 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a  calFileName); /*
14070 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20   throw */....   
14080 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
14090 67 20 78 6d 6c 43 6f 6e 66 69 67 46 69 6c 65 4e  g xmlConfigFileN
140a0 61 6d 65 20 3d 20 4d 61 79 62 65 43 6f 6d 62 69  ame = MaybeCombi
140b0 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
140c0 20 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63             direc
140d0 74 6f 72 79 2c 20 58 6d 6c 43 6f 6e 66 69 67 46  tory, XmlConfigF
140e0 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
140f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 46             if (F
14100 69 6c 65 2e 45 78 69 73 74 73 28 78 6d 6c 43 6f  ile.Exists(xmlCo
14110 6e 66 69 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  nfigFileName))..
14120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14130 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
14140 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
14150 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
14160 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14180 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14190 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
141a0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
141b0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
141c0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
141d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141e0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
141f0 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
14200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14210 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
14220 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
14230 64 65 72 20 66 6f 75 6e 64 20 58 4d 4c 20 63 6f  der found XML co
14240 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65  nfiguration file
14250 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
14260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14270 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66  "via code base f
14280 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
14290 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
142a0 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20   \"{0}\"",..    
142b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
142c0 20 20 20 20 20 20 78 6d 6c 43 6f 6e 66 69 67 46        xmlConfigF
142d0 69 6c 65 4e 61 6d 65 29 29 3b 20 2f 2a 20 74 68  ileName)); /* th
142e0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
142f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
14310 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
14320 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14340 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
14350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14360 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14380 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 63    fileName = loc
14390 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  alFileName;..   
143a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
143b0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
143c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
143d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69                Li
143e0 73 74 3c 73 74 72 69 6e 67 3e 20 6d 61 74 63 68  st<string> match
143f0 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  es = null;....  
14400 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14410 43 68 65 63 6b 46 6f 72 41 72 63 68 69 74 65 63  CheckForArchitec
14420 74 75 72 65 73 41 6e 64 50 6c 61 74 66 6f 72 6d  turesAndPlatform
14430 73 28 64 69 72 65 63 74 6f 72 79 2c 20 72 65 66  s(directory, ref
14440 20 6d 61 74 63 68 65 73 29 20 3e 20 30 29 0d 0a   matches) > 0)..
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14460 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
14470 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 44 45  T_20 && TRACE_DE
14480 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  TECTION..       
14490 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
144a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
144c0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
144d0 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
144e0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
144f0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
14500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14510 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
14520 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
14530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14540 20 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65           "Native
14550 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61   library pre-loa
14560 64 65 72 20 66 6f 75 6e 64 20 6e 61 74 69 76 65  der found native
14570 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
14580 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
14590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145a0 22 76 69 61 20 63 6f 64 65 20 62 61 73 65 20 66  "via code base f
145b0 6f 72 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65  or currently exe
145c0 63 75 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a  cuting assembly:
145d0 20 5c 22 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20   \"{0}\"",..    
145e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145f0 20 20 20 20 20 20 4c 69 73 74 54 6f 53 74 72 69        ListToStri
14600 6e 67 28 6d 61 74 63 68 65 73 29 29 29 3b 20 2f  ng(matches))); /
14610 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
14620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14640 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
14650 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14670 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
14680 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
14690 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
146a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
146b0 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d        fileName =
146c0 20 6c 6f 63 61 6c 46 69 6c 65 4e 61 6d 65 3b 0d   localFileName;.
146d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
146e0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
146f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
14700 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14710 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
14720 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 69  .          }..#i
14730 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
14740 30 20 26 26 20 54 52 41 43 45 5f 53 48 41 52 45  0 && TRACE_SHARE
14750 44 0d 0a 20 20 20 20 20 20 20 20 20 20 63 61 74  D..          cat
14760 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
14770 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
14780 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
14790 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ion)..#endif..  
147a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
147b0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
147c0 26 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a  & TRACE_SHARED..
147d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
147e0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
147f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14800 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
14810 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
14820 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
14830 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
14840 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
14850 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
14860 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
14870 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 61 74              "Nat
14880 69 76 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d  ive library pre-
14890 6c 6f 61 64 65 72 20 66 61 69 6c 65 64 20 74 6f  loader failed to
148a0 20 63 68 65 63 6b 20 63 6f 64 65 20 62 61 73 65   check code base
148b0 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
148c0 20 20 20 20 20 20 20 20 20 20 20 20 22 66 6f 72              "for
148d0 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
148e0 74 69 6e 67 20 61 73 73 65 6d 62 6c 79 3a 20 7b  ting assembly: {
148f0 30 7d 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72  0}", e)); /* thr
14900 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
14910 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14920 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
14930 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14950 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
14960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14970 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
14980 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14990 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
149a0 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  .      }..#endif
149b0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a00 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ///..      /// <
14a10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14a20 2f 2f 2f 20 52 65 73 65 74 73 20 74 68 65 20 63  /// Resets the c
14a30 61 63 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64  ached assembly d
14a40 69 72 65 63 74 6f 72 79 20 76 61 6c 75 65 2c 20  irectory value, 
14a50 74 68 75 73 20 66 6f 72 63 69 6e 67 20 74 68 65  thus forcing the
14a60 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 2f 2f 2f   next..      ///
14a70 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63 72   call to <see cr
14a80 65 66 3d 22 47 65 74 43 61 63 68 65 64 41 73 73  ef="GetCachedAss
14a90 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20  emblyDirectory" 
14aa0 2f 3e 20 6d 65 74 68 6f 64 20 74 6f 20 72 65 6c  /> method to rel
14ab0 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f  y..      /// upo
14ac0 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  n the <see cref=
14ad0 22 47 65 74 41 73 73 65 6d 62 6c 79 44 69 72 65  "GetAssemblyDire
14ae0 63 74 6f 72 79 22 20 2f 3e 20 6d 65 74 68 6f 64  ctory" /> method
14af0 20 74 6f 20 66 65 74 63 68 20 74 68 65 0d 0a 20   to fetch the.. 
14b00 20 20 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c       /// assembl
14b10 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  y directory...  
14b20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14b30 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74  y>..      privat
14b40 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 52 65  e static void Re
14b50 73 65 74 43 61 63 68 65 64 41 73 73 65 6d 62 6c  setCachedAssembl
14b60 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20  yDirectory()..  
14b70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14b80 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20 42   #region Debug B
14b90 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20 44  uild Only..#if D
14ba0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
14bb0 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65 6d  DebugData.Increm
14bc0 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22 4d  entOtherCount("M
14bd0 65 74 68 6f 64 5f 52 65 73 65 74 43 61 63 68 65  ethod_ResetCache
14be0 64 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  dAssemblyDirecto
14bf0 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ry");..#endif.. 
14c00 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
14c10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
14c20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79 6e   lock (staticSyn
14c30 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
14c40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14c50 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c     cachedAssembl
14c60 79 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c  yDirectory = nul
14c70 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
14c80 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72 65    noAssemblyDire
14c90 63 74 6f 72 79 20 3d 20 66 61 6c 73 65 3b 0d 0a  ctory = false;..
14ca0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14cb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
14cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d00 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f  ///////..      /
14d10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14d20 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
14d30 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
14d40 63 61 63 68 65 64 20 64 69 72 65 63 74 6f 72 79  cached directory
14d50 20 66 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c   for the assembl
14d60 79 20 63 75 72 72 65 6e 74 6c 79 0d 0a 20 20 20  y currently..   
14d70 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20 65 78 65     /// being exe
14d80 63 75 74 65 64 2c 20 69 66 20 61 76 61 69 6c 61  cuted, if availa
14d90 62 6c 65 2e 20 20 49 66 20 74 68 65 20 63 61 63  ble.  If the cac
14da0 68 65 64 20 61 73 73 65 6d 62 6c 79 20 64 69 72  hed assembly dir
14db0 65 63 74 6f 72 79 20 76 61 6c 75 65 0d 0a 20 20  ectory value..  
14dc0 20 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 74 20 61      /// is not a
14dd0 76 61 69 6c 61 62 6c 65 2c 20 74 68 65 20 3c 73  vailable, the <s
14de0 65 65 20 63 72 65 66 3d 22 47 65 74 41 73 73 65  ee cref="GetAsse
14df0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 22 20 2f  mblyDirectory" /
14e00 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20  > method will.. 
14e10 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64       /// be used
14e20 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 61   to obtain the a
14e30 73 73 65 6d 62 6c 79 20 64 69 72 65 63 74 6f 72  ssembly director
14e40 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
14e50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14e60 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
14e70 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 72       /// The dir
14e80 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 61  ectory for the a
14e90 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e 74 6c  ssembly currentl
14ea0 79 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  y being executed
14eb0 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d 0a 20   -OR- null if.. 
14ec0 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e       /// it cann
14ed0 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
14ee0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
14ef0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
14f00 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
14f10 72 69 6e 67 20 47 65 74 43 61 63 68 65 64 41 73  ring GetCachedAs
14f20 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
14f30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
14f40 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
14f50 62 75 67 20 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a  bug Build Only..
14f60 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
14f70 20 20 20 20 20 44 65 62 75 67 44 61 74 61 2e 49       DebugData.I
14f80 6e 63 72 65 6d 65 6e 74 4f 74 68 65 72 43 6f 75  ncrementOtherCou
14f90 6e 74 28 22 4d 65 74 68 6f 64 5f 47 65 74 43 61  nt("Method_GetCa
14fa0 63 68 65 64 41 73 73 65 6d 62 6c 79 44 69 72 65  chedAssemblyDire
14fb0 63 74 6f 72 79 22 29 3b 0d 0a 23 65 6e 64 69 66  ctory");..#endif
14fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64  ..          #end
14fd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
14fe0 20 20 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63      lock (static
14ff0 53 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  SyncRoot)..     
15000 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15010 20 20 20 20 20 20 69 66 20 28 63 61 63 68 65 64        if (cached
15020 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
15030 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
15040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15050 74 75 72 6e 20 63 61 63 68 65 64 41 73 73 65 6d  turn cachedAssem
15060 62 6c 79 44 69 72 65 63 74 6f 72 79 3b 0d 0a 0d  blyDirectory;...
15070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
15080 66 20 28 6e 6f 41 73 73 65 6d 62 6c 79 44 69 72  f (noAssemblyDir
15090 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20 20  ectory)..       
150a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
150b0 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
150c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
150d0 20 20 72 65 74 75 72 6e 20 47 65 74 41 73 73 65    return GetAsse
150e0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28 29 3b  mblyDirectory();
150f0 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
15100 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
15150 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15160 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 51 75 65  >..      /// Que
15170 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ries and returns
15180 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 66   the directory f
15190 6f 72 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20  or the assembly 
151a0 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 0d  currently being.
151b0 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 65 63 75  .      /// execu
151c0 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ted...      /// 
151d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
151e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
151f0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
15200 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
15210 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
15220 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
15230 65 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 0d  ed -OR- null if.
15240 0a 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61  .      /// it ca
15250 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
15260 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
15270 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
15280 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
15290 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62  string GetAssemb
152a0 6c 79 44 69 72 65 63 74 6f 72 79 28 29 0d 0a 20  lyDirectory().. 
152b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
152c0 20 20 23 72 65 67 69 6f 6e 20 44 65 62 75 67 20    #region Debug 
152d0 42 75 69 6c 64 20 4f 6e 6c 79 0d 0a 23 69 66 20  Build Only..#if 
152e0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20  DEBUG..         
152f0 20 44 65 62 75 67 44 61 74 61 2e 49 6e 63 72 65   DebugData.Incre
15300 6d 65 6e 74 4f 74 68 65 72 43 6f 75 6e 74 28 22  mentOtherCount("
15310 4d 65 74 68 6f 64 5f 47 65 74 41 73 73 65 6d 62  Method_GetAssemb
15320 6c 79 44 69 72 65 63 74 6f 72 79 22 29 3b 0d 0a  lyDirectory");..
15330 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
15340 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15350 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
15360 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15370 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
15380 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73  ly assembly = As
15390 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74  sembly.GetExecut
153a0 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a  ingAssembly();..
153b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
153c0 69 66 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20  if (assembly == 
153d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
153e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
153f0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
15400 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d  staticSyncRoot).
15410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15420 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15430 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73              noAs
15440 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20  semblyDirectory 
15450 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
15460 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
15470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15480 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
15490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
154a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
154b0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
154c0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20   = null;....#if 
154d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
154e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
154f0 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
15500 79 4e 61 6d 65 20 61 73 73 65 6d 62 6c 79 4e 61  yName assemblyNa
15510 6d 65 20 3d 20 61 73 73 65 6d 62 6c 79 2e 47 65  me = assembly.Ge
15520 74 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tName();....    
15530 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
15540 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75  semblyName == nu
15550 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
15560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15570 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 74          lock (st
15580 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a 20  aticSyncRoot).. 
15590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
155a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
155b0 20 20 20 20 20 20 20 20 20 20 6e 6f 41 73 73 65            noAsse
155c0 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 20 3d 20  mblyDirectory = 
155d0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
155e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
155f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15600 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
15610 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
15620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
15630 69 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62  ileName = assemb
15640 6c 79 4e 61 6d 65 2e 43 6f 64 65 42 61 73 65 3b  lyName.CodeBase;
15650 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
15660 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65 63         if (!Chec
15670 6b 41 73 73 65 6d 62 6c 79 43 6f 64 65 42 61 73  kAssemblyCodeBas
15680 65 28 61 73 73 65 6d 62 6c 79 2c 20 72 65 66 20  e(assembly, ref 
15690 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  fileName))..    
156a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
156b0 6c 65 4e 61 6d 65 20 3d 20 61 73 73 65 6d 62 6c  leName = assembl
156c0 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 23 65 6e  y.Location;..#en
156d0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
156e0 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
156f0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69  IsNullOrEmpty(fi
15700 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
15710 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15720 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
15730 6b 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f  k (staticSyncRoo
15740 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
15750 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
15770 6f 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f  oAssemblyDirecto
15780 72 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ry = true;..    
15790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
157a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
157b0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
157c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
157d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
157e0 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65 63      string direc
157f0 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44  tory = Path.GetD
15800 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c  irectoryName(fil
15810 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
15820 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
15830 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
15840 79 28 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20  y(directory)).. 
15850 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15870 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
15880 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
15890 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
158a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
158b0 20 20 20 20 6e 6f 41 73 73 65 6d 62 6c 79 44 69      noAssemblyDi
158c0 72 65 63 74 6f 72 79 20 3d 20 74 72 75 65 3b 0d  rectory = true;.
158d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
158e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
158f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15900 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
15910 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
15920 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
15930 74 61 74 69 63 53 79 6e 63 52 6f 6f 74 29 0d 0a  taticSyncRoot)..
15940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
15950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15960 20 20 20 63 61 63 68 65 64 41 73 73 65 6d 62 6c     cachedAssembl
15970 79 44 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72  yDirectory = dir
15980 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20  ectory;..       
15990 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
159a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
159b0 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
159c0 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e         }..#if !N
159d0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
159e0 20 54 52 41 43 45 5f 53 48 41 52 45 44 0d 0a 20   TRACE_SHARED.. 
159f0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
15a00 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65  Exception e)..#e
15a10 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 63  lse..          c
15a20 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 29  atch (Exception)
15a30 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
15a40 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
15a50 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
15a60 41 43 45 5f 53 48 41 52 45 44 0d 0a 20 20 20 20  ACE_SHARED..    
15a70 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
15a80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15aa0 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
15ab0 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
15ac0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
15ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ae0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
15af0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
15b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15b10 20 20 20 20 20 20 20 20 22 4e 61 74 69 76 65 20          "Native 
15b20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f 61 64  library pre-load
15b30 65 72 20 66 61 69 6c 65 64 20 74 6f 20 67 65 74  er failed to get
15b40 20 64 69 72 65 63 74 6f 72 79 20 22 20 2b 0d 0a   directory " +..
15b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b60 20 20 20 20 20 20 22 66 6f 72 20 63 75 72 72 65        "for curre
15b70 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20 61  ntly executing a
15b80 73 73 65 6d 62 6c 79 3a 20 7b 30 7d 22 2c 20 65  ssembly: {0}", e
15b90 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
15ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
15bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15bc0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
15bd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15be0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
15bf0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
15c00 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
15c10 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  f..          }..
15c20 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b  ..          lock
15c30 20 28 73 74 61 74 69 63 53 79 6e 63 52 6f 6f 74   (staticSyncRoot
15c40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
15c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f                no
15c60 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
15c70 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
15c80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15c90 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
15ca0 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
15cb0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
15cc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15d10 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
15d20 4f 70 74 69 6f 6e 61 6c 20 4e 61 74 69 76 65 20  Optional Native 
15d30 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 20 50  SQLite Library P
15d40 72 65 2d 4c 6f 61 64 69 6e 67 20 43 6f 64 65 0d  re-Loading Code.
15d50 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
15d60 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 77 65 20   // NOTE: If we 
15d70 61 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  are looking for 
15d80 74 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c  the standard SQL
15d90 69 74 65 20 44 4c 4c 20 28 22 73 71 6c 69 74 65  ite DLL ("sqlite
15da0 33 2e 64 6c 6c 22 29 2c 0d 0a 20 20 20 20 20 20  3.dll"),..      
15db0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 69 6e 74  //       the int
15dc0 65 72 6f 70 20 44 4c 4c 20 28 22 53 51 4c 69 74  erop DLL ("SQLit
15dd0 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 22 29 2c  e.Interop.dll"),
15de0 20 6f 72 20 77 65 20 61 72 65 20 72 75 6e 6e 69   or we are runni
15df0 6e 67 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng on the..     
15e00 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20 43   //       .NET C
15e10 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
15e20 2c 20 77 65 20 73 68 6f 75 6c 64 20 69 6e 63 6c  , we should incl
15e30 75 64 65 20 74 68 69 73 20 63 6f 64 65 20 28 6f  ude this code (o
15e40 6e 6c 79 20 69 66 20 74 68 65 0d 0a 20 20 20 20  nly if the..    
15e50 20 20 2f 2f 20 20 20 20 20 20 20 66 65 61 74 75    //       featu
15e60 72 65 20 68 61 73 20 61 63 74 75 61 6c 6c 79 20  re has actually 
15e70 62 65 65 6e 20 65 6e 61 62 6c 65 64 29 2e 20 20  been enabled).  
15e80 54 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20  This code would 
15e90 62 65 20 74 6f 74 61 6c 6c 79 0d 0a 20 20 20 20  be totally..    
15ea0 20 20 2f 2f 20 20 20 20 20 20 20 72 65 64 75 6e    //       redun
15eb0 64 61 6e 74 20 69 66 20 74 68 69 73 20 6d 6f 64  dant if this mod
15ec0 75 6c 65 20 68 61 73 20 62 65 65 6e 20 62 75 6e  ule has been bun
15ed0 64 6c 65 64 20 69 6e 74 6f 20 74 68 65 20 6d 69  dled into the mi
15ee0 78 65 64 2d 6d 6f 64 65 0d 0a 20 20 20 20 20 20  xed-mode..      
15ef0 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c  //       assembl
15f00 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 23 69  y...      //..#i
15f10 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52  f SQLITE_STANDAR
15f20 44 20 7c 7c 20 55 53 45 5f 49 4e 54 45 52 4f 50  D || USE_INTEROP
15f30 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54 46 4f 52 4d  _DLL || PLATFORM
15f40 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
15f50 4b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20  K....      //.. 
15f60 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e       // NOTE: On
15f70 6c 79 20 63 6f 6d 70 69 6c 65 20 69 6e 20 74 68  ly compile in th
15f80 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79  e native library
15f90 20 70 72 65 2d 6c 6f 61 64 20 63 6f 64 65 20 69   pre-load code i
15fa0 66 20 74 68 65 20 66 65 61 74 75 72 65 0d 0a 20  f the feature.. 
15fb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
15fc0 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 66  s been enabled f
15fd0 6f 72 20 74 68 69 73 20 62 75 69 6c 64 2e 0d 0a  or this build...
15fe0 20 20 20 20 20 20 2f 2f 0d 0a 23 69 66 20 50 52        //..#if PR
15ff0 45 4c 4f 41 44 5f 4e 41 54 49 56 45 5f 4c 49 42  ELOAD_NATIVE_LIB
16000 52 41 52 59 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  RARY..      /// 
16010 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16020 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
16030 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74   the environment
16040 20 76 61 72 69 61 62 6c 65 20 63 6f 6e 74 61 69   variable contai
16050 6e 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ning the process
16060 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  or..      /// ar
16070 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74 68  chitecture of th
16080 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73  e current proces
16090 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
160a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
160b0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
160c0 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 50  eadonly string P
160d0 52 4f 43 45 53 53 4f 52 5f 41 52 43 48 49 54 45  ROCESSOR_ARCHITE
160e0 43 54 55 52 45 20 3d 0d 0a 20 20 20 20 20 20 20  CTURE =..       
160f0 20 20 20 22 50 52 4f 43 45 53 53 4f 52 5f 41 52     "PROCESSOR_AR
16100 43 48 49 54 45 43 54 55 52 45 22 3b 0d 0a 0d 0a  CHITECTURE";....
16110 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16160 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
16170 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20   Private Data.. 
16180 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16190 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
161a0 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
161b0 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  file name for th
161c0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
161d0 6c 69 62 72 61 72 79 20 6f 72 20 6e 75 6c 6c 2e  library or null.
161e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
161f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 69 6e  mmary>..      in
16200 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
16210 72 69 6e 67 20 5f 53 51 4c 69 74 65 4e 61 74 69  ring _SQLiteNati
16220 76 65 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65  veModuleFileName
16230 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
16240 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
16290 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
162a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
162b0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 68 61  native module ha
162c0 6e 64 6c 65 20 66 6f 72 20 74 68 65 20 6e 61 74  ndle for the nat
162d0 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  ive SQLite libra
162e0 72 79 20 6f 72 20 74 68 65 20 76 61 6c 75 65 0d  ry or the value.
162f0 0a 20 20 20 20 20 20 2f 2f 2f 20 49 6e 74 50 74  .      /// IntPt
16300 72 2e 5a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f  r.Zero...      /
16310 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16320 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
16330 74 69 63 20 49 6e 74 50 74 72 20 5f 53 51 4c 69  tic IntPtr _SQLi
16340 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61  teNativeModuleHa
16350 6e 64 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndle = IntPtr.Ze
16360 72 6f 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  ro;..      #endr
16370 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
16380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
163d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
163e0 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69       /// Determi
163f0 6e 65 73 20 74 68 65 20 62 61 73 65 20 66 69 6c  nes the base fil
16400 65 20 6e 61 6d 65 20 28 77 69 74 68 6f 75 74 20  e name (without 
16410 61 6e 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e  any directory in
16420 66 6f 72 6d 61 74 69 6f 6e 29 0d 0a 20 20 20 20  formation)..    
16430 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 6e 61    /// for the na
16440 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
16450 61 72 79 20 74 6f 20 62 65 20 70 72 65 2d 6c 6f  ary to be pre-lo
16460 61 64 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  aded by this cla
16470 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
16480 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16490 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
164a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 62 61        /// The ba
164b0 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72  se file name for
164c0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
164d0 74 65 20 6c 69 62 72 61 72 79 20 74 6f 20 62 65  te library to be
164e0 20 70 72 65 2d 6c 6f 61 64 65 64 20 62 79 0d 0a   pre-loaded by..
164f0 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63        /// this c
16500 6c 61 73 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  lass -OR- null i
16510 66 20 69 74 73 20 76 61 6c 75 65 20 63 61 6e 6e  f its value cann
16520 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
16530 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
16540 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 69  eturns>..      i
16550 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
16560 74 72 69 6e 67 20 47 65 74 4e 61 74 69 76 65 4c  tring GetNativeL
16570 69 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e  ibraryFileNameOn
16580 6c 79 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ly()..      {.. 
16590 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
165a0 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 47  fileNameOnly = G
165b0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d  etSettingValue(.
165c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
165d0 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 4c 69  PreLoadSQLite_Li
165e0 62 72 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c  braryFileNameOnl
165f0 79 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  y", null);....  
16600 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65          if (file
16610 4e 61 6d 65 4f 6e 6c 79 20 21 3d 20 6e 75 6c 6c  NameOnly != null
16620 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16630 20 72 65 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65   return fileName
16640 4f 6e 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Only;....       
16650 20 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45     return SQLITE
16660 5f 44 4c 4c 3b 20 2f 2a 20 43 4f 4d 50 41 54 20  _DLL; /* COMPAT 
16670 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  */..      }.... 
16680 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
166d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
166e0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ry>..      /// S
166f0 65 61 72 63 68 65 73 20 66 6f 72 20 74 68 65 20  earches for the 
16700 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
16710 62 72 61 72 79 20 69 6e 20 74 68 65 20 64 69 72  brary in the dir
16720 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
16730 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  g..      /// the
16740 20 61 73 73 65 6d 62 6c 79 20 63 75 72 72 65 6e   assembly curren
16750 74 6c 79 20 62 65 69 6e 67 20 65 78 65 63 75 74  tly being execut
16760 65 64 20 61 73 20 77 65 6c 6c 20 61 73 20 74 68  ed as well as th
16770 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
16780 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ..      /// for 
16790 74 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c  the current appl
167a0 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 2e 0d  ication domain..
167b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
167c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
167d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
167e0 73 65 44 69 72 65 63 74 6f 72 79 22 3e 0d 0a 20  seDirectory">.. 
167f0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
16800 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
16810 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
16820 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
16830 74 6f 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  to the base..   
16840 20 20 20 2f 2f 2f 20 64 69 72 65 63 74 6f 72 79     /// directory
16850 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
16860 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69  native SQLite li
16870 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  brary...      //
16880 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
16890 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
168a0 65 3d 22 70 72 6f 63 65 73 73 6f 72 41 72 63 68  e="processorArch
168b0 69 74 65 63 74 75 72 65 22 3e 0d 0a 20 20 20 20  itecture">..    
168c0 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
168d0 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
168e0 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66  er will be modif
168f0 69 65 64 20 74 6f 20 72 65 66 65 72 20 74 6f 20  ied to refer to 
16900 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  the name..      
16910 2f 2f 2f 20 6f 66 20 74 68 65 20 69 6d 6d 65 64  /// of the immed
16920 69 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 28  iate directory (
16930 69 2e 65 2e 20 74 68 65 20 6f 66 66 73 65 74 20  i.e. the offset 
16940 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69  from the base di
16950 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 20 20  rectory)..      
16960 2f 2f 2f 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  /// containing t
16970 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
16980 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
16990 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
169a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
169b0 6e 61 6d 65 3d 22 61 6c 6c 6f 77 42 61 73 65 44  name="allowBaseD
169c0 69 72 65 63 74 6f 72 79 4f 6e 6c 79 22 3e 0d 0a  irectoryOnly">..
169d0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
169e0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
169f0 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
16a00 6f 64 69 66 69 65 64 20 74 6f 20 6e 6f 6e 2d 7a  odified to non-z
16a10 65 72 6f 20 6f 6e 6c 79 20 69 66 0d 0a 20 20 20  ero only if..   
16a20 20 20 20 2f 2f 2f 20 74 68 65 20 62 61 73 65 20     /// the base 
16a30 64 69 72 65 63 74 6f 72 79 20 69 74 73 65 6c 66  directory itself
16a40 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 6c 6f 77   should be allow
16a50 65 64 20 66 6f 72 20 6c 6f 61 64 69 6e 67 20 74  ed for loading t
16a60 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
16a70 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
16a80 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
16a90 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  >..      /// <re
16aa0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f 2f  turns>..      //
16ab0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 28 73 75 63 63  / Non-zero (succ
16ac0 65 73 73 29 20 69 66 20 74 68 65 20 6e 61 74 69  ess) if the nati
16ad0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
16ae0 79 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68  y was found; oth
16af0 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 2f  erwise,..      /
16b00 2f 2f 20 7a 65 72 6f 20 28 66 61 69 6c 75 72 65  // zero (failure
16b10 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  )...      /// </
16b20 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
16b30 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
16b40 6f 6f 6c 20 53 65 61 72 63 68 46 6f 72 44 69 72  ool SearchForDir
16b50 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
16b60 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 62 61     ref string ba
16b70 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20 20  seDirectory,    
16b80 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
16b90 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
16ba0 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
16bb0 63 68 69 74 65 63 74 75 72 65 2c 20 2f 2a 20 6f  chitecture, /* o
16bc0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
16bd0 20 72 65 66 20 62 6f 6f 6c 20 61 6c 6c 6f 77 42   ref bool allowB
16be0 61 73 65 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79  aseDirectoryOnly
16bf0 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
16c00 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
16c10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
16c20 20 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75   (GetSettingValu
16c30 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
16c40 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c 69      "PreLoadSQLi
16c50 74 65 5f 4e 6f 53 65 61 72 63 68 46 6f 72 44 69  te_NoSearchForDi
16c60 72 65 63 74 6f 72 79 22 2c 20 6e 75 6c 6c 29 20  rectory", null) 
16c70 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
16c80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16c90 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
16ca0 65 3b 20 2f 2a 20 44 49 53 41 42 4c 45 44 20 2a  e; /* DISABLED *
16cb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  /..          }..
16cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
16cd0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
16ce0 45 3a 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65  E: Determine the
16cf0 20 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20   base file name 
16d00 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53  for the native S
16d10 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a  QLite library...
16d20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
16d30 20 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f     If this is no
16d40 74 20 6b 6e 6f 77 6e 20 62 79 20 74 68 69 73 20  t known by this 
16d50 63 6c 61 73 73 2c 20 77 65 20 63 61 6e 6e 6f 74  class, we cannot
16d60 20 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20   continue...    
16d70 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16d80 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
16d90 61 6d 65 4f 6e 6c 79 20 3d 20 47 65 74 4e 61 74  ameOnly = GetNat
16da0 69 76 65 4c 69 62 72 61 72 79 46 69 6c 65 4e 61  iveLibraryFileNa
16db0 6d 65 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  meOnly();....   
16dc0 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e         if (fileN
16dd0 61 6d 65 4f 6e 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ameOnly == null)
16de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16df0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
16e00 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
16e10 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
16e20 3a 20 42 75 69 6c 64 20 74 68 65 20 6c 69 73 74  : Build the list
16e30 20 6f 66 20 62 61 73 65 20 64 69 72 65 63 74 6f   of base directo
16e40 72 69 65 73 20 61 6e 64 20 70 72 6f 63 65 73 73  ries and process
16e50 6f 72 2f 70 6c 61 74 66 6f 72 6d 0d 0a 20 20 20  or/platform..   
16e60 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
16e70 6e 61 6d 65 73 2e 20 20 54 68 65 73 65 20 6c 69  names.  These li
16e80 73 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64  sts will be used
16e90 20 74 6f 20 68 65 6c 70 20 6c 6f 63 61 74 65 20   to help locate 
16ea0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
16eb0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53        //       S
16ec0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
16ed0 72 79 20 28 6f 72 20 69 6e 74 65 72 6f 70 20 61  ry (or interop a
16ee0 73 73 65 6d 62 6c 79 29 20 74 6f 20 70 72 65 2d  ssembly) to pre-
16ef0 6c 6f 61 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20  load into..     
16f00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
16f10 69 73 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20  is process...   
16f20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
16f30 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 64 69       string[] di
16f40 72 65 63 74 6f 72 69 65 73 20 3d 20 7b 0d 0a 20  rectories = {.. 
16f50 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
16f60 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
16f70 79 28 29 2c 0d 0a 23 69 66 20 21 50 4c 41 54 46  y(),..#if !PLATF
16f80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
16f90 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
16fa0 20 20 20 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75      AppDomain.Cu
16fb0 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65  rrentDomain.Base
16fc0 44 69 72 65 63 74 6f 72 79 2c 0d 0a 23 65 6e 64  Directory,..#end
16fd0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 3b  if..          };
16fe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  ....          st
16ff0 72 69 6e 67 20 65 78 74 72 61 53 75 62 44 69 72  ring extraSubDir
17000 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  ectory = null;..
17010 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
17020 28 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  (GetSettingValue
17030 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
17040 20 20 20 20 20 22 50 72 65 4c 6f 61 64 53 51 4c       "PreLoadSQL
17050 69 74 65 5f 41 6c 6c 6f 77 42 61 73 65 44 69 72  ite_AllowBaseDir
17060 65 63 74 6f 72 79 4f 6e 6c 79 22 2c 20 6e 75 6c  ectoryOnly", nul
17070 6c 29 20 21 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a  l) != null) ||..
17080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 48                (H
17090 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73 44  elperMethods.IsD
170a0 6f 74 4e 65 74 43 6f 72 65 28 29 20 26 26 20 21  otNetCore() && !
170b0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49 73  HelperMethods.Is
170c0 57 69 6e 64 6f 77 73 28 29 29 29 0d 0a 20 20 20  Windows()))..   
170d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
170e0 20 20 20 20 20 20 20 20 65 78 74 72 61 53 75 62          extraSub
170f0 44 69 72 65 63 74 6f 72 79 20 3d 20 53 74 72 69  Directory = Stri
17100 6e 67 2e 45 6d 70 74 79 3b 20 2f 2a 20 2e 4e 45  ng.Empty; /* .NE
17110 54 20 43 6f 72 65 20 6f 6e 20 50 4f 53 49 58 20  T Core on POSIX 
17120 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  */..          }.
17130 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  ...          str
17140 69 6e 67 5b 5d 20 73 75 62 44 69 72 65 63 74 6f  ing[] subDirecto
17150 72 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20  ries = {..      
17160 20 20 20 20 20 20 20 20 47 65 74 50 72 6f 63 65          GetProce
17170 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
17180 28 29 2c 20 2f 2a 20 65 2e 67 2e 20 22 78 38 36  (), /* e.g. "x86
17190 22 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  " */..          
171a0 20 20 20 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e      GetPlatformN
171b0 61 6d 65 28 6e 75 6c 6c 29 2c 20 20 20 20 20 20  ame(null),      
171c0 2f 2a 20 65 2e 67 2e 20 22 57 69 6e 33 32 22 20  /* e.g. "Win32" 
171d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
171e0 20 20 65 78 74 72 61 53 75 62 44 69 72 65 63 74    extraSubDirect
171f0 6f 72 79 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ory           /*
17200 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
17210 6f 6e 6c 79 3f 20 2a 2f 0d 0a 20 20 20 20 20 20  only? */..      
17220 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
17230 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
17240 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ing directory in
17250 20 64 69 72 65 63 74 6f 72 69 65 73 29 0d 0a 20   directories).. 
17260 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17270 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
17280 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
17290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
172a0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
172b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
172c0 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 73  oreach (string s
172d0 75 62 44 69 72 65 63 74 6f 72 79 20 69 6e 20 73  ubDirectory in s
172e0 75 62 44 69 72 65 63 74 6f 72 69 65 73 29 0d 0a  ubDirectories)..
172f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
17300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17310 20 20 20 69 66 20 28 73 75 62 44 69 72 65 63 74     if (subDirect
17320 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ory == null)..  
17330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17340 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
17350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17360 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
17370 6d 65 20 3d 20 46 69 78 55 70 44 6c 6c 46 69 6c  me = FixUpDllFil
17380 65 4e 61 6d 65 28 4d 61 79 62 65 43 6f 6d 62 69  eName(MaybeCombi
17390 6e 65 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20  nePath(..       
173a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
173b0 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68 28  aybeCombinePath(
173c0 64 69 72 65 63 74 6f 72 79 2c 20 73 75 62 44 69  directory, subDi
173d0 72 65 63 74 6f 72 79 29 2c 0d 0a 20 20 20 20 20  rectory),..     
173e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
173f0 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b   fileNameOnly));
17400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17410 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
17420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
17430 4f 54 45 3a 20 49 66 20 74 68 65 20 53 51 4c 69  OTE: If the SQLi
17440 74 65 20 44 4c 4c 20 66 69 6c 65 20 65 78 69 73  te DLL file exis
17450 74 73 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65  ts, return succe
17460 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
17470 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
17480 50 72 69 6f 72 20 74 6f 20 72 65 74 75 72 6e 69  Prior to returni
17490 6e 67 2c 20 73 65 74 20 74 68 65 20 62 61 73 65  ng, set the base
174a0 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
174b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174c0 20 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65    //       proce
174d0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
174e0 65 20 74 6f 20 72 65 66 6c 65 63 74 20 74 68 65  e to reflect the
174f0 20 6c 6f 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20   location..     
17500 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17510 20 20 20 20 20 20 77 68 65 72 65 20 69 74 20 77        where it w
17520 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  as found...     
17530 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
17540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17550 20 20 20 69 66 20 28 46 69 6c 65 2e 45 78 69 73     if (File.Exis
17560 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ts(fileName)).. 
17570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17580 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
17590 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
175a0 5f 44 45 54 45 43 54 49 4f 4e 0d 0a 20 20 20 20  _DETECTION..    
175b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175c0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
175d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
175e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175f0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
17600 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
17610 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
17620 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
17630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17640 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
17650 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
17660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17680 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20  "Native library 
17690 70 72 65 2d 6c 6f 61 64 65 72 20 66 6f 75 6e 64  pre-loader found
176a0 20 6e 61 74 69 76 65 20 66 69 6c 65 20 22 20 2b   native file " +
176b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
176c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
176d0 22 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 2c 20 72  "name \"{0}\", r
176e0 65 74 75 72 6e 69 6e 67 20 64 69 72 65 63 74 6f  eturning directo
176f0 72 79 20 5c 22 7b 31 7d 5c 22 20 61 6e 64 20 22  ry \"{1}\" and "
17700 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
17710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17720 20 20 22 73 75 62 2d 64 69 72 65 63 74 6f 72 79    "sub-directory
17730 20 5c 22 7b 32 7d 5c 22 2e 2e 2e 22 2c 20 66 69   \"{2}\"...", fi
17740 6c 65 4e 61 6d 65 2c 20 64 69 72 65 63 74 6f 72  leName, director
17750 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
17760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17770 20 20 73 75 62 44 69 72 65 63 74 6f 72 79 29 29    subDirectory))
17780 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
17790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
177a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
177b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
177c0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
177d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
177e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
177f0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
17800 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
17810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
17820 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
17830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17840 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 20 3d   baseDirectory =
17850 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20   directory;..   
17860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17870 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68     processorArch
17880 69 74 65 63 74 75 72 65 20 3d 20 73 75 62 44 69  itecture = subDi
17890 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
178a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
178b0 61 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f  allowBaseDirecto
178c0 72 79 4f 6e 6c 79 20 3d 20 28 73 75 62 44 69 72  ryOnly = (subDir
178d0 65 63 74 6f 72 79 2e 4c 65 6e 67 74 68 20 3d 3d  ectory.Length ==
178e0 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   0);....        
178f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17900 74 75 72 6e 20 74 72 75 65 3b 20 2f 2a 20 46 4f  turn true; /* FO
17910 55 4e 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  UND */..        
17920 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
17930 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
17940 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17950 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
17960 6c 73 65 3b 20 2f 2a 20 4e 4f 54 20 46 4f 55 4e  lse; /* NOT FOUN
17970 44 20 2a 2f 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  D */..      }...
17980 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
179e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
179f0 20 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74   Queries and ret
17a00 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 64 69  urns the base di
17a10 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20 63  rectory of the c
17a20 75 72 72 65 6e 74 20 61 70 70 6c 69 63 61 74 69  urrent applicati
17a30 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  on..      /// do
17a40 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  main...      ///
17a50 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17a60 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
17a70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
17a80 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20 66  base directory f
17a90 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 61  or the current a
17aa0 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
17ab0 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  n -OR- null if i
17ac0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e  t..      /// can
17ad0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
17ae0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
17af0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17b00 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
17b10 74 72 69 6e 67 20 47 65 74 42 61 73 65 44 69 72  tring GetBaseDir
17b20 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20  ectory()..      
17b30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  {..          //.
17b40 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  .          // NO
17b50 54 45 3a 20 49 66 20 74 68 65 20 22 50 72 65 4c  TE: If the "PreL
17b60 6f 61 64 53 51 4c 69 74 65 5f 42 61 73 65 44 69  oadSQLite_BaseDi
17b70 72 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e  rectory" environ
17b80 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20  ment variable.. 
17b90 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17ba0 20 20 69 73 20 73 65 74 2c 20 75 73 65 20 69 74    is set, use it
17bb0 20 76 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68   verbatim for th
17bc0 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17bd0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  ...          //.
17be0 0a 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e  .          strin
17bf0 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 47 65  g directory = Ge
17c00 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 22 50  tSettingValue("P
17c10 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 42 61 73  reLoadSQLite_Bas
17c20 65 44 69 72 65 63 74 6f 72 79 22 2c 0d 0a 20 20  eDirectory",..  
17c30 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c              null
17c40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17c50 69 66 20 28 64 69 72 65 63 74 6f 72 79 20 21 3d  if (directory !=
17c60 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
17c70 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 72        return dir
17c80 65 63 74 6f 72 79 3b 0d 0a 0d 0a 23 69 66 20 21  ectory;....#if !
17c90 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
17ca0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
17cb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
17cc0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
17cd0 68 65 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74  he "PreLoadSQLit
17ce0 65 5f 55 73 65 41 73 73 65 6d 62 6c 79 44 69 72  e_UseAssemblyDir
17cf0 65 63 74 6f 72 79 22 20 65 6e 76 69 72 6f 6e 6d  ectory" environm
17d00 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ent..          /
17d10 2f 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65  /       variable
17d20 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74   is set (to anyt
17d30 68 69 6e 67 29 2c 20 74 68 65 6e 20 61 74 74 65  hing), then atte
17d40 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 0d 0a  mpt to use the..
17d50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
17d60 20 20 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e     directory con
17d70 74 61 69 6e 69 6e 67 20 74 68 65 20 63 75 72 72  taining the curr
17d80 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
17d90 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
17da0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
17db0 65 2e 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  e. System.Data.S
17dc0 51 4c 69 74 65 29 20 69 6e 74 73 65 61 64 20 6f  QLite) intsead o
17dd0 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  f the applicatio
17de0 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  n..          // 
17df0 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 62 61 73        domain bas
17e00 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  e directory...  
17e10 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
17e20 20 20 20 20 20 20 69 66 20 28 47 65 74 53 65 74        if (GetSet
17e30 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20  tingValue(..    
17e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
17e50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f 55 73 65  reLoadSQLite_Use
17e60 41 73 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72  AssemblyDirector
17e70 79 22 2c 20 6e 75 6c 6c 29 20 21 3d 20 6e 75 6c  y", null) != nul
17e80 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  l)..          {.
17e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64  .              d
17ea0 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 41 73  irectory = GetAs
17eb0 73 65 6d 62 6c 79 44 69 72 65 63 74 6f 72 79 28  semblyDirectory(
17ec0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17ed0 20 20 20 20 69 66 20 28 64 69 72 65 63 74 6f 72      if (director
17ee0 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y != null)..    
17ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17f00 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 0d  turn directory;.
17f10 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
17f20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
17f30 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
17f40 20 4f 74 68 65 72 77 69 73 65 2c 20 66 61 6c 6c   Otherwise, fall
17f50 62 61 63 6b 20 6f 6e 20 75 73 69 6e 67 20 74 68  back on using th
17f60 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
17f70 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
17f80 20 20 20 2f 2f 20 20 20 20 20 20 20 63 75 72 72     //       curr
17f90 65 6e 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ent application 
17fa0 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 20 20  domain...       
17fb0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
17fc0 20 72 65 74 75 72 6e 20 41 70 70 44 6f 6d 61 69   return AppDomai
17fd0 6e 2e 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e  n.CurrentDomain.
17fe0 42 61 73 65 44 69 72 65 63 74 6f 72 79 3b 0d 0a  BaseDirectory;..
17ff0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
18000 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f   //..          /
18010 2f 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73  / NOTE: Otherwis
18020 65 2c 20 66 61 6c 6c 62 61 63 6b 20 6f 6e 20 75  e, fallback on u
18030 73 69 6e 67 20 74 68 65 20 64 69 72 65 63 74 6f  sing the directo
18040 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ry containing.. 
18050 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
18060 20 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20    the currently 
18070 65 78 65 63 75 74 69 6e 67 20 61 73 73 65 6d 62  executing assemb
18080 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ly...          /
18090 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  /..          ret
180a0 75 72 6e 20 47 65 74 41 73 73 65 6d 62 6c 79 44  urn GetAssemblyD
180b0 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a 23 65 6e  irectory();..#en
180c0 64 69 66 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  dif..      }....
180d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18120 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
18130 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
18140 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
18150 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  e dynamic link l
18160 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
18170 20 72 65 71 75 69 72 65 73 20 61 20 73 75 66 66   requires a suff
18180 69 78 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ix..      /// an
18190 64 20 61 64 64 73 20 69 74 20 69 66 20 6e 65 63  d adds it if nec
181a0 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
181b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
181c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
181d0 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e  name="fileName">
181e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
181f0 6f 72 69 67 69 6e 61 6c 20 64 79 6e 61 6d 69 63  original dynamic
18200 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69   link library fi
18210 6c 65 20 6e 61 6d 65 20 74 6f 20 69 6e 73 70 65  le name to inspe
18220 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
18230 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
18240 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
18250 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 79 6e 61      /// The dyna
18260 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79  mic link library
18270 20 66 69 6c 65 20 6e 61 6d 65 2c 20 70 6f 73 73   file name, poss
18280 69 62 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f  ibly modified to
18290 20 69 6e 63 6c 75 64 65 20 61 6e 0d 0a 20 20 20   include an..   
182a0 20 20 20 2f 2f 2f 20 65 78 74 65 6e 73 69 6f 6e     /// extension
182b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  ...      /// </r
182c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70  eturns>..      p
182d0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
182e0 72 69 6e 67 20 46 69 78 55 70 44 6c 6c 46 69 6c  ring FixUpDllFil
182f0 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
18300 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
18310 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
18320 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
18330 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
18340 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
18350 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
18360 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
18370 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18380 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 49  (HelperMethods.I
18390 73 57 69 6e 64 6f 77 73 28 29 29 0d 0a 20 20 20  sWindows())..   
183a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
183b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183c0 69 66 20 28 21 66 69 6c 65 4e 61 6d 65 2e 45 6e  if (!fileName.En
183d0 64 73 57 69 74 68 28 44 6c 6c 46 69 6c 65 45 78  dsWith(DllFileEx
183e0 74 65 6e 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  tension,..      
183f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18400 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
18410 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
18420 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
18430 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18450 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
18460 4e 61 6d 65 20 2b 20 44 6c 6c 46 69 6c 65 45 78  Name + DllFileEx
18470 74 65 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  tension;..      
18480 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
18490 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
184a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
184b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
184c0 66 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  fileName;..     
184d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f  /////..      ///
18530 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18540 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
18550 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72  d returns the pr
18560 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
18570 74 75 72 65 20 6f 66 20 74 68 65 20 63 75 72 72  ture of the curr
18580 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  ent..      /// p
18590 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 2f  rocess...      /
185a0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
185b0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
185c0 73 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  s>..      /// Th
185d0 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68  e processor arch
185e0 69 74 65 63 74 75 72 65 20 6f 66 20 74 68 65 20  itecture of the 
185f0 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
18600 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
18610 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  .      /// canno
18620 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
18630 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  ..      /// </re
18640 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72  turns>..      pr
18650 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
18660 69 6e 67 20 47 65 74 50 72 6f 63 65 73 73 6f 72  ing GetProcessor
18670 41 72 63 68 69 74 65 63 74 75 72 65 28 29 0d 0a  Architecture()..
18680 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18690 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
186a0 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
186b0 20 22 50 72 65 4c 6f 61 64 53 51 4c 69 74 65 5f   "PreLoadSQLite_
186c0 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  ProcessorArchite
186d0 63 74 75 72 65 22 20 65 6e 76 69 72 6f 6e 6d 65  cture" environme
186e0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  nt..          //
186f0 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20         variable 
18700 69 73 20 73 65 74 2c 20 75 73 65 20 69 74 20 76  is set, use it v
18710 65 72 62 61 74 69 6d 20 66 6f 72 20 74 68 65 20  erbatim for the 
18720 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 6f  current processo
18730 72 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  r..          // 
18740 20 20 20 20 20 20 61 72 63 68 69 74 65 63 74 75        architectu
18750 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  re...          /
18760 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
18770 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
18780 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
18790 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20  ettingValue(..  
187a0 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65              "Pre
187b0 4c 6f 61 64 53 51 4c 69 74 65 5f 50 72 6f 63 65  LoadSQLite_Proce
187c0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
187d0 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  ", null);....   
187e0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
187f0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
18800 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
18810 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18820 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
18830 63 74 75 72 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  cture;....      
18840 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18850 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 57 69 6c    // BUGBUG: Wil
18860 6c 20 74 68 69 73 20 61 6c 77 61 79 73 20 62 65  l this always be
18870 20 72 65 6c 69 61 62 6c 65 3f 0d 0a 20 20 20 20   reliable?..    
18880 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18890 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63      processorArc
188a0 68 69 74 65 63 74 75 72 65 20 3d 20 47 65 74 53  hitecture = GetS
188b0 65 74 74 69 6e 67 56 61 6c 75 65 28 50 52 4f 43  ettingValue(PROC
188c0 45 53 53 4f 52 5f 41 52 43 48 49 54 45 43 54 55  ESSOR_ARCHITECTU
188d0 52 45 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  RE, null);....  
188e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18930 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
18940 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
18950 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  .          //.. 
18960 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b           // HACK
18970 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 20 22  : Check for an "
18980 69 6d 70 6f 73 73 69 62 6c 65 22 20 73 69 74 75  impossible" situ
18990 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 70  ation.  If the p
189a0 6f 69 6e 74 65 72 20 73 69 7a 65 0d 0a 20 20 20  ointer size..   
189b0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
189c0 69 73 20 33 32 2d 62 69 74 73 2c 20 74 68 65 20  is 32-bits, the 
189d0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
189e0 65 63 74 75 72 65 20 63 61 6e 6e 6f 74 20 62 65  ecture cannot be
189f0 20 22 41 4d 44 36 34 22 2e 0d 0a 20 20 20 20 20   "AMD64"...     
18a00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 6e       //       In
18a10 20 74 68 61 74 20 63 61 73 65 2c 20 77 65 20 61   that case, we a
18a20 72 65 20 61 6c 6d 6f 73 74 20 63 65 72 74 61 69  re almost certai
18a30 6e 6c 79 20 68 69 74 74 69 6e 67 20 61 20 62 75  nly hitting a bu
18a40 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g in the..      
18a50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65      //       ope
18a60 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 6e  rating system an
18a70 64 2f 6f 72 20 56 69 73 75 61 6c 20 53 74 75 64  d/or Visual Stud
18a80 69 6f 20 74 68 61 74 20 63 61 75 73 65 73 20 74  io that causes t
18a90 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  he..          //
18aa0 20 20 20 20 20 20 20 50 52 4f 43 45 53 53 4f 52         PROCESSOR
18ab0 5f 41 52 43 48 49 54 45 43 54 55 52 45 20 65 6e  _ARCHITECTURE en
18ac0 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
18ad0 6c 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  le to contain th
18ae0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20  e..          // 
18af0 20 20 20 20 20 20 77 72 6f 6e 67 20 76 61 6c 75        wrong valu
18b00 65 20 69 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d  e in some circum
18b10 73 74 61 6e 63 65 73 2e 20 20 50 6c 65 61 73 65  stances.  Please
18b20 20 72 65 66 65 72 20 74 6f 20 74 69 63 6b 65 74   refer to ticket
18b30 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20  ..          //  
18b40 20 20 20 20 20 5b 39 61 63 39 38 36 32 36 31 31       [9ac9862611
18b50 5d 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e  ] for further in
18b60 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  formation...    
18b70 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18b80 20 20 20 20 69 66 20 28 28 49 6e 74 50 74 72 2e      if ((IntPtr.
18b90 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 69  Size == sizeof(i
18ba0 6e 74 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20  nt)) &&..       
18bb0 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 45 71         String.Eq
18bc0 75 61 6c 73 28 70 72 6f 63 65 73 73 6f 72 41 72  uals(processorAr
18bd0 63 68 69 74 65 63 74 75 72 65 2c 20 22 41 4d 44  chitecture, "AMD
18be0 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  64",..          
18bf0 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
18c00 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
18c10 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20  IgnoreCase))..  
18c20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
18c30 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
18c40 26 20 54 52 41 43 45 5f 44 45 54 45 43 54 49 4f  & TRACE_DETECTIO
18c50 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N..             
18c60 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
18c70 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 65 6e     // NOTE: When
18c80 20 74 72 61 63 69 6e 67 20 69 73 20 65 6e 61 62   tracing is enab
18c90 6c 65 64 2c 20 73 61 76 65 20 74 68 65 20 6f 72  led, save the or
18ca0 69 67 69 6e 61 6c 6c 79 20 64 65 74 65 63 74 65  iginally detecte
18cb0 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
18cc0 20 2f 2f 20 20 20 20 20 20 20 70 72 6f 63 65 73   //       proces
18cd0 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72 65  sor architecture
18ce0 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67   before changing
18cf0 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   it...          
18d00 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18d10 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 61 76        string sav
18d20 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  edProcessorArchi
18d30 74 65 63 74 75 72 65 20 3d 20 70 72 6f 63 65 73  tecture = proces
18d40 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 3b  sorArchitecture;
18d50 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
18d60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
18d70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
18d80 4f 54 45 3a 20 57 65 20 6b 6e 6f 77 20 74 68 61  OTE: We know tha
18d90 74 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  t operating syst
18da0 65 6d 73 20 74 68 61 74 20 72 65 74 75 72 6e 20  ems that return 
18db0 22 41 4d 44 36 34 22 20 61 73 0d 0a 20 20 20 20  "AMD64" as..    
18dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18dd0 20 20 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72     the processor
18de0 20 61 72 63 68 69 74 65 63 74 75 72 65 20 61 72   architecture ar
18df0 65 20 61 63 74 75 61 6c 6c 79 20 61 20 73 75 70  e actually a sup
18e00 65 72 73 65 74 20 6f 66 0d 0a 20 20 20 20 20 20  erset of..      
18e10 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
18e20 20 74 68 65 20 22 78 38 36 22 20 70 72 6f 63 65   the "x86" proce
18e30 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
18e40 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72 65  e; therefore, re
18e50 74 75 72 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  turn..          
18e60 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 78 38      //       "x8
18e70 36 22 20 77 68 65 6e 20 74 68 65 20 70 6f 69 6e  6" when the poin
18e80 74 65 72 20 73 69 7a 65 20 69 73 20 33 32 2d 62  ter size is 32-b
18e90 69 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  its...          
18ea0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
18eb0 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72 41        processorA
18ec0 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 22 78  rchitecture = "x
18ed0 38 36 22 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  86";....#if !NET
18ee0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
18ef0 52 41 43 45 5f 44 45 54 45 43 54 49 4f 4e 0d 0a  RACE_DETECTION..
18f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
18f10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
18f20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18f30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18f40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
18f50 4f 54 45 3a 20 53 68 6f 77 20 74 68 61 74 20 77  OTE: Show that w
18f60 65 20 68 69 74 20 61 20 66 61 69 72 6c 79 20 75  e hit a fairly u
18f70 6e 75 73 75 61 6c 20 73 69 74 75 61 74 69 6f 6e  nusual situation
18f80 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20   (i.e...        
18f90 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18fa0 20 20 20 74 68 65 20 22 77 72 6f 6e 67 22 20 70     the "wrong" p
18fb0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
18fc0 63 74 75 72 65 20 77 61 73 20 64 65 74 65 63 74  cture was detect
18fd0 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ed)...          
18fe0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
19000 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
19010 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
19020 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
19030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19040 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
19050 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
19060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19070 20 20 20 20 22 4e 61 74 69 76 65 20 6c 69 62 72      "Native libr
19080 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20 64  ary pre-loader d
19090 65 74 65 63 74 65 64 20 7b 30 7d 2d 62 69 74 20  etected {0}-bit 
190a0 70 6f 69 6e 74 65 72 20 22 20 2b 0d 0a 20 20 20  pointer " +..   
190b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
190c0 20 20 20 22 73 69 7a 65 20 77 69 74 68 20 70 72     "size with pr
190d0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
190e0 74 75 72 65 20 5c 22 7b 31 7d 5c 22 2c 20 75 73  ture \"{1}\", us
190f0 69 6e 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ing " +..       
19100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
19110 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19120 65 63 74 75 72 65 20 5c 22 7b 32 7d 5c 22 20 69  ecture \"{2}\" i
19130 6e 73 74 65 61 64 2e 2e 2e 22 2c 0d 0a 20 20 20  nstead...",..   
19140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19150 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 20 2a     IntPtr.Size *
19160 20 38 20 2f 2a 20 62 69 74 73 20 2a 2f 2c 20 73   8 /* bits */, s
19170 61 76 65 64 50 72 6f 63 65 73 73 6f 72 41 72 63  avedProcessorArc
19180 68 69 74 65 63 74 75 72 65 2c 0d 0a 20 20 20 20  hitecture,..    
19190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
191a0 20 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69    processorArchi
191b0 74 65 63 74 75 72 65 29 29 3b 20 2f 2a 20 74 68  tecture)); /* th
191c0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
191d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
191e0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
191f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19210 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
19220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
19230 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
19240 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
19250 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
19260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
192b0 20 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69   (processorArchi
192c0 74 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29  tecture == null)
192d0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
192e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
192f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
19300 2f 20 4e 4f 54 45 3a 20 44 65 66 61 75 6c 74 20  / NOTE: Default 
19310 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72  to the processor
19320 20 61 72 63 68 69 74 65 63 74 75 72 65 20 72 65   architecture re
19330 70 6f 72 74 65 64 20 62 79 20 74 68 65 0d 0a 20  ported by the.. 
19340 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19350 20 20 20 20 20 20 61 70 70 72 6f 70 72 69 61 74        appropriat
19360 65 20 6e 61 74 69 76 65 20 6f 70 65 72 61 74 69  e native operati
19370 6e 67 20 73 79 73 74 65 6d 20 41 50 49 2c 20 69  ng system API, i
19380 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
19390 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
193a0 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f          processo
193b0 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20  rArchitecture = 
193c0 4e 61 74 69 76 65 4c 69 62 72 61 72 79 48 65 6c  NativeLibraryHel
193d0 70 65 72 2e 47 65 74 4d 61 63 68 69 6e 65 28 29  per.GetMachine()
193e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
193f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
19400 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 70       // NOTE: Up
19410 6f 6e 20 66 61 69 6c 75 72 65 2c 20 72 65 74 75  on failure, retu
19420 72 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e  rn empty string.
19430 20 20 54 68 69 73 20 77 69 6c 6c 20 70 72 65 76    This will prev
19440 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
19450 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19460 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 20 66  calling method f
19470 72 6f 6d 20 63 6f 6e 73 69 64 65 72 69 6e 67 20  rom considering 
19480 74 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c  this method call
19490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
194a0 2f 2f 20 20 20 20 20 20 20 61 20 22 66 61 69 6c  //       a "fail
194b0 75 72 65 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  ure"...         
194c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
194d0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
194e0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
194f0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
19500 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
19510 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75  cessorArchitectu
19520 72 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  re = String.Empt
19530 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  y;..          }.
19540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
19550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
195a0 72 65 74 75 72 6e 20 70 72 6f 63 65 73 73 6f 72  return processor
195b0 41 72 63 68 69 74 65 63 74 75 72 65 3b 0d 0a 20  Architecture;.. 
195c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
195d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
19620 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19630 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20        /// Given 
19640 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72  the processor ar
19650 63 68 69 74 65 63 74 75 72 65 2c 20 72 65 74 75  chitecture, retu
19660 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
19670 74 68 65 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20  the platform... 
19680 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
19690 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ry>..      /// <
196a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63  param name="proc
196b0 65 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72  essorArchitectur
196c0 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  e">..      /// T
196d0 68 65 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63  he processor arc
196e0 68 69 74 65 63 74 75 72 65 20 74 6f 20 62 65 20  hitecture to be 
196f0 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 61 20  translated to a 
19700 70 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a  platform name...
19710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19720 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 72  m>..      /// <r
19730 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 2f  eturns>..      /
19740 2f 2f 20 54 68 65 20 70 6c 61 74 66 6f 72 6d 20  // The platform 
19750 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 73 70 65  name for the spe
19760 63 69 66 69 65 64 20 70 72 6f 63 65 73 73 6f 72  cified processor
19770 20 61 72 63 68 69 74 65 63 74 75 72 65 20 2d 4f   architecture -O
19780 52 2d 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 2f  R- null..      /
19790 2f 2f 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  // if it cannot 
197a0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
197b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
197c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  rns>..      priv
197d0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
197e0 67 20 47 65 74 50 6c 61 74 66 6f 72 6d 4e 61 6d  g GetPlatformNam
197f0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  e(..          st
19800 72 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72  ring processorAr
19810 63 68 69 74 65 63 74 75 72 65 20 2f 2a 20 69 6e  chitecture /* in
19820 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 29   */..          )
19830 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
19840 20 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73       if (process
19850 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 20 3d  orArchitecture =
19860 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
19870 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 6f 72         processor
19880 41 72 63 68 69 74 65 63 74 75 72 65 20 3d 20 47  Architecture = G
19890 65 74 50 72 6f 63 65 73 73 6f 72 41 72 63 68 69  etProcessorArchi
198a0 74 65 63 74 75 72 65 28 29 3b 0d 0a 0d 0a 20 20  tecture();....  
198b0 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
198c0 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
198d0 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
198e0 65 63 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20  ecture))..      
198f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
19900 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
19910 20 20 6c 6f 63 6b 20 28 73 74 61 74 69 63 53 79    lock (staticSy
19920 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
19930 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19940 20 20 20 20 69 66 20 28 70 72 6f 63 65 73 73 6f      if (processo
19950 72 41 72 63 68 69 74 65 63 74 75 72 65 50 6c 61  rArchitecturePla
19960 74 66 6f 72 6d 73 20 3d 3d 20 6e 75 6c 6c 29 0d  tforms == null).
19970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19980 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
19990 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
199a0 20 73 74 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d   string platform
199b0 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
199c0 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 63 65         if (proce
199d0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
199e0 50 6c 61 74 66 6f 72 6d 73 2e 54 72 79 47 65 74  Platforms.TryGet
199f0 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20  Value(..        
19a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
19a10 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63 74  ocessorArchitect
19a20 75 72 65 2c 20 6f 75 74 20 70 6c 61 74 66 6f 72  ure, out platfor
19a30 6d 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  mName))..       
19a40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19a50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
19a60 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 3b  rn platformName;
19a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a80 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
19a90 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
19aa0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
19ab0 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b00 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ////..      /// 
19b10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
19b20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
19b30 20 6c 6f 61 64 20 74 68 65 20 6e 61 74 69 76 65   load the native
19b40 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
19b50 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 70 65  based on the spe
19b60 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 2f 2f  cified..      //
19b70 2f 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20  / directory and 
19b80 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
19b90 65 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 2f  ecture...      /
19ba0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19bb0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
19bc0 6e 61 6d 65 3d 22 62 61 73 65 44 69 72 65 63 74  name="baseDirect
19bd0 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ory">..      ///
19be0 20 54 68 65 20 62 61 73 65 20 64 69 72 65 63 74   The base direct
19bf0 6f 72 79 20 74 6f 20 75 73 65 2c 20 6e 75 6c 6c  ory to use, null
19c00 20 66 6f 72 20 64 65 66 61 75 6c 74 20 28 74 68   for default (th
19c10 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79  e base directory
19c20 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   of..      /// t
19c30 68 65 20 63 75 72 72 65 6e 74 20 61 70 70 6c 69  he current appli
19c40 63 61 74 69 6f 6e 20 64 6f 6d 61 69 6e 29 2e 20  cation domain). 
19c50 20 54 68 69 73 20 64 69 72 65 63 74 6f 72 79 20   This directory 
19c60 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 20 74  should contain t
19c70 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 72  he..      /// pr
19c80 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
19c90 74 75 72 65 20 73 70 65 63 69 66 69 63 20 73 75  ture specific su
19ca0 62 2d 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a  b-directories...
19cb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19cc0 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
19cd0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 65  aram name="proce
19ce0 73 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65  ssorArchitecture
19cf0 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
19d00 65 20 72 65 71 75 65 73 74 65 64 20 70 72 6f 63  e requested proc
19d10 65 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75  essor architectu
19d20 72 65 2c 20 6e 75 6c 6c 20 66 6f 72 20 64 65 66  re, null for def
19d30 61 75 6c 74 20 28 74 68 65 0d 0a 20 20 20 20 20  ault (the..     
19d40 20 2f 2f 2f 20 70 72 6f 63 65 73 73 6f 72 20 61   /// processor a
19d50 72 63 68 69 74 65 63 74 75 72 65 20 6f 66 20 74  rchitecture of t
19d60 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65  he current proce
19d70 73 73 29 2e 20 20 54 68 69 73 20 63 61 6c 6c 65  ss).  This calle
19d80 72 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  r should..      
19d90 2f 2f 2f 20 61 6c 6d 6f 73 74 20 61 6c 77 61 79  /// almost alway
19da0 73 20 73 70 65 63 69 66 79 20 6e 75 6c 6c 20 66  s specify null f
19db0 6f 72 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  or this paramete
19dc0 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
19dd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
19de0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
19df0 6c 6c 6f 77 42 61 73 65 44 69 72 65 63 74 6f 72  llowBaseDirector
19e00 79 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20 20 20 2f  yOnly">..      /
19e10 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 6e 64 69  // Non-zero indi
19e20 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 6e  cates that the n
19e30 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62  ative SQLite lib
19e40 72 61 72 79 20 63 61 6e 20 62 65 20 6c 6f 61 64  rary can be load
19e50 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 72  ed..      /// fr
19e60 6f 6d 20 74 68 65 20 62 61 73 65 20 64 69 72 65  om the base dire
19e70 63 74 6f 72 79 20 69 74 73 65 6c 66 2e 0d 0a 20  ctory itself... 
19e80 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19e90 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  >..      /// <pa
19ea0 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65  ram name="native
19eb0 4d 6f 64 75 6c 65 46 69 6c 65 4e 61 6d 65 22 3e  ModuleFileName">
19ec0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
19ed0 63 61 6e 64 69 64 61 74 65 20 6e 61 74 69 76 65  candidate native
19ee0 20 6d 6f 64 75 6c 65 20 66 69 6c 65 20 6e 61 6d   module file nam
19ef0 65 20 74 6f 20 6c 6f 61 64 20 77 69 6c 6c 20 62  e to load will b
19f00 65 20 73 74 6f 72 65 64 20 68 65 72 65 2c 0d 0a  e stored here,..
19f10 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 6e 65 63        /// if nec
19f20 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 2f  essary...      /
19f30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19f40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19f50 6d 65 3d 22 6e 61 74 69 76 65 4d 6f 64 75 6c 65  me="nativeModule
19f60 48 61 6e 64 6c 65 22 3e 0d 0a 20 20 20 20 20 20  Handle">..      
19f70 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 6d  /// The native m
19f80 6f 64 75 6c 65 20 68 61 6e 64 6c 65 20 61 73 20  odule handle as 
19f90 72 65 74 75 72 6e 65 64 20 62 79 20 4c 6f 61 64  returned by Load
19fa0 4c 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20  Library will be 
19fb0 73 74 6f 72 65 64 0d 0a 20 20 20 20 20 20 2f 2f  stored..      //
19fc0 2f 20 68 65 72 65 2c 20 69 66 20 6e 65 63 65 73  / here, if neces
19fd0 73 61 72 79 2e 20 20 54 68 69 73 20 76 61 6c 75  sary.  This valu
19fe0 65 20 77 69 6c 6c 20 62 65 20 49 6e 74 50 74 72  e will be IntPtr
19ff0 2e 5a 65 72 6f 20 69 66 20 74 68 65 20 63 61 6c  .Zero if the cal
1a000 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l to..      /// 
1a010 4c 6f 61 64 4c 69 62 72 61 72 79 20 66 61 69 6c  LoadLibrary fail
1a020 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
1a030 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
1a040 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1a050 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1a060 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  if the native mo
1a070 64 75 6c 65 20 77 61 73 20 6c 6f 61 64 65 64 20  dule was loaded 
1a080 73 75 63 63 65 73 73 66 75 6c 6c 79 3b 20 6f 74  successfully; ot
1a090 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 20 20  herwise,..      
1a0a0 2f 2f 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  /// zero...     
1a0b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1a0c0 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73  .      private s
1a0d0 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 65 4c 6f  tatic bool PreLo
1a0e0 61 64 53 51 4c 69 74 65 44 6c 6c 28 0d 0a 20 20  adSQLiteDll(..  
1a0f0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 62          string b
1a100 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20 20 20  aseDirectory,   
1a110 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1a120 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
1a130 69 6e 67 20 70 72 6f 63 65 73 73 6f 72 41 72 63  ing processorArc
1a140 68 69 74 65 63 74 75 72 65 2c 20 20 20 20 2f 2a  hitecture,    /*
1a150 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1a160 20 20 62 6f 6f 6c 20 61 6c 6c 6f 77 42 61 73 65    bool allowBase
1a170 44 69 72 65 63 74 6f 72 79 4f 6e 6c 79 2c 20 20  DirectoryOnly,  
1a180 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1a190 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
1a1a0 67 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69  g nativeModuleFi
1a1b0 6c 65 4e 61 6d 65 2c 20 2f 2a 20 6f 75 74 20 2a  leName, /* out *
1a1c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 66  /..          ref
1a1d0 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 4d 6f   IntPtr nativeMo
1a1e0 64 75 6c 65 48 61 6e 64 6c 65 20 20 20 20 2f 2a  duleHandle    /*
1a1f0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
1a200 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
1a210 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a220 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1a230 49 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  If the specified
1a240 20 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 20   base directory 
1a250 69 73 20 6e 75 6c 6c 2c 20 75 73 65 20 74 68 65  is null, use the
1a260 20 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20   default..      
1a270 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28 69 2e      //       (i.
1a280 65 2e 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75  e. attempt to au
1a290 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 74 65  tomatically dete
1a2a0 63 74 20 69 74 29 2e 0d 0a 20 20 20 20 20 20 20  ct it)...       
1a2b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a2c0 20 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f   if (baseDirecto
1a2d0 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
1a2e0 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 44             baseD
1a2f0 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 42 61  irectory = GetBa
1a300 73 65 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  seDirectory();..
1a310 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ..          //..
1a320 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1a330 45 3a 20 49 66 20 77 65 20 66 61 69 6c 65 64 20  E: If we failed 
1a340 74 6f 20 71 75 65 72 79 20 74 68 65 20 62 61 73  to query the bas
1a350 65 20 64 69 72 65 63 74 6f 72 79 2c 20 73 74 6f  e directory, sto
1a360 70 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  p now...        
1a370 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1a380 69 66 20 28 62 61 73 65 44 69 72 65 63 74 6f 72  if (baseDirector
1a390 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
1a3a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a3b0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1a3c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1a3d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 65 74 65     // NOTE: Dete
1a3e0 72 6d 69 6e 65 20 74 68 65 20 62 61 73 65 20 66  rmine the base f
1a3f0 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
1a400 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
1a410 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1a420 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74     //       If t
1a430 68 69 73 20 69 73 20 6e 6f 74 20 6b 6e 6f 77 6e  his is not known
1a440 20 62 79 20 74 68 69 73 20 63 6c 61 73 73 2c 20   by this class, 
1a450 77 65 20 63 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e  we cannot contin
1a460 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ue...          /
1a470 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
1a480 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  ing fileNameOnly
1a490 20 3d 20 47 65 74 4e 61 74 69 76 65 4c 69 62 72   = GetNativeLibr
1a4a0 61 72 79 46 69 6c 65 4e 61 6d 65 4f 6e 6c 79 28  aryFileNameOnly(
1a4b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1a4c0 69 66 20 28 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79  if (fileNameOnly
1a4d0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1a4e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a4f0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
1a500 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1a510 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
1a520 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
1a530 6c 69 62 72 61 72 79 20 65 78 69 73 74 73 20 69  library exists i
1a540 6e 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63  n the base direc
1a550 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tory..          
1a560 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 2c  //       itself,
1a570 20 70 6f 73 73 69 62 6c 79 20 73 74 6f 70 20 6e   possibly stop n
1a580 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  ow...          /
1a590 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  /..          str
1a5a0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46  ing fileName = F
1a5b0 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
1a5c0 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
1a5d0 28 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 0d  (baseDirectory,.
1a5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
1a5f0 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
1a600 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1a610 46 69 6c 65 2e 45 78 69 73 74 73 28 66 69 6c 65  File.Exists(file
1a620 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
1a630 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a640 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a650 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
1a660 20 74 68 65 20 63 61 6c 6c 65 72 20 69 73 20 61   the caller is a
1a670 6c 6c 6f 77 69 6e 67 20 74 68 65 20 62 61 73 65  llowing the base
1a680 20 64 69 72 65 63 74 6f 72 79 20 69 74 73 65 6c   directory itsel
1a690 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
1a6a0 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 62 65 20   //       to be 
1a6b0 75 73 65 64 2c 20 61 6c 73 6f 20 6d 61 6b 65 20  used, also make 
1a6c0 73 75 72 65 20 61 20 70 72 6f 63 65 73 73 6f 72  sure a processor
1a6d0 20 61 72 63 68 69 74 65 63 74 75 72 65 0d 0a 20   architecture.. 
1a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1a6f0 20 20 20 20 20 20 77 61 73 20 6e 6f 74 20 73 70        was not sp
1a700 65 63 69 66 69 65 64 3b 20 69 66 20 65 69 74 68  ecified; if eith
1a710 65 72 20 63 6f 6e 64 69 74 69 6f 6e 20 69 73 20  er condition is 
1a720 66 61 6c 73 65 20 6a 75 73 74 0d 0a 20 20 20 20  false just..    
1a730 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1a740 20 20 20 73 74 6f 70 20 6e 6f 77 20 61 6e 64 20     stop now and 
1a750 72 65 74 75 72 6e 20 66 61 69 6c 75 72 65 2e 0d  return failure..
1a760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  .              /
1a770 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a780 20 69 66 20 28 61 6c 6c 6f 77 42 61 73 65 44 69   if (allowBaseDi
1a790 72 65 63 74 6f 72 79 4f 6e 6c 79 20 26 26 0d 0a  rectoryOnly &&..
1a7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a7b0 20 20 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f    String.IsNullO
1a7c0 72 45 6d 70 74 79 28 70 72 6f 63 65 73 73 6f 72  rEmpty(processor
1a7d0 41 72 63 68 69 74 65 63 74 75 72 65 29 29 0d 0a  Architecture))..
1a7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1a7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a800 20 20 20 67 6f 74 6f 20 62 61 73 65 44 69 72 4f     goto baseDirO
1a810 6e 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nly;..          
1a820 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a830 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
1a840 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a860 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
1a870 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a880 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1a890 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1a8a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
1a8b0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70   the specified p
1a8c0 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65  rocessor archite
1a8d0 63 74 75 72 65 20 69 73 20 6e 75 6c 6c 2c 20 75  cture is null, u
1a8e0 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  se the..        
1a8f0 20 20 2f 2f 20 20 20 20 20 20 20 64 65 66 61 75    //       defau
1a900 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  lt...          /
1a910 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  /..          if 
1a920 28 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74  (processorArchit
1a930 65 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ecture == null).
1a940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70  .              p
1a950 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65 63  rocessorArchitec
1a960 74 75 72 65 20 3d 20 47 65 74 50 72 6f 63 65 73  ture = GetProces
1a970 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 28  sorArchitecture(
1a980 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1a990 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  //..          //
1a9a0 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 66 61 69   NOTE: If we fai
1a9b0 6c 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  led to query the
1a9c0 20 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69   processor archi
1a9d0 74 65 63 74 75 72 65 2c 20 73 74 6f 70 20 6e 6f  tecture, stop no
1a9e0 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  w...          //
1a9f0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
1aa00 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74 65  processorArchite
1aa10 63 74 75 72 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  cture == null)..
1aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1aa30 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1aa40 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1aa50 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1aa60 42 75 69 6c 64 20 74 68 65 20 66 75 6c 6c 20 70  Build the full p
1aa70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
1aa80 65 20 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65  e for the native
1aa90 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
1aaa0 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62 72     //       libr
1aab0 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70 72  ary using the pr
1aac0 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74 65 63  ocessor architec
1aad0 74 75 72 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  ture name...    
1aae0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1aaf0 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
1ab00 69 78 55 70 44 6c 6c 46 69 6c 65 4e 61 6d 65 28  ixUpDllFileName(
1ab10 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74 68  MaybeCombinePath
1ab20 28 4d 61 79 62 65 43 6f 6d 62 69 6e 65 50 61 74  (MaybeCombinePat
1ab30 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
1ab40 20 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c    baseDirectory,
1ab50 20 70 72 6f 63 65 73 73 6f 72 41 72 63 68 69 74   processorArchit
1ab60 65 63 74 75 72 65 29 2c 20 66 69 6c 65 4e 61 6d  ecture), fileNam
1ab70 65 4f 6e 6c 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  eOnly));....    
1ab80 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1ab90 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
1aba0 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 20 62 61  the file name ba
1abb0 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65  sed on the proce
1abc0 73 73 6f 72 20 61 72 63 68 69 74 65 63 74 75 72  ssor architectur
1abd0 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
1abe0 20 20 2f 2f 20 69 73 20 6e 6f 74 20 66 6f 75 6e    // is not foun
1abf0 64 2c 20 74 72 79 20 75 73 69 6e 67 20 74 68 65  d, try using the
1ac00 20 61 73 73 6f 63 69 61 74 65 64 20 70 6c 61 74   associated plat
1ac10 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  form name...    
1ac20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1ac30 20 20 20 20 69 66 20 28 21 46 69 6c 65 2e 45 78      if (!File.Ex
1ac40 69 73 74 73 28 66 69 6c 65 4e 61 6d 65 29 29 0d  ists(fileName)).
1ac50 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1ac60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ac80 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
1ac90 6f 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20  o translate the 
1aca0 70 72 6f 63 65 73 73 6f 72 20 61 72 63 68 69 74  processor archit
1acb0 65 63 74 75 72 65 20 74 6f 20 61 0d 0a 20 20 20  ecture to a..   
1acc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1acd0 20 20 20 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d      platform nam
1ace0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1acf0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1ad00 20 20 20 20 73 74 72 69 6e 67 20 70 6c 61 74 66      string platf
1ad10 6f 72 6d 4e 61 6d 65 20 3d 20 47 65 74 50 6c 61  ormName = GetPla
1ad20 74 66 6f 72 6d 4e 61 6d 65 28 70 72 6f 63 65 73  tformName(proces
1ad30 73 6f 72 41 72 63 68 69 74 65 63 74 75 72 65 29  sorArchitecture)
1ad40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ad50 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1ad60 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
1ad70 20 77 65 20 66 61 69 6c 65 64 20 74 6f 20 74 72   we failed to tr
1ad80 61 6e 73 6c 61 74 65 20 74 68 65 20 70 6c 61 74  anslate the plat
1ad90 66 6f 72 6d 20 6e 61 6d 65 2c 20 73 74 6f 70 20  form name, stop 
1ada0 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  now...          
1adb0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1adc0 20 20 20 20 20 20 69 66 20 28 70 6c 61 74 66 6f        if (platfo
1add0 72 6d 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  rmName == null).
1ade0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1adf0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1ae00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ae10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1ae20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 42 75 69      // NOTE: Bui
1ae30 6c 64 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  ld the full path
1ae40 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 20 66   and file name f
1ae50 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 53 51  or the native SQ
1ae60 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Lite..          
1ae70 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 62      //       lib
1ae80 72 61 72 79 20 75 73 69 6e 67 20 74 68 65 20 70  rary using the p
1ae90 6c 61 74 66 6f 72 6d 20 6e 61 6d 65 2e 0d 0a 20  latform name... 
1aea0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1aeb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66  .              f
1aec0 69 6c 65 4e 61 6d 65 20 3d 20 46 69 78 55 70 44  ileName = FixUpD
1aed0 6c 6c 46 69 6c 65 4e 61 6d 65 28 4d 61 79 62 65  llFileName(Maybe
1aee0 43 6f 6d 62 69 6e 65 50 61 74 68 28 4d 61 79 62  CombinePath(Mayb
1aef0 65 43 6f 6d 62 69 6e 65 50 61 74 68 28 0d 0a 20  eCombinePath(.. 
1af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af10 20 62 61 73 65 44 69 72 65 63 74 6f 72 79 2c 20   baseDirectory, 
1af20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 29 2c 20 66  platformName), f
1af30 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 29 3b 0d 0a  ileNameOnly));..
1af40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1af50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1af60 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
1af70 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 20  e file does not 
1af80 65 78 69 73 74 2c 20 73 6b 69 70 20 74 72 79 69  exist, skip tryi
1af90 6e 67 20 74 6f 20 6c 6f 61 64 20 69 74 2e 0d 0a  ng to load it...
1afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1afb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1afc0 69 66 20 28 21 46 69 6c 65 2e 45 78 69 73 74 73  if (!File.Exists
1afd0 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
1afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1aff0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
1b000 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b010 20 20 20 62 61 73 65 44 69 72 4f 6e 6c 79 3a 0d     baseDirOnly:.
1b020 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 74 72 79  ...          try
1b030 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23  ..          {..#
1b040 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
1b050 32 30 20 26 26 20 54 52 41 43 45 5f 50 52 45 4c  20 && TRACE_PREL
1b060 4f 41 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  OAD..           
1b070 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1b080 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1b0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b0b0 20 2f 2f 20 4e 4f 54 45 3a 20 53 68 6f 77 20 65   // NOTE: Show e
1b0c0 78 61 63 74 6c 79 20 77 68 65 72 65 20 77 65 20  xactly where we 
1b0d0 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f  are trying to lo
1b0e0 61 64 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  ad the native.. 
1b0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b100 20 2f 2f 20 20 20 20 20 20 20 53 51 4c 69 74 65   //       SQLite
1b110 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 2e 0d 0a   library from...
1b120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b130 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b140 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
1b150 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
1b160 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
1b170 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1b180 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1b190 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
1b1a0 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
1b1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
1b1c0 61 74 69 76 65 20 6c 69 62 72 61 72 79 20 70 72  ative library pr
1b1d0 65 2d 6c 6f 61 64 65 72 20 69 73 20 74 72 79 69  e-loader is tryi
1b1e0 6e 67 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ng to load nativ
1b1f0 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
1b200 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
1b210 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
1b220 30 7d 5c 22 2e 2e 2e 22 2c 20 66 69 6c 65 4e 61  0}\"...", fileNa
1b230 6d 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  me)); /* throw *
1b240 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b250 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1b260 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
1b270 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1b280 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
1b290 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
1b2a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
1b2b0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
1b2c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b2d0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b2e0 41 74 74 65 6d 70 74 20 74 6f 20 6c 6f 61 64 20  Attempt to load 
1b2f0 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61  the native libra
1b300 72 79 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65  ry.  This will e
1b310 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ither..         
1b320 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
1b330 74 75 72 6e 20 61 20 76 61 6c 69 64 20 6e 61 74  turn a valid nat
1b340 69 76 65 20 6d 6f 64 75 6c 65 20 68 61 6e 64 6c  ive module handl
1b350 65 2c 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72  e, return IntPtr
1b360 2e 5a 65 72 6f 2c 0d 0a 20 20 20 20 20 20 20 20  .Zero,..        
1b370 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
1b380 72 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65 70  r throw an excep
1b390 74 69 6f 6e 2e 20 20 54 68 69 73 20 6d 75 73 74  tion.  This must
1b3a0 20 75 73 65 20 74 68 65 20 61 70 70 72 6f 70 72   use the appropr
1b3b0 69 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  iate..          
1b3c0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 50 2f 49      //       P/I
1b3d0 6e 76 6f 6b 65 20 6d 65 74 68 6f 64 20 66 6f 72  nvoke method for
1b3e0 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65   the current ope
1b3f0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a  rating system...
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 6e 61 74 69 76 65 4d 6f 64 75 6c 65 46 69 6c 65  nativeModuleFile
1b430 4e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b  Name = fileName;
1b440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b450 6e 61 74 69 76 65 4d 6f 64 75 6c 65 48 61 6e 64  nativeModuleHand
1b460 6c 65 20 3d 20 4e 61 74 69 76 65 4c 69 62 72 61  le = NativeLibra
1b470 72 79 48 65 6c 70 65 72 2e 4c 6f 61 64 4c 69 62  ryHelper.LoadLib
1b480 72 61 72 79 28 66 69 6c 65 4e 61 6d 65 29 3b 0d  rary(fileName);.
1b490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b4a0 20 72 65 74 75 72 6e 20 28 6e 61 74 69 76 65 4d   return (nativeM
1b4b0 6f 64 75 6c 65 48 61 6e 64 6c 65 20 21 3d 20 49  oduleHandle != I
1b4c0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
1b4d0 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21          }..#if !
1b4e0 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
1b4f0 26 20 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d  & TRACE_PRELOAD.
1b500 0a 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68  .          catch
1b510 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
1b520 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
1b530 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
1b540 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  n)..#endif..    
1b550 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45        {..#if !NE
1b560 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
1b570 54 52 41 43 45 5f 50 52 45 4c 4f 41 44 0d 0a 20  TRACE_PRELOAD.. 
1b580 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1b590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b5a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b5b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b5c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1b5d0 54 45 3a 20 46 69 72 73 74 2c 20 67 72 61 62 20  TE: First, grab 
1b5e0 74 68 65 20 6c 61 73 74 20 57 69 6e 33 32 20 65  the last Win32 e
1b5f0 72 72 6f 72 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  rror number...  
1b600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b610 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b620 20 20 20 20 20 20 69 6e 74 20 6c 61 73 74 45 72        int lastEr
1b630 72 6f 72 20 3d 20 4d 61 72 73 68 61 6c 2e 47 65  ror = Marshal.Ge
1b640 74 4c 61 73 74 57 69 6e 33 32 45 72 72 6f 72 28  tLastWin32Error(
1b650 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
1b660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b670 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b680 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1b690 45 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65  E: Show where we
1b6a0 20 66 61 69 6c 65 64 20 74 6f 20 6c 6f 61 64 20   failed to load 
1b6b0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1b6c0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1b6d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
1b6e0 62 72 61 72 79 20 66 72 6f 6d 20 61 6c 6f 6e 67  brary from along
1b6f0 20 77 69 74 68 20 74 68 65 20 57 69 6e 33 32 20   with the Win32 
1b700 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 0d 0a  error code and..
1b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b720 20 20 2f 2f 20 20 20 20 20 20 20 65 78 63 65 70    //       excep
1b730 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  tion information
1b740 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b750 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b760 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1b770 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
1b780 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
1b790 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
1b7b0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
1b7c0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
1b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7e0 20 22 4e 61 74 69 76 65 20 6c 69 62 72 61 72 79   "Native library
1b7f0 20 70 72 65 2d 6c 6f 61 64 65 72 20 66 61 69 6c   pre-loader fail
1b800 65 64 20 74 6f 20 6c 6f 61 64 20 6e 61 74 69 76  ed to load nativ
1b810 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
1b820 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 51               "SQ
1b830 4c 69 74 65 20 6c 69 62 72 61 72 79 20 5c 22 7b  Lite library \"{
1b840 30 7d 5c 22 20 28 67 65 74 4c 61 73 74 45 72 72  0}\" (getLastErr
1b850 6f 72 20 3d 20 7b 31 7d 29 3a 20 7b 32 7d 22 2c  or = {1}): {2}",
1b860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b870 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
1b880 2c 20 6c 61 73 74 45 72 72 6f 72 2c 20 65 29 29  , lastError, e))
1b890 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1b8c0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
1b8d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b8e0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
1b8f0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
1b900 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b910 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
1b920 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1b930 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 7d   false;..      }
1b940 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
1b950 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
1b960 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
1b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b9b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
1b9c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1b9d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 0d 0a  MEWORK..    //..
1b9e0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 6e 20      // NOTE: On 
1b9f0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
1ba00 20 46 72 61 6d 65 77 6f 72 6b 2c 20 74 68 65 20   Framework, the 
1ba10 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
1ba20 73 73 65 6d 62 6c 79 20 6d 75 73 74 0d 0a 20 20  ssembly must..  
1ba30 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73    //       be us
1ba40 65 64 20 62 65 63 61 75 73 65 20 69 74 20 70 72  ed because it pr
1ba50 6f 76 69 64 65 73 20 73 65 76 65 72 61 6c 20 77  ovides several w
1ba60 6f 72 6b 61 72 6f 75 6e 64 73 20 74 6f 20 2e 4e  orkarounds to .N
1ba70 45 54 20 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20  ET Compact..    
1ba80 2f 2f 20 20 20 20 20 20 20 46 72 61 6d 65 77 6f  //       Framewo
1ba90 72 6b 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  rk limitations i
1baa0 6d 70 6f 72 74 61 6e 74 20 66 6f 72 20 70 72 6f  mportant for pro
1bab0 70 65 72 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  per operation of
1bac0 20 74 68 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f   the core..    /
1bad0 2f 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44  /       System.D
1bae0 61 74 61 2e 53 51 4c 69 74 65 20 66 75 6e 63 74  ata.SQLite funct
1baf0 69 6f 6e 61 6c 69 74 79 20 28 65 2e 67 2e 20 62  ionality (e.g. b
1bb00 65 69 6e 67 20 61 62 6c 65 20 74 6f 20 62 69 6e  eing able to bin
1bb10 64 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  d..    //       
1bb20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 68  parameters and h
1bb30 61 6e 64 6c 65 20 63 6f 6c 75 6d 6e 20 76 61 6c  andle column val
1bb40 75 65 73 20 6f 66 20 74 79 70 65 73 20 49 6e 74  ues of types Int
1bb50 36 34 20 61 6e 64 20 44 6f 75 62 6c 65 29 2e 0d  64 and Double)..
1bb60 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
1bb70 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
1bb80 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
1bb90 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
1bba0 31 31 30 2e 64 6c 6c 22 3b 0d 0a 23 65 6c 69 66  110.dll";..#elif
1bbb0 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44   SQLITE_STANDARD
1bbc0 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1bbd0 20 4e 4f 54 45 3a 20 4f 74 68 65 72 77 69 73 65   NOTE: Otherwise
1bbe0 2c 20 69 66 20 74 68 65 20 73 74 61 6e 64 61 72  , if the standar
1bbf0 64 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  d SQLite library
1bc00 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 75 73 65   is enabled, use
1bc10 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20   it...    //..  
1bc20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
1bc30 20 73 74 72 69 6e 67 20 53 51 4c 49 54 45 5f 44   string SQLITE_D
1bc40 4c 4c 20 3d 20 22 73 71 6c 69 74 65 33 22 3b 0d  LL = "sqlite3";.
1bc50 0a 23 65 6c 69 66 20 55 53 45 5f 49 4e 54 45 52  .#elif USE_INTER
1bc60 4f 50 5f 44 4c 4c 0d 0a 20 20 20 20 2f 2f 0d 0a  OP_DLL..    //..
1bc70 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4f 74 68      // NOTE: Oth
1bc80 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 20 6e  erwise, if the n
1bc90 61 74 69 76 65 20 53 51 4c 69 74 65 20 69 6e 74  ative SQLite int
1bca0 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73  erop assembly is
1bcb0 20 65 6e 61 62 6c 65 64 2c 0d 0a 20 20 20 20 2f   enabled,..    /
1bcc0 2f 20 20 20 20 20 20 20 75 73 65 20 69 74 2e 0d  /       use it..
1bcd0 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74  .    //..    int
1bce0 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69  ernal const stri
1bcf0 6e 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20  ng SQLITE_DLL = 
1bd00 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e  "SQLite.Interop.
1bd10 64 6c 6c 22 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  dll";..#else..  
1bd20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f 20 4e 4f 54    //..    // NOT
1bd30 45 3a 20 46 69 6e 61 6c 6c 79 2c 20 61 73 73 75  E: Finally, assu
1bd40 6d 65 20 74 68 61 74 20 74 68 65 20 6d 69 78 65  me that the mixe
1bd50 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79 20  d-mode assembly 
1bd60 69 73 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a  is being used...
1bd70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
1bd80 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e  rnal const strin
1bd90 67 20 53 51 4c 49 54 45 5f 44 4c 4c 20 3d 20 22  g SQLITE_DLL = "
1bda0 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
1bdb0 74 65 2e 64 6c 6c 22 3b 0d 0a 23 65 6e 64 69 66  te.dll";..#endif
1bdc0 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 69 73 20  ....    // This 
1bdd0 73 65 63 74 69 6f 6e 20 75 73 65 73 20 69 6e 74  section uses int
1bde0 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61 74 20  erop calls that 
1bdf0 61 6c 73 6f 20 66 65 74 63 68 20 74 65 78 74 20  also fetch text 
1be00 6c 65 6e 67 74 68 20 74 6f 20 6f 70 74 69 6d 69  length to optimi
1be10 7a 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a  ze conversion...
1be20 20 20 20 20 2f 2f 20 57 68 65 6e 20 75 73 69 6e      // When usin
1be30 67 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 64  g the standard d
1be40 6c 6c 2c 20 77 65 20 63 61 6e 20 72 65 70 6c 61  ll, we can repla
1be50 63 65 20 74 68 65 73 65 20 63 61 6c 6c 73 20 77  ce these calls w
1be60 69 74 68 20 6e 6f 72 6d 61 6c 20 73 71 6c 69 74  ith normal sqlit
1be70 65 20 63 61 6c 6c 73 20 61 6e 64 0d 0a 20 20 20  e calls and..   
1be80 20 2f 2f 20 64 6f 20 75 6e 6f 70 74 69 6d 69 7a   // do unoptimiz
1be90 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 69  ed conversions i
1bea0 6e 73 74 65 61 64 20 61 66 74 65 72 77 61 72 64  nstead afterward
1beb0 73 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 69  s..    #region i
1bec0 6e 74 65 72 6f 70 20 61 64 64 65 64 20 74 65 78  nterop added tex
1bed0 74 6c 65 6e 67 74 68 20 63 61 6c 6c 73 0d 0a 0d  tlength calls...
1bee0 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
1bef0 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b 44 6c  NDARD....    [Dl
1bf00 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1bf10 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1bf20 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1bf30 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1bf40 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
1bf50 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  ame_interop(IntP
1bf60 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1bf70 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
1bf80 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1bf90 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1bfa0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1bfb0 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1bfc0 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1bfd0 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
1bfe0 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
1bff0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
1c000 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1c010 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c020 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1c030 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c040 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1c050 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1c060 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 5f  database_name16_
1c070 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73  interop(IntPtr s
1c080 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
1c090 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d  ref int len);...
1c0a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1c0b0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
1c0c0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1c0d0 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
1c0e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 64  sqlite3_column_d
1c0f0 65 63 6c 74 79 70 65 5f 69 6e 74 65 72 6f 70 28  ecltype_interop(
1c100 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1c110 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20   index, ref int 
1c120 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  len);....    [Dl
1c130 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c140 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1c150 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c160 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
1c170 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 31  column_decltype1
1c180 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  6_interop(IntPtr
1c190 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
1c1a0 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d  , ref int len);.
1c1b0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1c1c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1c1d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c1e0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1c1f0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1c200 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49 6e  _name_interop(In
1c210 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1c220 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65  ndex, ref int le
1c230 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c240 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c250 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c260 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
1c270 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f  ntPtr sqlite3_co
1c280 6c 75 6d 6e 5f 6e 61 6d 65 31 36 5f 69 6e 74 65  lumn_name16_inte
1c290 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c  rop(IntPtr stmt,
1c2a0 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20   int index, ref 
1c2b0 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20  int len);....   
1c2c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1c2d0 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
1c2e0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1c2f0 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
1c300 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69  te3_column_origi
1c310 6e 5f 6e 61 6d 65 5f 69 6e 74 65 72 6f 70 28 49  n_name_interop(I
1c320 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1c330 69 6e 64 65 78 2c 20 72 65 66 20 69 6e 74 20 6c  index, ref int l
1c340 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c  en);....    [Dll
1c350 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1c360 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  L)]..    interna
1c370 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1c380 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1c390 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d  olumn_origin_nam
1c3a0 65 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  e16_interop(IntP
1c3b0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c3c0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
1c3d0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1c3e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c3f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c400 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1c410 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1c420 6d 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 5f 69 6e  mn_table_name_in
1c430 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1c440 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1c450 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1c460 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c470 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1c480 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c490 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1c4a0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62  lite3_column_tab
1c4b0 6c 65 5f 6e 61 6d 65 31 36 5f 69 6e 74 65 72 6f  le_name16_intero
1c4c0 70 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  p(IntPtr stmt, i
1c4d0 6e 74 20 69 6e 64 65 78 2c 20 72 65 66 20 69 6e  nt index, ref in
1c4e0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1c4f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c500 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c510 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c520 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1c530 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 5f 69 6e  3_column_text_in
1c540 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
1c550 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
1c560 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20  f int len);.... 
1c570 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1c580 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1c590 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1c5a0 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1c5b0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78  lite3_column_tex
1c5c0 74 31 36 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50  t16_interop(IntP
1c5d0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
1c5e0 65 78 2c 20 72 65 66 20 69 6e 74 20 6c 65 6e 29  ex, ref int len)
1c5f0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1c600 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1c610 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1c620 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1c630 50 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d  Ptr sqlite3_errm
1c640 73 67 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  sg_interop(IntPt
1c650 72 20 64 62 2c 20 72 65 66 20 69 6e 74 20 6c 65  r db, ref int le
1c660 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c670 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c680 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1c6a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1c6b0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 69  qlite3_prepare_i
1c6c0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1c6d0 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c 20 69  , IntPtr pSql, i
1c6e0 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66 20 49  nt nBytes, ref I
1c6f0 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65 66 20  ntPtr stmt, ref 
1c700 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61 69 6e  IntPtr ptrRemain
1c710 2c 20 72 65 66 20 69 6e 74 20 6e 52 65 6d 61 69  , ref int nRemai
1c720 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  n);....    [DllI
1c730 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1c740 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1c750 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1c760 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1c770 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
1c780 75 6d 6e 5f 6d 65 74 61 64 61 74 61 5f 69 6e 74  umn_metadata_int
1c790 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20  erop(IntPtr db, 
1c7a0 62 79 74 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62  byte[] dbName, b
1c7b0 79 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62  yte[] tblName, b
1c7c0 79 74 65 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 72  yte[] colName, r
1c7d0 65 66 20 49 6e 74 50 74 72 20 70 74 72 44 61 74  ef IntPtr ptrDat
1c7e0 61 54 79 70 65 2c 20 72 65 66 20 49 6e 74 50 74  aType, ref IntPt
1c7f0 72 20 70 74 72 43 6f 6c 6c 53 65 71 2c 20 72 65  r ptrCollSeq, re
1c800 66 20 69 6e 74 20 6e 6f 74 4e 75 6c 6c 2c 20 72  f int notNull, r
1c810 65 66 20 69 6e 74 20 70 72 69 6d 61 72 79 4b 65  ef int primaryKe
1c820 79 2c 20 72 65 66 20 69 6e 74 20 61 75 74 6f 49  y, ref int autoI
1c830 6e 63 2c 20 72 65 66 20 69 6e 74 20 64 74 4c 65  nc, ref int dtLe
1c840 6e 2c 20 72 65 66 20 69 6e 74 20 63 73 4c 65 6e  n, ref int csLen
1c850 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1c860 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1c870 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1c880 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1c890 74 50 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c  tPtr sqlite3_val
1c8a0 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f 70 28  ue_text_interop(
1c8b0 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 69 6e  IntPtr p, ref in
1c8c0 74 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b  t len);....    [
1c8d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1c8e0 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1c8f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1c900 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1c910 33 5f 76 61 6c 75 65 5f 74 65 78 74 31 36 5f 69  3_value_text16_i
1c920 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
1c930 20 72 65 66 20 69 6e 74 20 6c 65 6e 29 3b 0d 0a   ref int len);..
1c940 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1c950 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20  (SQLITE_DLL)].. 
1c960 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1c970 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
1c980 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a  lite3_malloc_siz
1c990 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1c9a0 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45   p);....#if INTE
1c9b0 52 4f 50 5f 4c 4f 47 0d 0a 20 20 20 20 5b 44 6c  ROP_LOG..    [Dl
1c9c0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1c9d0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1c9e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1c9f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1ca00 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1ca10 6c 6f 67 5f 69 6e 74 65 72 6f 70 28 29 3b 0d 0a  log_interop();..
1ca20 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66 0d 0a  #endif..#endif..
1ca30 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  // !SQLITE_STAND
1ca40 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72  ARD....    #endr
1ca50 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20  egion....    // 
1ca60 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
1ca70 61 64 64 20 65 78 69 73 74 69 6e 67 20 66 75 6e  add existing fun
1ca80 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 74 6f  ctionality on to
1ca90 70 20 6f 66 20 53 51 4c 69 74 65 20 61 6e 64 20  p of SQLite and 
1caa0 72 65 71 75 69 72 65 20 61 20 6c 69 74 74 6c 65  require a little
1cab0 20 65 66 66 6f 72 74 20 74 6f 0d 0a 20 20 20 20   effort to..    
1cac0 2f 2f 20 67 65 74 20 77 6f 72 6b 69 6e 67 20 77  // get working w
1cad0 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 73 74  hen using the st
1cae0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 6c 69  andard SQLite li
1caf0 62 72 61 72 79 2e 0d 0a 20 20 20 20 23 72 65 67  brary...    #reg
1cb00 69 6f 6e 20 69 6e 74 65 72 6f 70 20 61 64 64 65  ion interop adde
1cb10 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0d  d functionality.
1cb20 0a 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  ...#if !SQLITE_S
1cb30 54 41 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 5b  TANDARD....    [
1cb40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1cb50 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  _DLL)]..    inte
1cb60 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1cb70 72 6e 20 49 6e 74 50 74 72 20 69 6e 74 65 72 6f  rn IntPtr intero
1cb80 70 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b 0d  p_libversion();.
1cb90 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
1cba0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1cbb0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1cbc0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1cbd0 72 20 69 6e 74 65 72 6f 70 5f 73 6f 75 72 63 65  r interop_source
1cbe0 69 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  id();....    [Dl
1cbf0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cc00 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1cc10 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cc20 20 69 6e 74 20 69 6e 74 65 72 6f 70 5f 63 6f 6d   int interop_com
1cc30 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
1cc40 49 6e 74 50 74 72 20 7a 4f 70 74 4e 61 6d 65 29  IntPtr zOptName)
1cc50 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1cc60 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cc70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cc80 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1cc90 50 74 72 20 69 6e 74 65 72 6f 70 5f 63 6f 6d 70  Ptr interop_comp
1cca0 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69 6e  ileoption_get(in
1ccb0 74 20 4e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  t N);....    [Dl
1ccc0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1ccd0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1cce0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1ccf0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1cd00 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69   sqlite3_close_i
1cd10 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62  nterop(IntPtr db
1cd20 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1cd30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1cd40 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1cd50 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
1cd60 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
1cd70 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
1cd80 63 74 69 6f 6e 5f 69 6e 74 65 72 6f 70 28 49 6e  ction_interop(In
1cd90 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
1cda0 73 74 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 41 72  strName, int nAr
1cdb0 67 73 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49  gs, int nType, I
1cdc0 6e 74 50 74 72 20 70 76 55 73 65 72 2c 20 53 51  ntPtr pvUser, SQ
1cdd0 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e  LiteCallback fun
1cde0 63 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  c, SQLiteCallbac
1cdf0 6b 20 66 73 74 65 70 2c 20 53 51 4c 69 74 65 46  k fstep, SQLiteF
1ce00 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 66 69  inalCallback ffi
1ce10 6e 61 6c 2c 20 69 6e 74 20 6e 65 65 64 43 6f 6c  nal, int needCol
1ce20 6c 53 65 71 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  lSeq);....    [D
1ce30 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ce40 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ce50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ce60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1ce70 65 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69  e sqlite3_finali
1ce80 7a 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74  ze_interop(IntPt
1ce90 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  r stmt);....    
1cea0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ceb0 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1cec0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ced0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1cee0 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ode sqlite3_back
1cef0 75 70 5f 66 69 6e 69 73 68 5f 69 6e 74 65 72 6f  up_finish_intero
1cf00 70 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29  p(IntPtr backup)
1cf10 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1cf20 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1cf30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1cf40 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
1cf50 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
1cf60 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f  ite3_blob_close_
1cf70 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 62  interop(IntPtr b
1cf80 6c 6f 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c  lob);....    [Dl
1cf90 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1cfa0 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  LL)]..    intern
1cfb0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1cfc0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1cfd0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 69 6e   sqlite3_open_in
1cfe0 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
1cff0 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
1d000 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
1d010 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
1d020 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
1d030 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
1d040 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
1d050 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d060 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d070 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d080 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d090 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 5f 69 6e  qlite3_open16_in
1d0a0 74 65 72 6f 70 28 62 79 74 65 5b 5d 20 75 74 66  terop(byte[] utf
1d0b0 38 46 69 6c 65 6e 61 6d 65 2c 20 62 79 74 65 5b  8Filename, byte[
1d0c0 5d 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c 69 74  ] vfsName, SQLit
1d0d0 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66  eOpenFlagsEnum f
1d0e0 6c 61 67 73 2c 20 69 6e 74 20 65 78 74 46 75 6e  lags, int extFun
1d0f0 63 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  cs, ref IntPtr d
1d100 62 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  b);....    [DllI
1d110 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1d120 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
1d130 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d140 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d150 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 69 6e 74  qlite3_reset_int
1d160 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
1d170 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  );....    [DllIm
1d180 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1d190 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
1d1a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e  static extern in
1d1b0 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
1d1c0 73 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  s_interop(IntPtr
1d1d0 20 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 2f   db);..#endif../
1d1e0 2f 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  / !SQLITE_STANDA
1d1f0 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65  RD....    #endre
1d200 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54  gion....    // T
1d210 68 65 20 73 74 61 6e 64 61 72 64 20 61 70 69 20  he standard api 
1d220 63 61 6c 6c 20 65 71 75 69 76 61 6c 65 6e 74 73  call equivalents
1d230 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 69 6e   of the above in
1d240 74 65 72 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20  terop calls..   
1d250 20 23 72 65 67 69 6f 6e 20 73 74 61 6e 64 61 72   #region standar
1d260 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 69 6e  d versions of in
1d270 74 65 72 6f 70 20 66 75 6e 63 74 69 6f 6e 73 0d  terop functions.
1d280 0a 0d 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54  ...#if SQLITE_ST
1d290 41 4e 44 41 52 44 0d 0a 0d 0a 23 69 66 20 21 50  ANDARD....#if !P
1d2a0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d2b0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d2c0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d2d0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d2e0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d2f0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d300 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d310 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d320 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d330 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d340 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d350 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d360 65 33 5f 63 6c 6f 73 65 28 49 6e 74 50 74 72 20  e3_close(IntPtr 
1d370 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 49 4e 54  db);....#if !INT
1d380 45 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53  EROP_LEGACY_CLOS
1d390 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
1d3a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1d3b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1d3c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1d3d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1d3e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1d3f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1d400 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1d410 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1d420 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1d430 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1d440 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1d450 6f 64 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ode sqlite3_clos
1d460 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62 29 3b  e_v2(IntPtr db);
1d470 20 2f 2a 20 33 2e 37 2e 31 34 2b 20 2a 2f 0d 0a   /* 3.7.14+ */..
1d480 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
1d490 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1d4a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1d4b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1d4c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1d4d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1d4e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1d4f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d500 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d510 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1d520 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d530 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1d540 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1d550 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
1d560 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79  on(IntPtr db, by
1d570 74 65 5b 5d 20 73 74 72 4e 61 6d 65 2c 20 69 6e  te[] strName, in
1d580 74 20 6e 41 72 67 73 2c 20 69 6e 74 20 6e 54 79  t nArgs, int nTy
1d590 70 65 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  pe, IntPtr pvUse
1d5a0 72 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  r, SQLiteCallbac
1d5b0 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43 61  k func, SQLiteCa
1d5c0 6c 6c 62 61 63 6b 20 66 73 74 65 70 2c 20 53 51  llback fstep, SQ
1d5d0 4c 69 74 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63  LiteFinalCallbac
1d5e0 6b 20 66 66 69 6e 61 6c 29 3b 0d 0a 0d 0a 23 69  k ffinal);....#i
1d5f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1d600 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1d610 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1d620 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1d630 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1d640 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1d650 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1d660 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1d670 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1d680 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
1d690 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1d6a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1d6b0 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
1d6c0 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d  IntPtr stmt);...
1d6d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1d6e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1d6f0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1d700 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1d710 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1d720 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1d730 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1d740 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1d750 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1d760 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1d770 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1d780 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1d790 65 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  e sqlite3_backup
1d7a0 5f 66 69 6e 69 73 68 28 49 6e 74 50 74 72 20 62  _finish(IntPtr b
1d7b0 61 63 6b 75 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  ackup);....#if !
1d7c0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d7d0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d7e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d7f0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d800 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d810 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d820 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d830 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d840 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1d850 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d860 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1d870 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1d880 74 65 33 5f 72 65 73 65 74 28 49 6e 74 50 74 72  te3_reset(IntPtr
1d890 20 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   stmt);....#if !
1d8a0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d8b0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d8c0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d8d0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d8e0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d8f0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d900 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1d910 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1d920 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1d930 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1d940 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1d950 74 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  tr sqlite3_bind_
1d960 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 49  parameter_name(I
1d970 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1d980 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1d990 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1d9a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1d9b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1d9c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1d9d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1d9e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1d9f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1da00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1da10 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1da20 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1da30 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1da40 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1da50 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 28  n_database_name(
1da60 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74  IntPtr stmt, int
1da70 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20   index);....#if 
1da80 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1da90 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1daa0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dab0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1dac0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1dad0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1dae0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1daf0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1db00 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1db10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1db20 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
1db30 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  Ptr sqlite3_colu
1db40 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
1db50 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
1db60 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
1db70 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1db80 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1db90 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1dba0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
1dbb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
1dbc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
1dbd0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
1dbe0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1dbf0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
1dc00 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
1dc10 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
1dc20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63  IntPtr sqlite3_c
1dc30 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65 28 49  olumn_decltype(I
1dc40 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1dc50 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1dc60 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1dc70 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1dc80 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1dc90 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1dca0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1dcb0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1dcc0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1dcd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dce0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1dcf0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1dd00 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1dd10 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1dd20 6e 5f 64 65 63 6c 74 79 70 65 31 36 28 49 6e 74  n_decltype16(Int
1dd30 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1dd40 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1dd50 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1dd60 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1dd70 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1dd80 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1dd90 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1dda0 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1ddb0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1ddc0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ddd0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1dde0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1ddf0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1de00 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1de10 6e 61 6d 65 28 49 6e 74 50 74 72 20 73 74 6d 74  name(IntPtr stmt
1de20 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1de30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1de40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1de50 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1de60 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1de70 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1de80 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1de90 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1dea0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1deb0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1dec0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1ded0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1dee0 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1def0 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 49  _column_name16(I
1df00 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1df10 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1df20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1df30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1df40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1df50 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1df60 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1df70 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1df80 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1df90 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1dfa0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1dfb0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1dfc0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1dfd0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1dfe0 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 28 49 6e  n_origin_name(In
1dff0 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
1e000 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ndex);....#if !P
1e010 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1e020 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1e030 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e040 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1e050 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1e060 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1e070 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1e080 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e090 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1e0a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1e0b0 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
1e0c0 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  r sqlite3_column
1e0d0 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36 28 49  _origin_name16(I
1e0e0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1e0f0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1e100 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e110 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e120 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e130 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e140 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e150 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e160 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e170 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e180 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e190 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e1a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1e1b0 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  tr sqlite3_colum
1e1c0 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 49 6e 74  n_table_name(Int
1e1d0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1e1e0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1e1f0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e200 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e210 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e220 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e230 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e240 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e250 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e260 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e270 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e280 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e290 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1e2a0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1e2b0 74 61 62 6c 65 5f 6e 61 6d 65 31 36 28 49 6e 74  table_name16(Int
1e2c0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
1e2d0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
1e2e0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e2f0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1e300 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1e310 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1e320 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1e330 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1e340 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1e350 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1e360 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1e370 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1e380 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1e390 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
1e3a0 74 65 78 74 28 49 6e 74 50 74 72 20 73 74 6d 74  text(IntPtr stmt
1e3b0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
1e3c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e3d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e3e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e3f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e400 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e410 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e420 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e430 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e440 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e450 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e460 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e470 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
1e480 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 49  _column_text16(I
1e490 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1e4a0 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21  index);....#if !
1e4b0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1e4c0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1e4d0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1e4e0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1e4f0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1e500 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1e510 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1e520 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1e530 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1e540 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1e550 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1e560 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  tr sqlite3_errms
1e570 67 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  g(IntPtr db);...
1e580 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1e590 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1e5a0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e5b0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1e5c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1e5d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e5e0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1e5f0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e600 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1e610 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1e620 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1e630 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1e640 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
1e650 65 28 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74  e(IntPtr db, Int
1e660 50 74 72 20 70 53 71 6c 2c 20 69 6e 74 20 6e 42  Ptr pSql, int nB
1e670 79 74 65 73 2c 20 72 65 66 20 49 6e 74 50 74 72  ytes, ref IntPtr
1e680 20 73 74 6d 74 2c 20 72 65 66 20 49 6e 74 50 74   stmt, ref IntPt
1e690 72 20 70 74 72 52 65 6d 61 69 6e 29 3b 0d 0a 0d  r ptrRemain);...
1e6a0 0a 23 69 66 20 55 53 45 5f 50 52 45 50 41 52 45  .#if USE_PREPARE
1e6b0 5f 56 32 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  _V2..#if !PLATFO
1e6c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1e6d0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1e6e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1e6f0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1e700 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1e710 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1e720 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1e730 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1e740 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1e750 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1e760 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1e770 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 70 72  rCode sqlite3_pr
1e780 65 70 61 72 65 5f 76 32 28 49 6e 74 50 74 72 20  epare_v2(IntPtr 
1e790 64 62 2c 20 49 6e 74 50 74 72 20 70 53 71 6c 2c  db, IntPtr pSql,
1e7a0 20 69 6e 74 20 6e 42 79 74 65 73 2c 20 72 65 66   int nBytes, ref
1e7b0 20 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 72 65   IntPtr stmt, re
1e7c0 66 20 49 6e 74 50 74 72 20 70 74 72 52 65 6d 61  f IntPtr ptrRema
1e7d0 69 6e 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  in);..#endif....
1e7e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
1e7f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
1e800 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
1e810 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
1e820 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e830 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e840 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
1e850 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1e860 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
1e870 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
1e880 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
1e890 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e8a0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1e8b0 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 49  olumn_metadata(I
1e8c0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
1e8d0 20 64 62 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20   dbName, byte[] 
1e8e0 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65 5b 5d 20  tblName, byte[] 
1e8f0 63 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  colName, ref Int
1e900 50 74 72 20 70 74 72 44 61 74 61 54 79 70 65 2c  Ptr ptrDataType,
1e910 20 72 65 66 20 49 6e 74 50 74 72 20 70 74 72 43   ref IntPtr ptrC
1e920 6f 6c 6c 53 65 71 2c 20 72 65 66 20 69 6e 74 20  ollSeq, ref int 
1e930 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 69 6e 74  notNull, ref int
1e940 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
1e950 20 69 6e 74 20 61 75 74 6f 49 6e 63 29 3b 0d 0a   int autoInc);..
1e960 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1e970 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1e980 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1e990 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
1e9a0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
1e9b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
1e9c0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
1e9d0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
1e9e0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
1e9f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
1ea00 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ea10 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65  rn IntPtr sqlite
1ea20 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 49 6e 74  3_value_text(Int
1ea30 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20 21  Ptr p);....#if !
1ea40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ea50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ea60 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1ea70 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1ea80 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1ea90 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1eaa0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1eab0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1eac0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1ead0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1eae0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
1eaf0 74 72 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  tr sqlite3_value
1eb00 5f 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 70  _text16(IntPtr p
1eb10 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  );....#endif..  
1eb20 20 20 2f 2f 20 53 51 4c 49 54 45 5f 53 54 41 4e    // SQLITE_STAN
1eb30 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e 64  DARD....    #end
1eb40 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1eb50 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   These functions
1eb60 20 61 72 65 20 63 75 73 74 6f 6d 20 61 6e 64 20   are custom and 
1eb70 68 61 76 65 20 6e 6f 20 65 71 75 69 76 61 6c 65  have no equivale
1eb80 6e 74 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  nt standard libr
1eb90 61 72 79 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  ary method...   
1eba0 20 2f 2f 20 41 6c 6c 20 6f 66 20 74 68 65 6d 20   // All of them 
1ebb0 61 72 65 20 22 6e 69 63 65 20 74 6f 20 68 61 76  are "nice to hav
1ebc0 65 73 22 20 61 6e 64 20 6e 6f 74 20 6e 65 63 65  es" and not nece
1ebd0 73 73 61 72 69 6c 79 20 22 6e 65 65 64 20 74 6f  ssarily "need to
1ebe0 20 68 61 76 65 73 22 2e 0d 0a 20 20 20 20 23 72   haves"...    #r
1ebf0 65 67 69 6f 6e 20 6e 6f 20 65 71 75 69 76 61 6c  egion no equival
1ec00 65 6e 74 20 73 74 61 6e 64 61 72 64 20 6d 65 74  ent standard met
1ec10 68 6f 64 0d 0a 0d 0a 23 69 66 20 21 53 51 4c 49  hod....#if !SQLI
1ec20 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 0d 0a 20  TE_STANDARD.... 
1ec30 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1ec40 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
1ec50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1ec60 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
1ec70 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 63 6f  lite3_context_co
1ec80 6c 6c 73 65 71 5f 69 6e 74 65 72 6f 70 28 49 6e  llseq_interop(In
1ec90 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 72 65  tPtr context, re
1eca0 66 20 69 6e 74 20 74 79 70 65 2c 20 72 65 66 20  f int type, ref 
1ecb0 69 6e 74 20 65 6e 63 2c 20 72 65 66 20 69 6e 74  int enc, ref int
1ecc0 20 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44   len);....    [D
1ecd0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ece0 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ecf0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1ed00 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
1ed10 6e 74 65 78 74 5f 63 6f 6c 6c 63 6f 6d 70 61 72  ntext_collcompar
1ed20 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
1ed30 20 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d   context, byte[]
1ed40 20 70 31 2c 20 69 6e 74 20 70 31 6c 65 6e 2c 20   p1, int p1len, 
1ed50 62 79 74 65 5b 5d 20 70 32 2c 20 69 6e 74 20 70  byte[] p2, int p
1ed60 32 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44  2len);....    [D
1ed70 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1ed80 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  DLL)]..    inter
1ed90 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1eda0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1edb0 65 20 73 71 6c 69 74 65 33 5f 63 75 72 73 6f 72  e sqlite3_cursor
1edc0 5f 72 6f 77 69 64 5f 69 6e 74 65 72 6f 70 28 49  _rowid_interop(I
1edd0 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20  ntPtr stmt, int 
1ede0 63 75 72 73 6f 72 2c 20 72 65 66 20 6c 6f 6e 67  cursor, ref long
1edf0 20 72 6f 77 69 64 29 3b 0d 0a 0d 0a 20 20 20 20   rowid);....    
1ee00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1ee10 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e 74  E_DLL)]..    int
1ee20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1ee30 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
1ee40 6f 64 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ode sqlite3_inde
1ee50 78 5f 63 6f 6c 75 6d 6e 5f 69 6e 66 6f 5f 69 6e  x_column_info_in
1ee60 74 65 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c  terop(IntPtr db,
1ee70 20 62 79 74 65 5b 5d 20 63 61 74 61 6c 6f 67 2c   byte[] catalog,
1ee80 20 62 79 74 65 5b 5d 20 49 6e 64 65 78 4e 61 6d   byte[] IndexNam
1ee90 65 2c 20 62 79 74 65 5b 5d 20 43 6f 6c 75 6d 6e  e, byte[] Column
1eea0 4e 61 6d 65 2c 20 72 65 66 20 69 6e 74 20 73 6f  Name, ref int so
1eeb0 72 74 4f 72 64 65 72 2c 20 72 65 66 20 69 6e 74  rtOrder, ref int
1eec0 20 6f 6e 45 72 72 6f 72 2c 20 72 65 66 20 49 6e   onError, ref In
1eed0 74 50 74 72 20 43 6f 6c 6c 61 74 69 6f 6e 2c 20  tPtr Collation, 
1eee0 72 65 66 20 69 6e 74 20 63 6f 6c 6c 6c 65 6e 29  ref int colllen)
1eef0 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ;....    [DllImp
1ef00 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1ef10 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
1ef20 74 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74  tatic extern int
1ef30 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1ef40 75 72 73 6f 72 5f 69 6e 74 65 72 6f 70 28 49 6e  ursor_interop(In
1ef50 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 64  tPtr stmt, int d
1ef60 62 2c 20 69 6e 74 20 74 61 62 6c 65 52 6f 6f 74  b, int tableRoot
1ef70 50 61 67 65 29 3b 0d 0a 0d 0a 23 65 6e 64 69 66  Page);....#endif
1ef80 0d 0a 2f 2f 20 21 53 51 4c 49 54 45 5f 53 54 41  ..// !SQLITE_STA
1ef90 4e 44 41 52 44 0d 0a 0d 0a 20 20 20 20 23 65 6e  NDARD....    #en
1efa0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1efb0 2f 20 53 74 61 6e 64 61 72 64 20 41 50 49 20 63  / Standard API c
1efc0 61 6c 6c 73 20 67 6c 6f 62 61 6c 20 61 63 72 6f  alls global acro
1efd0 73 73 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68  ss versions.  Th
1efe0 65 72 65 20 61 72 65 20 61 20 66 65 77 20 69 6e  ere are a few in
1eff0 73 74 61 6e 63 65 73 20 6f 66 20 69 6e 74 65 72  stances of inter
1f000 6f 70 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f  op calls..    //
1f010 20 73 63 61 74 74 65 72 65 64 20 69 6e 20 68 65   scattered in he
1f020 72 65 2c 20 62 75 74 20 74 68 65 79 20 61 72 65  re, but they are
1f030 20 6f 6e 6c 79 20 61 63 74 69 76 65 20 77 68 65   only active whe
1f040 6e 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  n PLATFORM_COMPA
1f050 43 54 46 52 41 4d 45 57 4f 52 4b 20 69 73 20 64  CTFRAMEWORK is d
1f060 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 23 72  eclared...    #r
1f070 65 67 69 6f 6e 20 73 74 61 6e 64 61 72 64 20 73  egion standard s
1f080 71 6c 69 74 65 20 61 70 69 20 63 61 6c 6c 73 0d  qlite api calls.
1f090 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1f0a0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1f0b0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
1f0c0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
1f0d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
1f0e0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
1f0f0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
1f100 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
1f110 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
1f120 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
1f130 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
1f140 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
1f150 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 3b  e3_libversion();
1f160 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1f170 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1f180 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1f190 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1f1a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1f1b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
1f1c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
1f1d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
1f1e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
1f1f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
1f200 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
1f210 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33  tern int sqlite3
1f220 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
1f230 65 72 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  er();....#if !PL
1f240 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1f250 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
1f260 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f270 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
1f280 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
1f290 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
1f2a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
1f2b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f2c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
1f2d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
1f2e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
1f2f0 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69   sqlite3_sourcei
1f300 64 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  d();....#if !PLA
1f310 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
1f320 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
1f330 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
1f340 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
1f350 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
1f360 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
1f370 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
1f380 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
1f390 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
1f3a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1f3b0 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c  c extern int sql
1f3c0 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
1f3d0 6f 6e 5f 75 73 65 64 28 49 6e 74 50 74 72 20 7a  on_used(IntPtr z
1f3e0 4f 70 74 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66  OptName);....#if
1f3f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1f420 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
1f430 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
1f440 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
1f450 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
1f460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1f470 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
1f480 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
1f490 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e  static extern In
1f4a0 74 50 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d  tPtr sqlite3_com
1f4b0 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
1f4c0 6e 74 20 4e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nt N);....#if !P
1f4d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
1f4e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
1f4f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
1f500 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
1f510 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
1f520 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
1f530 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1f540 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f550 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
1f560 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1f570 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1f580 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1f590 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
1f5a0 5f 63 61 63 68 65 28 0d 0a 20 20 20 20 20 20 20  _cache(..       
1f5b0 20 69 6e 74 20 65 6e 61 62 6c 65 29 3b 0d 0a 0d   int enable);...
1f5c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1f5d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1f5e0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
1f5f0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
1f600 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
1f610 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f620 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
1f630 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
1f640 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
1f650 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
1f660 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
1f670 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
1f680 65 20 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65  e sqlite3_enable
1f690 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
1f6a0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
1f6b0 20 64 62 2c 20 69 6e 74 20 65 6e 61 62 6c 65 29   db, int enable)
1f6c0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
1f6d0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
1f6e0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
1f6f0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
1f700 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
1f710 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
1f720 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
1f730 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
1f740 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
1f750 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1f760 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
1f770 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
1f780 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 6c 6f  rCode sqlite3_lo
1f790 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 0d 0a 20  ad_extension(.. 
1f7a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 64 62         IntPtr db
1f7b0 2c 20 62 79 74 65 5b 5d 20 66 69 6c 65 4e 61 6d  , byte[] fileNam
1f7c0 65 2c 20 62 79 74 65 5b 5d 20 70 72 6f 63 4e 61  e, byte[] procNa
1f7d0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  me, ref IntPtr p
1f7e0 45 72 72 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  Error);....#if !
1f7f0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f800 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f810 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f820 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f830 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f840 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f850 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
1f860 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1f870 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
1f880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1f890 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
1f8a0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
1f8b0 74 65 33 5f 6f 76 65 72 6c 6f 61 64 5f 66 75 6e  te3_overload_fun
1f8c0 63 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62 2c  ction(IntPtr db,
1f8d0 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 20 69   IntPtr zName, i
1f8e0 6e 74 20 6e 41 72 67 73 29 3b 0d 0a 0d 0a 23 69  nt nArgs);....#i
1f8f0 66 20 57 49 4e 44 4f 57 53 0d 0a 23 69 66 20 21  f WINDOWS..#if !
1f900 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1f910 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1f920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
1f930 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
1f940 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
1f950 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
1f960 6c 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61  l, CharSet = Cha
1f970 72 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a  rSet.Unicode)]..
1f980 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
1f990 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
1f9a0 2c 20 43 68 61 72 53 65 74 20 3d 20 43 68 61 72  , CharSet = Char
1f9b0 53 65 74 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 23  Set.Unicode)]..#
1f9c0 65 6e 64 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20  endif..    //.. 
1f9d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
1f9e0 22 73 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 73  "sqlite3_win32_s
1f9f0 65 74 5f 64 69 72 65 63 74 6f 72 79 22 20 53 51  et_directory" SQ
1fa00 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1fa10 79 20 66 75 6e 63 74 69 6f 6e 20 69 73 0d 0a 20  y function is.. 
1fa20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79     //       only
1fa30 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 57 69   supported on Wi
1fa40 6e 64 6f 77 73 2e 0d 0a 20 20 20 20 2f 2f 0d 0a  ndows...    //..
1fa50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1fa60 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
1fa70 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
1fa80 65 33 5f 77 69 6e 33 32 5f 73 65 74 5f 64 69 72  e3_win32_set_dir
1fa90 65 63 74 6f 72 79 28 75 69 6e 74 20 74 79 70 65  ectory(uint type
1faa0 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b  , string value);
1fab0 0d 0a 0d 0a 23 69 66 20 21 44 45 42 55 47 20 2f  ....#if !DEBUG /
1fac0 2f 20 4e 4f 54 45 3a 20 53 68 6f 75 6c 64 20 62  / NOTE: Should b
1fad0 65 20 22 57 49 4e 33 32 48 45 41 50 20 26 26 20  e "WIN32HEAP && 
1fae0 21 4d 45 4d 44 45 42 55 47 22 0d 0a 23 69 66 20  !MEMDEBUG"..#if 
1faf0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1fb00 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1fb10 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
1fb20 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
1fb30 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
1fb40 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
1fb50 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
1fb60 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
1fb70 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
1fb80 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
1fb90 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71 6c 69   NOTE: The "sqli
1fba0 74 65 33 5f 77 69 6e 33 32 5f 72 65 73 65 74 5f  te3_win32_reset_
1fbb0 68 65 61 70 22 20 53 51 4c 69 74 65 20 63 6f 72  heap" SQLite cor
1fbc0 65 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69  e library functi
1fbd0 6f 6e 20 69 73 0d 0a 20 20 20 20 2f 2f 20 20 20  on is..    //   
1fbe0 20 20 20 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74      only support
1fbf0 65 64 20 6f 6e 20 57 69 6e 64 6f 77 73 20 77 68  ed on Windows wh
1fc00 65 6e 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  en the Win32 nat
1fc10 69 76 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73  ive allocator is
1fc20 20 69 6e 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20   in..    //     
1fc30 20 20 75 73 65 20 28 69 2e 65 2e 20 62 79 20 64    use (i.e. by d
1fc40 65 66 61 75 6c 74 2c 20 69 6e 20 22 52 65 6c 65  efault, in "Rele
1fc50 61 73 65 22 20 62 75 69 6c 64 73 20 6f 66 20 53  ase" builds of S
1fc60 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1fc70 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20  e..    //       
1fc80 6f 6e 6c 79 29 2e 20 20 42 79 20 64 65 66 61 75  only).  By defau
1fc90 6c 74 2c 20 69 6e 20 22 44 65 62 75 67 22 20 62  lt, in "Debug" b
1fca0 75 69 6c 64 73 20 6f 66 20 53 79 73 74 65 6d 2e  uilds of System.
1fcb0 44 61 74 61 2e 53 51 4c 69 74 65 2c 20 74 68 65  Data.SQLite, the
1fcc0 0d 0a 20 20 20 20 2f 2f 20 20 20 20 20 20 20 4d  ..    //       M
1fcd0 45 4d 44 45 42 55 47 20 61 6c 6c 6f 63 61 74 6f  EMDEBUG allocato
1fce0 72 20 69 73 20 75 73 65 64 2e 0d 0a 20 20 20 20  r is used...    
1fcf0 2f 2f 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  //..    internal
1fd00 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
1fd10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
1fd20 71 6c 69 74 65 33 5f 77 69 6e 33 32 5f 72 65 73  qlite3_win32_res
1fd30 65 74 5f 68 65 61 70 28 29 3b 0d 0a 0d 0a 23 69  et_heap();....#i
1fd40 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1fd50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1fd60 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
1fd70 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
1fd80 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
1fd90 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
1fda0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
1fdb0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
1fdc0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
1fdd0 69 66 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20  if..    //..    
1fde0 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 22 73 71  // NOTE: The "sq
1fdf0 6c 69 74 65 33 5f 77 69 6e 33 32 5f 63 6f 6d 70  lite3_win32_comp
1fe00 61 63 74 5f 68 65 61 70 22 20 53 51 4c 69 74 65  act_heap" SQLite
1fe10 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 66 75   core library fu
1fe20 6e 63 74 69 6f 6e 20 69 73 0d 0a 20 20 20 20 2f  nction is..    /
1fe30 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20 73 75 70  /       only sup
1fe40 70 6f 72 74 65 64 20 6f 6e 20 57 69 6e 64 6f 77  ported on Window
1fe50 73 20 77 68 65 6e 20 74 68 65 20 57 69 6e 33 32  s when the Win32
1fe60 20 6e 61 74 69 76 65 20 61 6c 6c 6f 63 61 74 6f   native allocato
1fe70 72 20 69 73 20 69 6e 0d 0a 20 20 20 20 2f 2f 20  r is in..    // 
1fe80 20 20 20 20 20 20 75 73 65 20 28 69 2e 65 2e 20        use (i.e. 
1fe90 62 79 20 64 65 66 61 75 6c 74 2c 20 69 6e 20 22  by default, in "
1fea0 52 65 6c 65 61 73 65 22 20 62 75 69 6c 64 73 20  Release" builds 
1feb0 6f 66 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  of System.Data.S
1fec0 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 20 20 20  QLite..    //   
1fed0 20 20 20 20 6f 6e 6c 79 29 2e 20 20 42 79 20 64      only).  By d
1fee0 65 66 61 75 6c 74 2c 20 69 6e 20 22 44 65 62 75  efault, in "Debu
1fef0 67 22 20 62 75 69 6c 64 73 20 6f 66 20 53 79 73  g" builds of Sys
1ff00 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2c  tem.Data.SQLite,
1ff10 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20 20 20 20   the..    //    
1ff20 20 20 20 4d 45 4d 44 45 42 55 47 20 61 6c 6c 6f     MEMDEBUG allo
1ff30 63 61 74 6f 72 20 69 73 20 75 73 65 64 2e 0d 0a  cator is used...
1ff40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 69 6e 74 65      //..    inte
1ff50 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
1ff60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
1ff70 64 65 20 73 71 6c 69 74 65 33 5f 77 69 6e 33 32  de sqlite3_win32
1ff80 5f 63 6f 6d 70 61 63 74 5f 68 65 61 70 28 72 65  _compact_heap(re
1ff90 66 20 75 69 6e 74 20 6c 61 72 67 65 73 74 29 3b  f uint largest);
1ffa0 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6e 64 69 66  ..#endif..#endif
1ffb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
1ffc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1ffd0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
1ffe0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
1fff0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20000 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20010 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20020 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20030 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20040 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20050 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20060 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69  tern IntPtr sqli
20070 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 20 6e  te3_malloc(int n
20080 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
20090 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
200a0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
200b0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
200c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
200d0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
200e0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
200f0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
20100 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
20110 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
20120 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
20130 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
20140 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 75  lite3_malloc64(u
20150 6c 6f 6e 67 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20  long n);....#if 
20160 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20170 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20180 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20190 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
201a0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
201b0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
201c0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
201d0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
201e0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
201f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20200 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
20210 50 74 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c  Ptr sqlite3_real
20220 6c 6f 63 28 49 6e 74 50 74 72 20 70 2c 20 69 6e  loc(IntPtr p, in
20230 74 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  t n);....#if !PL
20240 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20250 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
20260 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
20270 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
20280 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
20290 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
202a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
202b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
202c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
202d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
202e0 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
202f0 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
20300 36 34 28 49 6e 74 50 74 72 20 70 2c 20 75 6c 6f  64(IntPtr p, ulo
20310 6e 67 20 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  ng n);....#if !P
20320 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20330 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20340 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20350 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20360 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20370 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20380 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20390 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
203a0 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
203b0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
203c0 74 69 63 20 65 78 74 65 72 6e 20 75 6c 6f 6e 67  tic extern ulong
203d0 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 49   sqlite3_msize(I
203e0 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66  ntPtr p);....#if
203f0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
20400 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
20410 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20420 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
20430 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
20440 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
20450 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
20460 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20470 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
20480 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
20490 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
204a0 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  id sqlite3_free(
204b0 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69  IntPtr p);....#i
204c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
204d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
204e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
204f0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20500 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20510 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20520 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20530 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20540 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20550 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20560 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
20570 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
20580 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 62  qlite3_open_v2(b
20590 79 74 65 5b 5d 20 75 74 66 38 46 69 6c 65 6e 61  yte[] utf8Filena
205a0 6d 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 64  me, ref IntPtr d
205b0 62 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61  b, SQLiteOpenFla
205c0 67 73 45 6e 75 6d 20 66 6c 61 67 73 2c 20 62 79  gsEnum flags, by
205d0 74 65 5b 5d 20 76 66 73 4e 61 6d 65 29 3b 0d 0a  te[] vfsName);..
205e0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
205f0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20600 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20610 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
20620 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
20630 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
20640 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
20650 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
20660 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
20670 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20680 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
20690 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
206a0 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
206b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
206c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
206d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
206e0 5f 6f 70 65 6e 31 36 28 73 74 72 69 6e 67 20 66  _open16(string f
206f0 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 49 6e 74  ileName, ref Int
20700 50 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20  Ptr db);....#if 
20710 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20720 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20730 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20740 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20750 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20760 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20770 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20780 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20790 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
207a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
207b0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
207c0 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
207d0 75 70 74 28 49 6e 74 50 74 72 20 64 62 29 3b 0d  upt(IntPtr db);.
207e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
207f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
20800 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
20810 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
20820 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
20830 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
20840 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20  ion.Cdecl)]..   
20850 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
20860 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c   extern long sql
20870 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
20880 5f 72 6f 77 69 64 28 49 6e 74 50 74 72 20 64 62  _rowid(IntPtr db
20890 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
208a0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
208b0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
208c0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
208d0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
208e0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
208f0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20900 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
20910 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
20920 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
20930 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
20940 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
20950 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
20960 65 73 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  es(IntPtr db);..
20970 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
20980 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
20990 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
209a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
209b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
209c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
209d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
209e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
209f0 65 78 74 65 72 6e 20 6c 6f 6e 67 20 73 71 6c 69  extern long sqli
20a00 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
20a10 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
20a20 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20a30 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20a40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
20a50 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
20a60 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
20a70 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
20a80 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65  decl)]..    inte
20a90 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
20aa0 72 6e 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f  rn long sqlite3_
20ab0 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
20ac0 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
20ad0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
20ae0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
20af0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
20b00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
20b10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
20b20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
20b30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
20b40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
20b50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
20b60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
20b70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
20b80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
20b90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
20ba0 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 3b  ite3_shutdown();
20bb0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
20bc0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20bd0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
20be0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
20bf0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20c00 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
20c10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
20c20 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
20c30 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
20c40 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
20c50 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
20c60 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
20c70 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 75 73  Code sqlite3_bus
20c80 79 5f 74 69 6d 65 6f 75 74 28 49 6e 74 50 74 72  y_timeout(IntPtr
20c90 20 64 62 2c 20 69 6e 74 20 6d 73 29 3b 0d 0a 0d   db, int ms);...
20ca0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20cb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20cc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
20cd0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
20ce0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
20cf0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20d00 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
20d10 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
20d20 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
20d30 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
20d40 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
20d50 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
20d60 65 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72 5f  e sqlite3_clear_
20d70 62 69 6e 64 69 6e 67 73 28 49 6e 74 50 74 72 20  bindings(IntPtr 
20d80 73 74 6d 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  stmt);....#if !P
20d90 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
20da0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
20db0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
20dc0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
20dd0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
20de0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
20df0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
20e00 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
20e10 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
20e20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
20e30 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
20e40 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
20e50 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 49 6e 74  e3_bind_blob(Int
20e60 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
20e70 64 65 78 2c 20 42 79 74 65 5b 5d 20 76 61 6c 75  dex, Byte[] valu
20e80 65 2c 20 69 6e 74 20 6e 53 69 7a 65 2c 20 49 6e  e, int nSize, In
20e90 74 50 74 72 20 6e 54 72 61 6e 73 69 65 6e 74 29  tPtr nTransient)
20ea0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
20eb0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
20ec0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
20ed0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
20ee0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
20ef0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
20f00 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20  ntion.Cdecl)].. 
20f10 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20f20 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
20f30 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
20f40 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 49 6e  3_bind_double(In
20f50 74 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69  tPtr stmt, int i
20f60 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20 76 61 6c  ndex, double val
20f70 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
20f80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20f90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20fa0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
20fb0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
20fc0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
20fd0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
20fe0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
20ff0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21000 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
21010 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
21020 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21030 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
21040 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
21050 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
21060 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 76 61  nt index, int va
21070 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 0d  lue);....    //.
21080 0a 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68  .    // NOTE: Th
21090 69 73 20 72 65 61 6c 6c 79 20 6a 75 73 74 20 63  is really just c
210a0 61 6c 6c 73 20 22 73 71 6c 69 74 65 33 5f 62 69  alls "sqlite3_bi
210b0 6e 64 5f 69 6e 74 22 3b 20 68 6f 77 65 76 65 72  nd_int"; however
210c0 2c 20 69 74 20 68 61 73 20 74 68 65 0d 0a 20 20  , it has the..  
210d0 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 72 72 65    //       corre
210e0 63 74 20 74 79 70 65 20 73 69 67 6e 61 74 75 72  ct type signatur
210f0 65 20 66 6f 72 20 61 6e 20 75 6e 73 69 67 6e 65  e for an unsigne
21100 64 20 28 33 32 2d 62 69 74 29 20 69 6e 74 65 67  d (32-bit) integ
21110 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
21120 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21130 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21140 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21150 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
21160 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
21170 6e 64 5f 69 6e 74 22 2c 20 43 61 6c 6c 69 6e 67  nd_int", Calling
21180 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
21190 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
211a0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
211b0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
211c0 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50  LITE_DLL, EntryP
211d0 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f  oint = "sqlite3_
211e0 62 69 6e 64 5f 69 6e 74 22 29 5d 0d 0a 23 65 6e  bind_int")]..#en
211f0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
21200 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
21210 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
21220 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 75 69 6e  sqlite3_bind_uin
21230 74 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69  t(IntPtr stmt, i
21240 6e 74 20 69 6e 64 65 78 2c 20 75 69 6e 74 20 76  nt index, uint v
21250 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  alue);....#if !P
21260 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
21270 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21280 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21290 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
212a0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
212b0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
212c0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
212d0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
212e0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
212f0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
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 6c 6f 6e 67 20 76  nt index, long v
21320 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
21330 0d 0a 20 20 20 20 2f 2f 0d 0a 20 20 20 20 2f 2f  ..    //..    //
21340 20 4e 4f 54 45 3a 20 54 68 69 73 20 72 65 61 6c   NOTE: This real
21350 6c 79 20 6a 75 73 74 20 63 61 6c 6c 73 20 22 73  ly just calls "s
21360 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
21370 34 22 3b 20 68 6f 77 65 76 65 72 2c 20 69 74 20  4"; however, it 
21380 68 61 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 20  has the..    // 
21390 20 20 20 20 20 20 63 6f 72 72 65 63 74 20 74 79        correct ty
213a0 70 65 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72  pe signature for
213b0 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e   an unsigned lon
213c0 67 20 28 36 34 2d 62 69 74 29 20 69 6e 74 65 67  g (64-bit) integ
213d0 65 72 2e 0d 0a 20 20 20 20 2f 2f 0d 0a 23 69 66  er...    //..#if
213e0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
213f0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21400 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
21410 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69  TE_DLL, EntryPoi
21420 6e 74 20 3d 20 22 73 71 6c 69 74 65 33 5f 62 69  nt = "sqlite3_bi
21430 6e 64 5f 69 6e 74 36 34 22 2c 20 43 61 6c 6c 69  nd_int64", Calli
21440 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
21450 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
21460 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
21470 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21480 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
21490 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
214a0 64 5f 75 69 6e 74 36 34 28 49 6e 74 50 74 72 20  d_uint64(IntPtr 
214b0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
214c0 20 75 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a   ulong value);..
214d0 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50  #endif....#if !P
214e0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
214f0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
21500 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21510 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
21520 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
21530 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
21540 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
21550 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
21560 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
21570 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21580 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
21590 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
215a0 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 49 6e 74  e3_bind_null(Int
215b0 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
215c0 64 65 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  dex);....#if !PL
215d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
215e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
215f0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21600 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21610 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21620 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21630 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21640 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21650 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21660 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21670 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
21680 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
21690 33 5f 62 69 6e 64 5f 74 65 78 74 28 49 6e 74 50  3_bind_text(IntP
216a0 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  tr stmt, int ind
216b0 65 78 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  ex, byte[] value
216c0 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74 50  , int nlen, IntP
216d0 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b 0d  tr pvReserved);.
216e0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
216f0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21700 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21710 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21720 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21730 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21740 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21750 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21760 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21770 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21780 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21790 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
217a0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
217b0 6f 75 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74  ount(IntPtr stmt
217c0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
217d0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
217e0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
217f0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21800 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21810 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21820 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21830 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
21840 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21850 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
21860 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
21870 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
21880 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
21890 72 5f 69 6e 64 65 78 28 49 6e 74 50 74 72 20 73  r_index(IntPtr s
218a0 74 6d 74 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e  tmt, byte[] strN
218b0 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
218c0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
218d0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
218e0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
218f0 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21900 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21910 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21920 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21930 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21940 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21950 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21960 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71  ic extern int sq
21970 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
21980 6e 74 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b  nt(IntPtr stmt);
21990 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
219a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
219b0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
219c0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
219d0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
219e0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
219f0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
21a00 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
21a10 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
21a20 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
21a30 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
21a40 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
21a50 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 73 74 65  Code sqlite3_ste
21a60 70 28 49 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d  p(IntPtr stmt);.
21a70 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
21a80 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
21a90 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
21aa0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
21ab0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
21ac0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
21ad0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
21ae0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
21af0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
21b00 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
21b10 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
21b20 65 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  ern int sqlite3_
21b30 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 49 6e  stmt_readonly(In
21b40 74 50 74 72 20 73 74 6d 74 29 3b 20 2f 2a 20 33  tPtr stmt); /* 3
21b50 2e 37 2e 34 2b 20 2a 2f 0d 0a 0d 0a 23 69 66 20  .7.4+ */....#if 
21b60 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
21b70 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
21b80 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
21b90 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
21ba0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
21bb0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
21bc0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
21bd0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
21be0 20 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f   double sqlite3_
21bf0 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 49 6e  column_double(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 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  rn int sqlite3_c
21ce0 6f 6c 75 6d 6e 5f 69 6e 74 28 49 6e 74 50 74 72  olumn_int(IntPtr
21cf0 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
21d00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
21d10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
21d20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
21d30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
21d40 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
21d50 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
21d60 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
21d70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
21d80 74 69 63 20 65 78 74 65 72 6e 20 6c 6f 6e 67 20  tic extern long 
21d90 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69  sqlite3_column_i
21da0 6e 74 36 34 28 49 6e 74 50 74 72 20 73 74 6d 74  nt64(IntPtr stmt
21db0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 23  , int index);..#
21dc0 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
21dd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
21de0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
21df0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
21e00 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
21e10 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
21e20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
21e30 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
21e40 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
21e50 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
21e60 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
21e70 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72  ic extern IntPtr
21e80 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
21e90 62 6c 6f 62 28 49 6e 74 50 74 72 20 73 74 6d 74  blob(IntPtr stmt
21ea0 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d  , int index);...
21eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
21ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
21ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
21f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
21f10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
21f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
21f30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
21f40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
21f50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
21f60 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  n int sqlite3_co
21f70 6c 75 6d 6e 5f 62 79 74 65 73 28 49 6e 74 50 74  lumn_bytes(IntPt
21f80 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  r stmt, int inde
21f90 78 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  x);....#if !PLAT
21fa0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
21fb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
21fc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
21fd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
21fe0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
21ff0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22000 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22010 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22020 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22030 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22040 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
22050 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73  te3_column_bytes
22060 31 36 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20  16(IntPtr stmt, 
22070 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23  int index);....#
22080 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22090 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
220a0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
220b0 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
220c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
220d0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
220e0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
220f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22100 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
22110 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
22120 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
22130 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71 6c  TypeAffinity sql
22140 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
22150 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
22160 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 23 69 66  t index);....#if
22170 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22180 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22190 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
221a0 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
221b0 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
221c0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
221d0 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
221e0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
221f0 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
22200 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
22210 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
22220 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
22230 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 63 6f 6c  lite3_create_col
22240 6c 61 74 69 6f 6e 28 49 6e 74 50 74 72 20 64 62  lation(IntPtr db
22250 2c 20 62 79 74 65 5b 5d 20 73 74 72 4e 61 6d 65  , byte[] strName
22260 2c 20 69 6e 74 20 6e 54 79 70 65 2c 20 49 6e 74  , int nType, Int
22270 50 74 72 20 70 76 55 73 65 72 2c 20 53 51 4c 69  Ptr pvUser, SQLi
22280 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  teCollation func
22290 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
222a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
222b0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
222c0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
222d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
222e0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
222f0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22300 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22310 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22320 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22330 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22340 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
22350 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 75  e3_aggregate_cou
22360 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
22370 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
22380 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22390 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
223a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
223b0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
223c0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
223d0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
223e0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
223f0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22400 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22410 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22420 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
22430 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f  qlite3_value_blo
22440 62 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  b(IntPtr p);....
22450 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22460 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22470 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22480 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22490 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
224a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
224b0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
224c0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
224d0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
224e0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
224f0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22500 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 76 61 6c   int sqlite3_val
22510 75 65 5f 62 79 74 65 73 28 49 6e 74 50 74 72 20  ue_bytes(IntPtr 
22520 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  p);....#if !PLAT
22530 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
22540 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
22550 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22560 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22570 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22580 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22590 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
225a0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
225b0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
225c0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
225d0 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
225e0 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 31  te3_value_bytes1
225f0 36 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a  6(IntPtr p);....
22600 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22610 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22620 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22630 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22640 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22650 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
22660 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20 69 6e  .Cdecl)]..    in
22670 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
22680 74 65 72 6e 20 64 6f 75 62 6c 65 20 73 71 6c 69  tern double sqli
22690 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
226a0 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 23 65 6e  (IntPtr p);..#en
226b0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
226c0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
226d0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
226e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
226f0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
22700 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
22710 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
22720 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
22730 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
22740 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
22750 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
22760 20 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69   extern int sqli
22770 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 49 6e  te3_value_int(In
22780 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23 69 66 20  tPtr p);....#if 
22790 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
227a0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
227b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
227c0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
227d0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
227e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
227f0 63 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cl)]..    intern
22800 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
22810 20 6c 6f 6e 67 20 73 71 6c 69 74 65 33 5f 76 61   long sqlite3_va
22820 6c 75 65 5f 69 6e 74 36 34 28 49 6e 74 50 74 72  lue_int64(IntPtr
22830 20 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a   p);..#endif....
22840 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
22850 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
22860 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
22870 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
22880 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
22890 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
228a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
228b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
228c0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
228d0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
228e0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
228f0 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 73 71   TypeAffinity sq
22900 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
22910 28 49 6e 74 50 74 72 20 70 29 3b 0d 0a 0d 0a 23  (IntPtr p);....#
22920 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
22930 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
22940 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
22950 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
22960 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
22970 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
22980 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
22990 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
229a0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
229b0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
229c0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
229d0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73  void sqlite3_res
229e0 75 6c 74 5f 62 6c 6f 62 28 49 6e 74 50 74 72 20  ult_blob(IntPtr 
229f0 63 6f 6e 74 65 78 74 2c 20 62 79 74 65 5b 5d 20  context, byte[] 
22a00 76 61 6c 75 65 2c 20 69 6e 74 20 6e 53 69 7a 65  value, int nSize
22a10 2c 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72  , IntPtr pvReser
22a20 76 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ved);....#if !PL
22a30 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
22a40 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
22a50 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
22a60 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
22a70 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
22a80 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
22a90 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ]..    internal 
22aa0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f  static extern vo
22ab0 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  id sqlite3_resul
22ac0 74 5f 64 6f 75 62 6c 65 28 49 6e 74 50 74 72 20  t_double(IntPtr 
22ad0 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65 20  context, double 
22ae0 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
22af0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22b00 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22b10 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
22b20 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
22b30 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
22b40 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
22b50 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
22b60 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
22b70 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
22b80 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
22b90 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
22ba0 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33  ern void sqlite3
22bb0 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 28 49 6e  _result_error(In
22bc0 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
22bd0 74 65 5b 5d 20 73 74 72 45 72 72 2c 20 69 6e 74  te[] strErr, int
22be0 20 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21   nLen);....#if !
22bf0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
22c00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
22c10 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
22c20 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
22c30 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
22c40 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
22c50 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
22c60 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22c70 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
22c80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
22c90 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
22ca0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
22cb0 65 72 72 6f 72 5f 63 6f 64 65 28 49 6e 74 50 74  error_code(IntPt
22cc0 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c 69 74  r context, SQLit
22cd0 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65  eErrorCode value
22ce0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
22cf0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
22d00 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
22d10 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
22d20 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
22d30 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
22d40 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
22d50 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
22d60 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
22d70 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
22d80 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22d90 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
22da0 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
22db0 5f 74 6f 6f 62 69 67 28 49 6e 74 50 74 72 20 63  _toobig(IntPtr c
22dc0 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69 66 20  ontext);....#if 
22dd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
22de0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
22df0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
22e00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
22e10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
22e20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
22e30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
22e40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
22e50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
22e60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
22e70 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
22e80 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  d sqlite3_result
22e90 5f 65 72 72 6f 72 5f 6e 6f 6d 65 6d 28 49 6e 74  _error_nomem(Int
22ea0 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
22eb0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
22ec0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
22ed0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
22ee0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
22ef0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
22f00 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
22f10 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
22f20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
22f30 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
22f40 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
22f50 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
22f60 6e 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  n void sqlite3_r
22f70 65 73 75 6c 74 5f 76 61 6c 75 65 28 49 6e 74 50  esult_value(IntP
22f80 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50  tr context, IntP
22f90 74 72 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  tr value);....#i
22fa0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
22fb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
22fc0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
22fd0 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
22fe0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
22ff0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
23000 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
23010 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
23020 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
23030 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
23040 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
23050 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 65 73 75  oid sqlite3_resu
23060 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 49 6e 74 50  lt_zeroblob(IntP
23070 74 72 20 63 6f 6e 74 65 78 74 2c 20 69 6e 74 20  tr context, int 
23080 6e 4c 65 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  nLen);....#if !P
23090 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
230a0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
230b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
230c0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
230d0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
230e0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
230f0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23100 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23110 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23120 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23130 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23140 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
23150 6e 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  nt(IntPtr contex
23160 74 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d 0a  t, int value);..
23170 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23180 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23190 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
231a0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
231b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
231c0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
231d0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 20 20 20 20  on.Cdecl)]..    
231e0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
231f0 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
23200 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
23210 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
23220 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 23   long value);..#
23230 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c  endif....#if !PL
23240 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
23250 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
23260 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
23270 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
23280 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
23290 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
232a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
232b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
232c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
232d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
232e0 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73  ic extern void s
232f0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75  qlite3_result_nu
23300 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
23310 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
23320 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23330 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23340 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23350 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23360 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23370 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23380 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23390 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
233a0 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
233b0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
233c0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
233d0 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
233e0 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
233f0 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 20 69   byte[] value, i
23400 6e 74 20 6e 4c 65 6e 2c 20 49 6e 74 50 74 72 20  nt nLen, IntPtr 
23410 70 76 52 65 73 65 72 76 65 64 29 3b 0d 0a 0d 0a  pvReserved);....
23420 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
23430 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
23440 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23450 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
23460 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
23470 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
23480 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
23490 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
234a0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
234b0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
234c0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
234d0 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
234e0 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78  aggregate_contex
234f0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
23500 2c 20 69 6e 74 20 6e 42 79 74 65 73 29 3b 0d 0a  , int nBytes);..
23510 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23520 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23530 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23540 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23550 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23560 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23570 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72 53 65  on.Cdecl, CharSe
23580 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63  t = CharSet.Unic
23590 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ode)]..#else..  
235a0 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
235b0 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53 65 74  ITE_DLL, CharSet
235c0 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69 63 6f   = CharSet.Unico
235d0 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  de)]..#endif..  
235e0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
235f0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
23600 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
23610 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 49 6e 74  _bind_text16(Int
23620 50 74 72 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  Ptr stmt, int in
23630 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61 6c 75  dex, string valu
23640 65 2c 20 69 6e 74 20 6e 6c 65 6e 2c 20 49 6e 74  e, int nlen, Int
23650 50 74 72 20 70 76 52 65 73 65 72 76 65 64 29 3b  Ptr pvReserved);
23660 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
23670 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
23680 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
23690 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
236a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
236b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
236c0 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61 72  tion.Cdecl, Char
236d0 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
236e0 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d 0a  icode)]..#else..
236f0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
23700 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72 53  QLITE_DLL, CharS
23710 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e 69  et = CharSet.Uni
23720 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  code)]..#endif..
23730 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23740 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23750 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
23760 72 72 6f 72 31 36 28 49 6e 74 50 74 72 20 63 6f  rror16(IntPtr co
23770 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
23780 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 29  rName, int nLen)
23790 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
237a0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
237b0 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
237c0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
237d0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
237e0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
237f0 6e 74 69 6f 6e 2e 43 64 65 63 6c 2c 20 43 68 61  ntion.Cdecl, Cha
23800 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55  rSet = CharSet.U
23810 6e 69 63 6f 64 65 29 5d 0d 0a 23 65 6c 73 65 0d  nicode)]..#else.
23820 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
23830 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 68 61 72  SQLITE_DLL, Char
23840 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 55 6e  Set = CharSet.Un
23850 69 63 6f 64 65 29 5d 0d 0a 23 65 6e 64 69 66 0d  icode)]..#endif.
23860 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
23870 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
23880 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
23890 74 65 78 74 31 36 28 49 6e 74 50 74 72 20 63 6f  text16(IntPtr co
238a0 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 74  ntext, string st
238b0 72 4e 61 6d 65 2c 20 69 6e 74 20 6e 4c 65 6e 2c  rName, int nLen,
238c0 20 49 6e 74 50 74 72 20 70 76 52 65 73 65 72 76   IntPtr pvReserv
238d0 65 64 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ed);....#if INTE
238e0 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
238f0 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
23900 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
23910 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
23920 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
23930 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
23940 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
23950 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23960 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
23970 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
23980 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
23990 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
239a0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
239b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
239c0 64 65 20 73 71 6c 69 74 65 33 5f 6b 65 79 28 49  de sqlite3_key(I
239d0 6e 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d  ntPtr db, byte[]
239e0 20 6b 65 79 2c 20 69 6e 74 20 6b 65 79 6c 65 6e   key, int keylen
239f0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23a00 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23a10 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23a20 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23a30 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23a40 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23a50 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23a60 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23a70 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23a80 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23a90 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23aa0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
23ab0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 72  orCode sqlite3_r
23ac0 65 6b 65 79 28 49 6e 74 50 74 72 20 64 62 2c 20  ekey(IntPtr db, 
23ad0 62 79 74 65 5b 5d 20 6b 65 79 2c 20 69 6e 74 20  byte[] key, int 
23ae0 6b 65 79 6c 65 6e 29 3b 0d 0a 23 65 6e 64 69 66  keylen);..#endif
23af0 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
23b00 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
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 7a 69 70 76 66 73 49 6e 69 74   void zipvfsInit
23bd0 5f 76 32 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  _v2();....#if !P
23be0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23bf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23c00 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23c10 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23c20 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23c30 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23c40 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23c50 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23c60 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23c70 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23c80 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
23c90 7a 69 70 76 66 73 49 6e 69 74 5f 76 33 28 69 6e  zipvfsInit_v3(in
23ca0 74 20 72 65 67 44 66 6c 74 29 3b 0d 0a 23 65 6e  t regDflt);..#en
23cb0 64 69 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  dif....#if !PLAT
23cc0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
23cd0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
23ce0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23cf0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
23d00 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
23d10 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
23d20 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
23d30 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
23d40 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
23d50 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
23d60 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
23d70 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
23d80 6e 64 6c 65 72 28 49 6e 74 50 74 72 20 64 62 2c  ndler(IntPtr db,
23d90 20 69 6e 74 20 6f 70 73 2c 20 53 51 4c 69 74 65   int ops, SQLite
23da0 50 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  ProgressCallback
23db0 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76   func, IntPtr pv
23dc0 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  User);....#if !P
23dd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
23de0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
23df0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
23e00 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
23e10 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
23e20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
23e30 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
23e40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
23e50 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
23e60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
23e70 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
23e80 72 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  r sqlite3_set_au
23e90 74 68 6f 72 69 7a 65 72 28 49 6e 74 50 74 72 20  thorizer(IntPtr 
23ea0 64 62 2c 20 53 51 4c 69 74 65 41 75 74 68 6f 72  db, SQLiteAuthor
23eb0 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e  izerCallback fun
23ec0 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65 72  c, IntPtr pvUser
23ed0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
23ee0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
23ef0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
23f00 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
23f10 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
23f20 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
23f30 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
23f40 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
23f50 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
23f60 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
23f70 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23f80 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
23f90 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f  lite3_update_hoo
23fa0 6b 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  k(IntPtr db, SQL
23fb0 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
23fc0 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 70  k func, IntPtr p
23fd0 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21  vUser);....#if !
23fe0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
23ff0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
24000 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24010 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
24020 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
24030 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
24040 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
24050 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24060 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
24070 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24080 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
24090 74 72 20 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69  tr sqlite3_commi
240a0 74 5f 68 6f 6f 6b 28 49 6e 74 50 74 72 20 64 62  t_hook(IntPtr db
240b0 2c 20 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61  , SQLiteCommitCa
240c0 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74  llback func, Int
240d0 50 74 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a  Ptr pvUser);....
240e0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
240f0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24100 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
24110 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
24120 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
24130 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
24140 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
24150 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24160 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
24170 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
24180 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
24190 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f   IntPtr sqlite3_
241a0 74 72 61 63 65 28 49 6e 74 50 74 72 20 64 62 2c  trace(IntPtr db,
241b0 20 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c   SQLiteTraceCall
241c0 62 61 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74  back func, IntPt
241d0 72 20 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69  r pvUser);....#i
241e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
241f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24200 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
24210 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
24220 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
24230 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
24240 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
24250 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
24260 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
24270 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
24280 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 49   static extern I
24290 6e 74 50 74 72 20 73 71 6c 69 74 65 33 5f 74 72  ntPtr sqlite3_tr
242a0 61 63 65 5f 76 32 28 49 6e 74 50 74 72 20 64 62  ace_v2(IntPtr db
242b0 2c 20 53 51 4c 69 74 65 54 72 61 63 65 46 6c 61  , SQLiteTraceFla
242c0 67 73 20 6d 61 73 6b 2c 20 53 51 4c 69 74 65 54  gs mask, SQLiteT
242d0 72 61 63 65 43 61 6c 6c 62 61 63 6b 32 20 66 75  raceCallback2 fu
242e0 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73 65  nc, IntPtr pvUse
242f0 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53 69  r);....    // Si
24300 6e 63 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nce sqlite3_conf
24310 69 67 28 29 20 74 61 6b 65 73 20 61 20 76 61 72  ig() takes a var
24320 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c  iable argument l
24330 69 73 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20  ist, we have to 
24340 6f 76 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61  overload declara
24350 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f  tions..    // fo
24360 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63  r all possible c
24370 61 6c 6c 73 20 74 68 61 74 20 77 65 20 77 61 6e  alls that we wan
24380 74 20 74 6f 20 75 73 65 2e 0d 0a 23 69 66 20 21  t to use...#if !
24390 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
243a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
243b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
243c0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
243d0 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
243e0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
243f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
24400 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
24410 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
24420 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
24430 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
24440 20 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66   = "sqlite3_conf
24450 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ig")]..#endif.. 
24460 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
24470 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
24480 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
24490 33 5f 63 6f 6e 66 69 67 5f 6e 6f 6e 65 28 53 51  3_config_none(SQ
244a0 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75  LiteConfigOpsEnu
244b0 6d 20 6f 70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  m op);....#if !P
244c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
244d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
244e0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
244f0 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
24500 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
24510 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  g", CallingConve
24520 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
24530 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
24540 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
24550 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
24560 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20  DLL, EntryPoint 
24570 3d 20 22 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  = "sqlite3_confi
24580 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  g")]..#endif..  
24590 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
245a0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
245b0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
245c0 5f 63 6f 6e 66 69 67 5f 69 6e 74 28 53 51 4c 69  _config_int(SQLi
245d0 74 65 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 20  teConfigOpsEnum 
245e0 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65 29 3b 0d  op, int value);.
245f0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24600 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24610 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24620 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
24630 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
24640 74 65 33 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  te3_config", Cal
24650 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24660 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24670 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
24680 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24690 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
246a0 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
246b0 74 65 33 5f 63 6f 6e 66 69 67 22 29 5d 0d 0a 23  te3_config")]..#
246c0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
246d0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
246e0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
246f0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
24700 5f 6c 6f 67 28 53 51 4c 69 74 65 43 6f 6e 66 69  _log(SQLiteConfi
24710 67 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 53 51 4c  gOpsEnum op, SQL
24720 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b 20 66  iteLogCallback f
24730 75 6e 63 2c 20 49 6e 74 50 74 72 20 70 76 55 73  unc, IntPtr pvUs
24740 65 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  er);....#if !PLA
24750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
24760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
24770 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24780 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20  L, EntryPoint = 
24790 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  "sqlite3_db_conf
247a0 69 67 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  ig", CallingConv
247b0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
247c0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
247d0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
247e0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
247f0 5f 44 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74  _DLL, EntryPoint
24800 20 3d 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63   = "sqlite3_db_c
24810 6f 6e 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66  onfig")]..#endif
24820 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24830 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
24840 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
24850 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 63  ite3_db_config_c
24860 68 61 72 70 74 72 28 49 6e 74 50 74 72 20 64 62  harptr(IntPtr db
24870 2c 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  , SQLiteConfigDb
24880 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 49 6e 74 50  OpsEnum op, IntP
24890 74 72 20 63 68 61 72 50 74 72 29 3b 0d 0a 0d 0a  tr charPtr);....
248a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
248b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
248c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
248d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74 72 79  QLITE_DLL, Entry
248e0 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74 65 33  Point = "sqlite3
248f0 5f 64 62 5f 63 6f 6e 66 69 67 22 2c 20 43 61 6c  _db_config", Cal
24900 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
24910 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24920 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
24930 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
24940 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e  t(SQLITE_DLL, En
24950 74 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69  tryPoint = "sqli
24960 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 22 29 5d  te3_db_config")]
24970 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
24980 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
24990 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
249a0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64 62 5f  Code sqlite3_db_
249b0 63 6f 6e 66 69 67 5f 69 6e 74 5f 72 65 66 69 6e  config_int_refin
249c0 74 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c  t(IntPtr db, SQL
249d0 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e  iteConfigDbOpsEn
249e0 75 6d 20 6f 70 2c 20 69 6e 74 20 76 61 6c 75 65  um op, int value
249f0 2c 20 72 65 66 20 69 6e 74 20 72 65 73 75 6c 74  , ref int result
24a00 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24a10 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24a20 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24a30 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24a40 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22 73   EntryPoint = "s
24a50 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
24a60 22 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  ", CallingConven
24a70 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
24a80 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
24a90 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
24aa0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
24ab0 4c 4c 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d  LL, EntryPoint =
24ac0 20 22 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   "sqlite3_db_con
24ad0 66 69 67 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  fig")]..#endif..
24ae0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24af0 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
24b00 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
24b10 65 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 69 6e 74  e3_db_config_int
24b20 70 74 72 5f 74 77 6f 5f 69 6e 74 73 28 49 6e 74  ptr_two_ints(Int
24b30 50 74 72 20 64 62 2c 20 53 51 4c 69 74 65 43 6f  Ptr db, SQLiteCo
24b40 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20 6f 70  nfigDbOpsEnum op
24b50 2c 20 49 6e 74 50 74 72 20 70 74 72 2c 20 69 6e  , IntPtr ptr, in
24b60 74 20 69 6e 74 30 2c 20 69 6e 74 20 69 6e 74 31  t int0, int int1
24b70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
24b80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
24b90 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
24ba0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
24bb0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
24bc0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
24bd0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
24be0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
24bf0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24c00 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
24c10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
24c20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
24c30 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 64  orCode sqlite3_d
24c40 62 5f 73 74 61 74 75 73 28 49 6e 74 50 74 72 20  b_status(IntPtr 
24c50 64 62 2c 20 53 51 4c 69 74 65 53 74 61 74 75 73  db, SQLiteStatus
24c60 4f 70 73 45 6e 75 6d 20 6f 70 2c 20 72 65 66 20  OpsEnum op, ref 
24c70 69 6e 74 20 63 75 72 72 65 6e 74 2c 20 72 65 66  int current, ref
24c80 20 69 6e 74 20 68 69 67 68 77 61 74 65 72 2c 20   int highwater, 
24c90 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0d  int resetFlag);.
24ca0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
24cb0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
24cc0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
24cd0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
24ce0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
24cf0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
24d00 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
24d10 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
24d20 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
24d30 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
24d40 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
24d50 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
24d60 65 33 5f 72 6f 6c 6c 62 61 63 6b 5f 68 6f 6f 6b  e3_rollback_hook
24d70 28 49 6e 74 50 74 72 20 64 62 2c 20 53 51 4c 69  (IntPtr db, SQLi
24d80 74 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61  teRollbackCallba
24d90 63 6b 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20  ck func, IntPtr 
24da0 70 76 55 73 65 72 29 3b 0d 0a 0d 0a 23 69 66 20  pvUser);....#if 
24db0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24dc0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24dd0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
24de0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
24df0 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
24e00 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
24e10 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
24e20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
24e30 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
24e40 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
24e50 74 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74  tatic extern Int
24e60 50 74 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 68  Ptr sqlite3_db_h
24e70 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 73 74 6d  andle(IntPtr stm
24e80 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  t);....#if !PLAT
24e90 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
24ea0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
24eb0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
24ec0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
24ed0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
24ee0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
24ef0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
24f00 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
24f10 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
24f20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
24f30 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
24f40 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 5f  rorCode sqlite3_
24f50 64 62 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  db_release_memor
24f60 79 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a 0d  y(IntPtr db);...
24f70 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
24f80 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
24f90 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
24fa0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
24fb0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
24fc0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
24fd0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
24fe0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
24ff0 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
25000 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
25010 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
25020 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74 65 33  n IntPtr sqlite3
25030 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 49 6e 74  _db_filename(Int
25040 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 64  Ptr db, IntPtr d
25050 62 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  bName);....#if !
25060 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25070 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25080 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25090 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
250a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
250b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
250c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
250d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
250e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
250f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
25100 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
25110 73 71 6c 69 74 65 33 5f 64 62 5f 72 65 61 64 6f  sqlite3_db_reado
25120 6e 6c 79 28 49 6e 74 50 74 72 20 64 62 2c 20 49  nly(IntPtr db, I
25130 6e 74 50 74 72 20 64 62 4e 61 6d 65 29 3b 0d 0a  ntPtr dbName);..
25140 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25150 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25160 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25170 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
25180 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
25190 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 22 2c  e3_db_filename",
251a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
251b0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
251c0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
251d0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
251e0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
251f0 2c 20 45 6e 74 72 79 50 6f 69 6e 74 20 3d 20 22  , EntryPoint = "
25200 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
25210 61 6d 65 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  ame")]..#endif..
25220 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25230 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
25240 72 20 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c  r sqlite3_db_fil
25250 65 6e 61 6d 65 5f 62 79 74 65 73 28 49 6e 74 50  ename_bytes(IntP
25260 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20 64 62  tr db, byte[] db
25270 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  Name);....#if !P
25280 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25290 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
252a0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
252b0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
252c0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
252d0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
252e0 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
252f0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25300 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
25310 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
25320 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
25330 72 20 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73  r sqlite3_next_s
25340 74 6d 74 28 49 6e 74 50 74 72 20 64 62 2c 20 49  tmt(IntPtr db, I
25350 6e 74 50 74 72 20 73 74 6d 74 29 3b 0d 0a 0d 0a  ntPtr stmt);....
25360 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25370 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25380 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25390 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
253a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
253b0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
253c0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
253d0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
253e0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
253f0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
25400 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
25410 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
25420 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 49 6e   sqlite3_exec(In
25430 74 50 74 72 20 64 62 2c 20 62 79 74 65 5b 5d 20  tPtr db, byte[] 
25440 73 74 72 53 71 6c 2c 20 49 6e 74 50 74 72 20 70  strSql, IntPtr p
25450 76 43 61 6c 6c 62 61 63 6b 2c 20 49 6e 74 50 74  vCallback, IntPt
25460 72 20 70 76 50 61 72 61 6d 2c 20 72 65 66 20 49  r pvParam, ref I
25470 6e 74 50 74 72 20 65 72 72 4d 73 67 29 3b 0d 0a  ntPtr errMsg);..
25480 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25490 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
254a0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
254b0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
254c0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
254d0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
254e0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
254f0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25500 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
25510 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
25520 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
25530 72 6e 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 72  rn int sqlite3_r
25540 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 69 6e  elease_memory(in
25550 74 20 6e 42 79 74 65 73 29 3b 0d 0a 0d 0a 23 69  t nBytes);....#i
25560 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25570 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25580 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
25590 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
255a0 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
255b0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
255c0 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
255d0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
255e0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
255f0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
25600 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 69   static extern i
25610 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  nt sqlite3_get_a
25620 75 74 6f 63 6f 6d 6d 69 74 28 49 6e 74 50 74 72  utocommit(IntPtr
25630 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c   db);....#if !PL
25640 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25650 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
25660 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
25670 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
25680 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
25690 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
256a0 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
256b0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
256c0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
256d0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
256e0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
256f0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
25700 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c  3_extended_resul
25710 74 5f 63 6f 64 65 73 28 49 6e 74 50 74 72 20 64  t_codes(IntPtr d
25720 62 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0d 0a  b, int onoff);..
25730 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25740 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25750 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25760 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25770 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25780 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25790 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
257a0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
257b0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
257c0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
257d0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
257e0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
257f0 64 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f  de sqlite3_errco
25800 64 65 28 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  de(IntPtr db);..
25810 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
25820 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
25830 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
25840 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
25850 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
25860 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25870 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
25880 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
25890 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
258a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
258b0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
258c0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
258d0 64 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  de sqlite3_exten
258e0 64 65 64 5f 65 72 72 63 6f 64 65 28 49 6e 74 50  ded_errcode(IntP
258f0 74 72 20 64 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  tr db);....#if !
25900 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
25910 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
25920 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
25930 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
25940 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
25950 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
25960 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
25970 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25980 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
25990 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
259a0 61 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50  atic extern IntP
259b0 74 72 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74  tr sqlite3_errst
259c0 72 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  r(SQLiteErrorCod
259d0 65 20 72 63 29 3b 20 2f 2a 20 33 2e 37 2e 31 35  e rc); /* 3.7.15
259e0 2b 20 2a 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 53  + */....    // S
259f0 69 6e 63 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67  ince sqlite3_log
25a00 28 29 20 74 61 6b 65 73 20 61 20 76 61 72 69 61  () takes a varia
25a10 62 6c 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73  ble argument lis
25a20 74 2c 20 77 65 20 68 61 76 65 20 74 6f 20 6f 76  t, we have to ov
25a30 65 72 6c 6f 61 64 20 64 65 63 6c 61 72 61 74 69  erload declarati
25a40 6f 6e 73 0d 0a 20 20 20 20 2f 2f 20 66 6f 72 20  ons..    // for 
25a50 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 63 61 6c  all possible cal
25a60 6c 73 2e 20 20 46 6f 72 20 6e 6f 77 2c 20 77 65  ls.  For now, we
25a70 20 61 72 65 20 6f 6e 6c 79 20 65 78 70 6f 73 69   are only exposi
25a80 6e 67 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69  ng a single stri
25a90 6e 67 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 20  ng, and..    // 
25aa0 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61  depend on the ca
25ab0 6c 6c 65 72 20 74 6f 20 66 6f 72 6d 61 74 20 74  ller to format t
25ac0 68 65 20 73 74 72 69 6e 67 2e 0d 0a 23 69 66 20  he string...#if 
25ad0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25ae0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25af0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25b00 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25b10 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25b20 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25b30 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25b40 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25b50 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25b60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25b70 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
25b80 64 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 53 51  d sqlite3_log(SQ
25b90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45  LiteErrorCode iE
25ba0 72 72 43 6f 64 65 2c 20 62 79 74 65 5b 5d 20 7a  rrCode, byte[] z
25bb0 46 6f 72 6d 61 74 29 3b 0d 0a 0d 0a 23 69 66 20  Format);....#if 
25bc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25bd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25be0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25bf0 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25c00 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25c10 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25c20 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25c30 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25c40 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25c50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25c60 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
25c70 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
25c80 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
25c90 6c 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  l(IntPtr db, byt
25ca0 65 5b 5d 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74  e[] zDbName, int
25cb0 20 6f 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67   op, IntPtr pArg
25cc0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
25cd0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25ce0 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
25cf0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
25d00 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
25d10 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
25d20 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
25d30 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
25d40 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
25d50 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
25d60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
25d70 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73 71  extern IntPtr sq
25d80 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 69 6e 69  lite3_backup_ini
25d90 74 28 49 6e 74 50 74 72 20 64 65 73 74 44 62 2c  t(IntPtr destDb,
25da0 20 62 79 74 65 5b 5d 20 7a 44 65 73 74 4e 61 6d   byte[] zDestNam
25db0 65 2c 20 49 6e 74 50 74 72 20 73 6f 75 72 63 65  e, IntPtr source
25dc0 44 62 2c 20 62 79 74 65 5b 5d 20 7a 53 6f 75 72  Db, byte[] zSour
25dd0 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20  ceName);....#if 
25de0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
25df0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
25e00 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
25e10 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
25e20 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
25e30 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
25e40 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
25e50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
25e60 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
25e70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
25e80 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
25e90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
25ea0 69 74 65 33 5f 62 61 63 6b 75 70 5f 73 74 65 70  ite3_backup_step
25eb0 28 49 6e 74 50 74 72 20 62 61 63 6b 75 70 2c 20  (IntPtr backup, 
25ec0 69 6e 74 20 6e 50 61 67 65 29 3b 0d 0a 0d 0a 23  int nPage);....#
25ed0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25ee0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25ef0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
25f00 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
25f10 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
25f20 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
25f30 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
25f40 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25f50 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
25f60 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
25f70 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
25f80 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  int sqlite3_back
25f90 75 70 5f 72 65 6d 61 69 6e 69 6e 67 28 49 6e 74  up_remaining(Int
25fa0 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  Ptr backup);....
25fb0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
25fc0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
25fd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
25fe0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
25ff0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26000 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26010 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
26020 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26030 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26040 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26050 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26060 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 61 63   int sqlite3_bac
26070 6b 75 70 5f 70 61 67 65 63 6f 75 6e 74 28 49 6e  kup_pagecount(In
26080 74 50 74 72 20 62 61 63 6b 75 70 29 3b 0d 0a 0d  tPtr backup);...
26090 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
260a0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
260b0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
260c0 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
260d0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
260e0 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
260f0 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
26100 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
26110 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
26120 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
26130 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
26140 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
26150 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63  e sqlite3_blob_c
26160 6c 6f 73 65 28 49 6e 74 50 74 72 20 62 6c 6f 62  lose(IntPtr blob
26170 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26180 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26190 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
261a0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
261b0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
261c0 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
261d0 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
261e0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
261f0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
26200 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
26210 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26220 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
26230 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73 28 49 6e  e3_blob_bytes(In
26240 74 50 74 72 20 62 6c 6f 62 29 3b 0d 0a 0d 0a 23  tPtr blob);....#
26250 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
26260 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
26270 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
26280 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
26290 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
262a0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
262b0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
262c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
262d0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
262e0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
262f0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
26300 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
26310 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65  sqlite3_blob_ope
26320 6e 28 49 6e 74 50 74 72 20 64 62 2c 20 62 79 74  n(IntPtr db, byt
26330 65 5b 5d 20 64 62 4e 61 6d 65 2c 20 62 79 74 65  e[] dbName, byte
26340 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 62 79 74 65  [] tblName, byte
26350 5b 5d 20 63 6f 6c 4e 61 6d 65 2c 20 6c 6f 6e 67  [] colName, long
26360 20 72 6f 77 49 64 2c 20 69 6e 74 20 66 6c 61 67   rowId, int flag
26370 73 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70 74  s, ref IntPtr pt
26380 72 42 6c 6f 62 29 3b 0d 0a 0d 0a 23 69 66 20 21  rBlob);....#if !
26390 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
263a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
263b0 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
263c0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
263d0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
263e0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
263f0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
26400 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
26410 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
26420 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
26430 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
26440 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
26450 74 65 33 5f 62 6c 6f 62 5f 72 65 61 64 28 49 6e  te3_blob_read(In
26460 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73  tPtr blob, [Mars
26470 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54  halAs(UnmanagedT
26480 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62 79  ype.LPArray)] by
26490 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e 74  te[] buffer, int
264a0 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73   count, int offs
264b0 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
264c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
264d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
264e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
264f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
26500 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26510 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26520 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26530 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26540 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26550 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26560 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
26570 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
26580 5f 62 6c 6f 62 5f 72 65 6f 70 65 6e 28 49 6e 74  _blob_reopen(Int
26590 50 74 72 20 62 6c 6f 62 2c 20 6c 6f 6e 67 20 72  Ptr blob, long r
265a0 6f 77 49 64 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  owId);....#if !P
265b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
265c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
265d0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
265e0 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
265f0 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
26600 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26610 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
26620 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26630 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
26640 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26650 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
26660 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
26670 65 33 5f 62 6c 6f 62 5f 77 72 69 74 65 28 49 6e  e3_blob_write(In
26680 74 50 74 72 20 62 6c 6f 62 2c 20 5b 4d 61 72 73  tPtr blob, [Mars
26690 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65 64 54  halAs(UnmanagedT
266a0 79 70 65 2e 4c 50 41 72 72 61 79 29 5d 20 62 79  ype.LPArray)] by
266b0 74 65 5b 5d 20 62 75 66 66 65 72 2c 20 69 6e 74  te[] buffer, int
266c0 20 63 6f 75 6e 74 2c 20 69 6e 74 20 6f 66 66 73   count, int offs
266d0 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  et);....#if !PLA
266e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
266f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
26700 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
26710 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
26720 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
26730 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26740 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
26750 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
26760 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
26770 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
26780 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
26790 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
267a0 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 49 6e  _declare_vtab(In
267b0 74 50 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20  tPtr db, IntPtr 
267c0 7a 53 51 4c 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  zSQL);....#if !P
267d0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
267e0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
267f0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
26800 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
26810 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
26820 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
26830 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
26840 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
26850 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
26860 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
26870 74 69 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74  tic extern IntPt
26880 72 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74  r sqlite3_mprint
26890 66 28 49 6e 74 50 74 72 20 66 6f 72 6d 61 74 2c  f(IntPtr format,
268a0 20 5f 5f 61 72 67 6c 69 73 74 29 3b 0d 0a 20 20   __arglist);..  
268b0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
268c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26910 0a 0d 0a 20 20 20 20 2f 2f 20 53 51 4c 69 74 65  ...    // SQLite
26920 20 41 50 49 20 63 61 6c 6c 73 20 74 68 61 74 20   API calls that 
26930 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  are provided by 
26940 22 77 65 6c 6c 2d 6b 6e 6f 77 6e 22 20 65 78 74  "well-known" ext
26950 65 6e 73 69 6f 6e 73 20 74 68 61 74 20 6d 61 79  ensions that may
26960 20 62 65 20 73 74 61 74 69 63 61 6c 6c 79 0d 0a   be statically..
26970 20 20 20 20 2f 2f 20 6c 69 6e 6b 65 64 20 77 69      // linked wi
26980 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
26990 72 65 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72  re native librar
269a0 79 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75  y currently in u
269b0 73 65 2e 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  se...    #region
269c0 20 65 78 74 65 6e 73 69 6f 6e 20 73 71 6c 69 74   extension sqlit
269d0 65 20 61 70 69 20 63 61 6c 6c 73 0d 0a 20 20 20  e api calls..   
269e0 20 23 72 65 67 69 6f 6e 20 76 69 72 74 75 61 6c   #region virtual
269f0 20 74 61 62 6c 65 0d 0a 23 69 66 20 49 4e 54 45   table..#if INTE
26a00 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c  ROP_VIRTUAL_TABL
26a10 45 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  E..#if !PLATFORM
26a20 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
26a30 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
26a40 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
26a50 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
26a60 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
26a70 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
26a80 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
26a90 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
26aa0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
26ab0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
26ac0 65 72 6e 20 49 6e 74 50 74 72 20 73 71 6c 69 74  ern IntPtr sqlit
26ad0 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
26ae0 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 49 6e 74 50  able_module(IntP
26af0 74 72 20 64 62 2c 20 49 6e 74 50 74 72 20 6e 61  tr db, IntPtr na
26b00 6d 65 2c 20 72 65 66 20 73 71 6c 69 74 65 33 5f  me, ref sqlite3_
26b10 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 49  module module, I
26b20 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
26b30 61 2c 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c  a, xDestroyModul
26b40 65 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a  e xDestroy);....
26b50 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
26b60 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
26b70 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
26b80 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
26b90 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
26ba0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
26bb0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
26bc0 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
26bd0 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
26be0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
26bf0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
26c00 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 64 69   void sqlite3_di
26c10 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 49 6e 74  spose_module(Int
26c20 50 74 72 20 70 4d 6f 64 75 6c 65 29 3b 0d 0a 23  Ptr pModule);..#
26c30 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64 72  endif..    #endr
26c40 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
26c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
26ca0 23 72 65 67 69 6f 6e 20 73 65 73 73 69 6f 6e 20  #region session 
26cb0 65 78 74 65 6e 73 69 6f 6e 0d 0a 23 69 66 20 49  extension..#if I
26cc0 4e 54 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45  NTEROP_SESSION_E
26cd0 58 54 45 4e 53 49 4f 4e 0d 0a 23 69 66 20 21 50  XTENSION..#if !P
26ce0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
26cf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
26d00 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
26d10 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
26d20 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
26d30 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
26d40 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
26d50 20 69 6e 74 20 78 53 65 73 73 69 6f 6e 46 69 6c   int xSessionFil
26d60 74 65 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ter(IntPtr conte
26d70 78 74 2c 20 49 6e 74 50 74 72 20 70 54 62 6c 4e  xt, IntPtr pTblN
26d80 61 6d 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ame);....#if !PL
26d90 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
26da0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e  AMEWORK..    [Un
26db0 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50  managedFunctionP
26dc0 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f  ointer(CallingCo
26dd0 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
26de0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
26df0 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65 20  ternal delegate 
26e00 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43  SQLiteChangeSetC
26e10 6f 6e 66 6c 69 63 74 52 65 73 75 6c 74 20 78 53  onflictResult xS
26e20 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 28 49  essionConflict(I
26e30 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53  ntPtr context, S
26e40 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f  QLiteChangeSetCo
26e50 6e 66 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c  nflictType type,
26e60 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72   IntPtr iterator
26e70 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
26e80 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26e90 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
26ea0 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
26eb0 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
26ec0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
26ed0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
26ee0 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 53 51 4c  nal delegate SQL
26ef0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 65  iteErrorCode xSe
26f00 73 73 69 6f 6e 49 6e 70 75 74 28 49 6e 74 50 74  ssionInput(IntPt
26f10 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 50 74  r context, IntPt
26f20 72 20 70 44 61 74 61 2c 20 72 65 66 20 69 6e 74  r pData, ref int
26f30 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20   nData);....#if 
26f40 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
26f50 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
26f60 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
26f70 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
26f80 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
26f90 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
26fa0 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61   internal delega
26fb0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
26fc0 64 65 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  de xSessionOutpu
26fd0 74 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  t(IntPtr context
26fe0 2c 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 20  , IntPtr pData, 
26ff0 69 6e 74 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20  int nData);.... 
27000 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27050 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
27060 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
27070 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
27080 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
27090 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
270a0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
270b0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
270c0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
270d0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
270e0 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
270f0 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
27100 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
27110 64 65 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f  de sqlite3sessio
27120 6e 5f 63 72 65 61 74 65 28 49 6e 74 50 74 72 20  n_create(IntPtr 
27130 64 62 2c 20 62 79 74 65 5b 5d 20 64 62 4e 61 6d  db, byte[] dbNam
27140 65 2c 20 72 65 66 20 49 6e 74 50 74 72 20 73 65  e, ref IntPtr se
27150 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
27160 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27170 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27180 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27190 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
271a0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
271b0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
271c0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
271d0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
271e0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
271f0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27200 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64  atic extern void
27210 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
27220 64 65 6c 65 74 65 28 49 6e 74 50 74 72 20 73 65  delete(IntPtr se
27230 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
27240 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27250 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27260 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27270 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27280 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27290 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
272a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
272b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
272c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
272d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
272e0 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
272f0 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 65  sqlite3session_e
27300 6e 61 62 6c 65 28 49 6e 74 50 74 72 20 73 65 73  nable(IntPtr ses
27310 73 69 6f 6e 2c 20 69 6e 74 20 65 6e 61 62 6c 65  sion, int enable
27320 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
27330 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27340 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
27350 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
27360 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
27370 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
27380 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
27390 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
273a0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
273b0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
273c0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
273d0 65 78 74 65 72 6e 20 69 6e 74 20 73 71 6c 69 74  extern int sqlit
273e0 65 33 73 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65  e3session_indire
273f0 63 74 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f  ct(IntPtr sessio
27400 6e 2c 20 69 6e 74 20 69 6e 64 69 72 65 63 74 29  n, int indirect)
27410 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
27420 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27430 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
27440 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
27450 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
27460 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
27470 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
27480 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
27490 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
274a0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
274b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
274c0 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
274d0 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
274e0 73 69 6f 6e 5f 61 74 74 61 63 68 28 49 6e 74 50  sion_attach(IntP
274f0 74 72 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65  tr session, byte
27500 5b 5d 20 74 62 6c 4e 61 6d 65 29 3b 0d 0a 0d 0a  [] tblName);....
27510 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27520 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27530 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27540 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
27550 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
27560 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
27570 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
27580 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
27590 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
275a0 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
275b0 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
275c0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 73 65 73   void sqlite3ses
275d0 73 69 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65  sion_table_filte
275e0 72 28 49 6e 74 50 74 72 20 73 65 73 73 69 6f 6e  r(IntPtr session
275f0 2c 20 78 53 65 73 73 69 6f 6e 46 69 6c 74 65 72  , xSessionFilter
27600 20 78 46 69 6c 74 65 72 2c 20 49 6e 74 50 74 72   xFilter, IntPtr
27610 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 23 69   context);....#i
27620 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
27630 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
27640 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
27650 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
27660 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
27670 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
27680 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
27690 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
276a0 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
276b0 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
276c0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
276d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
276e0 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68  qlite3session_ch
276f0 61 6e 67 65 73 65 74 28 49 6e 74 50 74 72 20 73  angeset(IntPtr s
27700 65 73 73 69 6f 6e 2c 20 72 65 66 20 69 6e 74 20  ession, ref int 
27710 6e 43 68 61 6e 67 65 53 65 74 2c 20 72 65 66 20  nChangeSet, ref 
27720 49 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65  IntPtr pChangeSe
27730 74 29 3b 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  t);...#if !PLATF
27740 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
27750 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
27760 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
27770 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
27780 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
27790 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
277a0 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
277b0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
277c0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
277d0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
277e0 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
277f0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65  orCode sqlite3se
27800 73 73 69 6f 6e 5f 64 69 66 66 28 49 6e 74 50 74  ssion_diff(IntPt
27810 72 20 73 65 73 73 69 6f 6e 2c 20 62 79 74 65 5b  r session, byte[
27820 5d 20 66 72 6f 6d 44 62 4e 61 6d 65 2c 20 62 79  ] fromDbName, by
27830 74 65 5b 5d 20 74 62 6c 4e 61 6d 65 2c 20 72 65  te[] tblName, re
27840 66 20 49 6e 74 50 74 72 20 65 72 72 4d 73 67 29  f IntPtr errMsg)
27850 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
27860 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
27870 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ORK..    [DllImp
27880 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20  ort(SQLITE_DLL, 
27890 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
278a0 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  n = CallingConve
278b0 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
278c0 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  else..    [DllIm
278d0 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29  port(SQLITE_DLL)
278e0 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
278f0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
27900 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  xtern SQLiteErro
27910 72 43 6f 64 65 20 73 71 6c 69 74 65 33 73 65 73  rCode sqlite3ses
27920 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 28 49 6e  sion_patchset(In
27930 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 72 65  tPtr session, re
27940 66 20 69 6e 74 20 6e 50 61 74 63 68 53 65 74 2c  f int nPatchSet,
27950 20 72 65 66 20 49 6e 74 50 74 72 20 70 50 61 74   ref IntPtr pPat
27960 63 68 53 65 74 29 3b 0d 0a 0d 0a 23 69 66 20 21  chSet);....#if !
27970 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27980 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27990 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
279a0 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
279b0 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
279c0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
279d0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
279e0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
279f0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27a00 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27a10 61 74 69 63 20 65 78 74 65 72 6e 20 69 6e 74 20  atic extern int 
27a20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
27a30 73 65 6d 70 74 79 28 49 6e 74 50 74 72 20 73 65  sempty(IntPtr se
27a40 73 73 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ssion);....#if !
27a50 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
27a60 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
27a70 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27a80 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
27a90 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
27aa0 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
27ab0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
27ac0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
27ad0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
27ae0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
27af0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
27b00 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
27b10 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61  te3changeset_sta
27b20 72 74 28 72 65 66 20 49 6e 74 50 74 72 20 69 74  rt(ref IntPtr it
27b30 65 72 61 74 6f 72 2c 20 69 6e 74 20 6e 43 68 61  erator, int nCha
27b40 6e 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70  ngeSet, IntPtr p
27b50 43 68 61 6e 67 65 53 65 74 29 3b 0d 0a 0d 0a 23  ChangeSet);....#
27b60 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27b70 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27b80 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
27b90 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
27ba0 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
27bb0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
27bc0 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
27bd0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
27be0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
27bf0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
27c00 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
27c10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27c20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
27c30 5f 73 74 61 72 74 5f 76 32 28 72 65 66 20 49 6e  _start_v2(ref In
27c40 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 69  tPtr iterator, i
27c50 6e 74 20 6e 43 68 61 6e 67 65 53 65 74 2c 20 49  nt nChangeSet, I
27c60 6e 74 50 74 72 20 70 43 68 61 6e 67 65 53 65 74  ntPtr pChangeSet
27c70 2c 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  , SQLiteChangeSe
27c80 74 53 74 61 72 74 46 6c 61 67 73 20 66 6c 61 67  tStartFlags flag
27c90 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  s);....#if !PLAT
27ca0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
27cb0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49  EWORK..    [DllI
27cc0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
27cd0 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  , CallingConvent
27ce0 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e  ion = CallingCon
27cf0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
27d00 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c  .#else..    [Dll
27d10 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
27d20 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  L)]..#endif..   
27d30 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
27d40 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72   extern SQLiteEr
27d50 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63  rorCode sqlite3c
27d60 68 61 6e 67 65 73 65 74 5f 6e 65 78 74 28 49 6e  hangeset_next(In
27d70 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 3b 0d  tPtr iterator);.
27d80 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
27d90 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27da0 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
27db0 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
27dc0 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
27dd0 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
27de0 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
27df0 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
27e00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
27e10 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
27e20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
27e30 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
27e40 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
27e50 65 73 65 74 5f 6f 70 28 49 6e 74 50 74 72 20 69  eset_op(IntPtr i
27e60 74 65 72 61 74 6f 72 2c 20 72 65 66 20 49 6e 74  terator, ref Int
27e70 50 74 72 20 70 54 62 6c 4e 61 6d 65 2c 20 72 65  Ptr pTblName, re
27e80 66 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e 73 2c 20  f int nColumns, 
27e90 72 65 66 20 53 51 4c 69 74 65 41 75 74 68 6f 72  ref SQLiteAuthor
27ea0 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 20 6f  izerActionCode o
27eb0 70 2c 20 72 65 66 20 69 6e 74 20 62 49 6e 64 69  p, ref int bIndi
27ec0 72 65 63 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  rect);....#if !P
27ed0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
27ee0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44  RAMEWORK..    [D
27ef0 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
27f00 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  DLL, CallingConv
27f10 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67  ention = Calling
27f20 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
27f30 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
27f40 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
27f50 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  _DLL)]..#endif..
27f60 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
27f70 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
27f80 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
27f90 65 33 63 68 61 6e 67 65 73 65 74 5f 70 6b 28 49  e3changeset_pk(I
27fa0 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20  ntPtr iterator, 
27fb0 72 65 66 20 49 6e 74 50 74 72 20 70 50 72 69 6d  ref IntPtr pPrim
27fc0 61 72 79 4b 65 79 73 2c 20 72 65 66 20 69 6e 74  aryKeys, ref int
27fd0 20 6e 43 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 23   nColumns);....#
27fe0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27ff0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28000 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28010 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
28020 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28030 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28040 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
28050 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
28060 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
28070 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
28080 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
28090 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
280a0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
280b0 5f 6f 6c 64 28 49 6e 74 50 74 72 20 69 74 65 72  _old(IntPtr iter
280c0 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e  ator, int column
280d0 49 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74  Index, ref IntPt
280e0 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69  r pValue);....#i
280f0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
28100 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
28110 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
28120 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67  ITE_DLL, Calling
28130 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c  Convention = Cal
28140 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
28150 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20  decl)]..#else.. 
28160 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28170 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64  LITE_DLL)]..#end
28180 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  if..    internal
28190 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53   static extern S
281a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73  QLiteErrorCode s
281b0 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
281c0 6e 65 77 28 49 6e 74 50 74 72 20 69 74 65 72 61  new(IntPtr itera
281d0 74 6f 72 2c 20 69 6e 74 20 63 6f 6c 75 6d 6e 49  tor, int columnI
281e0 6e 64 65 78 2c 20 72 65 66 20 49 6e 74 50 74 72  ndex, ref IntPtr
281f0 20 70 56 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66   pValue);....#if
28200 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
28210 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
28220 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28230 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43  TE_DLL, CallingC
28240 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c  onvention = Call
28250 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
28260 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20  ecl)]..#else..  
28270 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
28280 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69  ITE_DLL)]..#endi
28290 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  f..    internal 
282a0 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51  static extern SQ
282b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71  LiteErrorCode sq
282c0 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 63  lite3changeset_c
282d0 6f 6e 66 6c 69 63 74 28 49 6e 74 50 74 72 20 69  onflict(IntPtr i
282e0 74 65 72 61 74 6f 72 2c 20 69 6e 74 20 63 6f 6c  terator, int col
282f0 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 49 6e  umnIndex, ref In
28300 74 50 74 72 20 70 56 61 6c 75 65 29 3b 0d 0a 0d  tPtr pValue);...
28310 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
28320 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
28330 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
28340 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c  SQLITE_DLL, Call
28350 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20  ingConvention = 
28360 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
28370 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65  n.Cdecl)]..#else
28380 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
28390 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23  (SQLITE_DLL)]..#
283a0 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72  endif..    inter
283b0 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72  nal static exter
283c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
283d0 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73  e sqlite3changes
283e0 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69 63 74 73 28  et_fk_conflicts(
283f0 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 2c  IntPtr iterator,
28400 20 72 65 66 20 69 6e 74 20 63 6f 6e 66 6c 69 63   ref int conflic
28410 74 73 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ts);....#if !PLA
28420 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28430 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28440 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28450 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28460 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28470 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28480 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28490 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
284a0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
284b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
284c0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
284d0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
284e0 63 68 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c 69  changeset_finali
284f0 7a 65 28 49 6e 74 50 74 72 20 69 74 65 72 61 74  ze(IntPtr iterat
28500 6f 72 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  or);....#if !PLA
28510 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28520 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28530 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28540 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28550 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28560 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
28570 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
28580 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28590 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
285a0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
285b0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
285c0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
285d0 63 68 61 6e 67 65 73 65 74 5f 69 6e 76 65 72 74  changeset_invert
285e0 28 69 6e 74 20 6e 49 6e 2c 20 49 6e 74 50 74 72  (int nIn, IntPtr
285f0 20 70 49 6e 2c 20 72 65 66 20 69 6e 74 20 6e 4f   pIn, ref int nO
28600 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72 20 70  ut, ref IntPtr p
28610 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  Out);....#if !PL
28620 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28630 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c  AMEWORK..    [Dl
28640 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
28650 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  LL, CallingConve
28660 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43  ntion = CallingC
28670 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
28680 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44  ]..#else..    [D
28690 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f  llImport(SQLITE_
286a0 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  DLL)]..#endif.. 
286b0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
286c0 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65  ic extern SQLite
286d0 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65  ErrorCode sqlite
286e0 33 63 68 61 6e 67 65 73 65 74 5f 63 6f 6e 63 61  3changeset_conca
286f0 74 28 69 6e 74 20 6e 41 2c 20 49 6e 74 50 74 72  t(int nA, IntPtr
28700 20 70 41 2c 20 69 6e 74 20 6e 42 2c 20 49 6e 74   pA, int nB, Int
28710 50 74 72 20 70 42 2c 20 72 65 66 20 69 6e 74 20  Ptr pB, ref int 
28720 6e 4f 75 74 2c 20 72 65 66 20 49 6e 74 50 74 72  nOut, ref IntPtr
28730 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21   pOut);....#if !
28740 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
28750 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
28760 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45  DllImport(SQLITE
28770 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e  _DLL, CallingCon
28780 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e  vention = Callin
28790 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
287a0 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  l)]..#else..    
287b0 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
287c0 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d  E_DLL)]..#endif.
287d0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
287e0 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69  atic extern SQLi
287f0 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69  teErrorCode sqli
28800 74 65 33 63 68 61 6e 67 65 67 72 6f 75 70 5f 6e  te3changegroup_n
28810 65 77 28 72 65 66 20 49 6e 74 50 74 72 20 63 68  ew(ref IntPtr ch
28820 61 6e 67 65 47 72 6f 75 70 29 3b 0d 0a 0d 0a 23  angeGroup);....#
28830 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
28840 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
28850 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
28860 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
28870 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
28880 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
28890 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
288a0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
288b0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
288c0 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
288d0 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
288e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
288f0 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
28900 75 70 5f 61 64 64 28 49 6e 74 50 74 72 20 63 68  up_add(IntPtr ch
28910 61 6e 67 65 47 72 6f 75 70 2c 20 69 6e 74 20 6e  angeGroup, int n
28920 44 61 74 61 2c 20 49 6e 74 50 74 72 20 70 44 61  Data, IntPtr pDa
28930 74 61 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ta);....#if !PLA
28940 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
28950 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
28960 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
28970 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
28980 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
28990 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
289a0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
289b0 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
289c0 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
289d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
289e0 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
289f0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
28a00 63 68 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70  changegroup_outp
28a10 75 74 28 49 6e 74 50 74 72 20 63 68 61 6e 67 65  ut(IntPtr change
28a20 47 72 6f 75 70 2c 20 72 65 66 20 69 6e 74 20 6e  Group, ref int n
28a30 44 61 74 61 2c 20 72 65 66 20 49 6e 74 50 74 72  Data, ref IntPtr
28a40 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 23 69 66 20   pData);....#if 
28a50 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28a60 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28a70 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
28a80 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
28a90 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
28aa0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
28ab0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
28ac0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
28ad0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
28ae0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28af0 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
28b00 64 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67  d sqlite3changeg
28b10 72 6f 75 70 5f 64 65 6c 65 74 65 28 49 6e 74 50  roup_delete(IntP
28b20 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 29 3b  tr changeGroup);
28b30 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28b40 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28b50 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28b60 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28b70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28b80 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28b90 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28ba0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28bb0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28bc0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28bd0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28be0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28bf0 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28c00 67 65 73 65 74 5f 61 70 70 6c 79 28 49 6e 74 50  geset_apply(IntP
28c10 74 72 20 64 62 2c 20 69 6e 74 20 6e 43 68 61 6e  tr db, int nChan
28c20 67 65 53 65 74 2c 20 49 6e 74 50 74 72 20 70 43  geSet, IntPtr pC
28c30 68 61 6e 67 65 53 65 74 2c 20 78 53 65 73 73 69  hangeSet, xSessi
28c40 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74 65 72  onFilter xFilter
28c50 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c 69  , xSessionConfli
28c60 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20 49 6e  ct xConflict, In
28c70 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
28c80 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
28c90 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
28ca0 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
28cb0 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c  (SQLITE_DLL, Cal
28cc0 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d  lingConvention =
28cd0 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
28ce0 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73  on.Cdecl)]..#els
28cf0 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  e..    [DllImpor
28d00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
28d10 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65  #endif..    inte
28d20 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74 65  rnal static exte
28d30 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
28d40 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67 65  de sqlite3change
28d50 73 65 74 5f 61 70 70 6c 79 5f 73 74 72 6d 28 49  set_apply_strm(I
28d60 6e 74 50 74 72 20 64 62 2c 20 78 53 65 73 73 69  ntPtr db, xSessi
28d70 6f 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20  onInput xInput, 
28d80 49 6e 74 50 74 72 20 70 49 6e 2c 20 78 53 65 73  IntPtr pIn, xSes
28d90 73 69 6f 6e 46 69 6c 74 65 72 20 78 46 69 6c 74  sionFilter xFilt
28da0 65 72 2c 20 78 53 65 73 73 69 6f 6e 43 6f 6e 66  er, xSessionConf
28db0 6c 69 63 74 20 78 43 6f 6e 66 6c 69 63 74 2c 20  lict xConflict, 
28dc0 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b  IntPtr context);
28dd0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
28de0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28df0 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
28e00 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
28e10 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
28e20 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
28e30 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
28e40 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
28e50 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
28e60 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
28e70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
28e80 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
28e90 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
28ea0 67 65 73 65 74 5f 63 6f 6e 63 61 74 5f 73 74 72  geset_concat_str
28eb0 6d 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20  m(xSessionInput 
28ec0 78 49 6e 70 75 74 41 2c 20 49 6e 74 50 74 72 20  xInputA, IntPtr 
28ed0 70 49 6e 41 2c 20 78 53 65 73 73 69 6f 6e 49 6e  pInA, xSessionIn
28ee0 70 75 74 20 78 49 6e 70 75 74 42 2c 20 49 6e 74  put xInputB, Int
28ef0 50 74 72 20 70 49 6e 42 2c 20 78 53 65 73 73 69  Ptr pInB, xSessi
28f00 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
28f10 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
28f20 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
28f30 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
28f40 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  K..    [DllImpor
28f50 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61  t(SQLITE_DLL, Ca
28f60 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
28f70 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
28f80 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c  ion.Cdecl)]..#el
28f90 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  se..    [DllImpo
28fa0 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d  rt(SQLITE_DLL)].
28fb0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74  .#endif..    int
28fc0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
28fd0 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ern SQLiteErrorC
28fe0 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e 67  ode sqlite3chang
28ff0 65 73 65 74 5f 69 6e 76 65 72 74 5f 73 74 72 6d  eset_invert_strm
29000 28 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78  (xSessionInput x
29010 49 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49  Input, IntPtr pI
29020 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75 74 70 75  n, xSessionOutpu
29030 74 20 78 4f 75 74 70 75 74 2c 20 49 6e 74 50 74  t xOutput, IntPt
29040 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23 69 66 20  r pOut);....#if 
29050 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
29060 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29070 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54  [DllImport(SQLIT
29080 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f  E_DLL, CallingCo
29090 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61 6c 6c 69  nvention = Calli
290a0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65  ngConvention.Cde
290b0 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  cl)]..#else..   
290c0 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
290d0 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66  TE_DLL)]..#endif
290e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
290f0 74 61 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c  tatic extern SQL
29100 69 74 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c  iteErrorCode sql
29110 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 73 74  ite3changeset_st
29120 61 72 74 5f 73 74 72 6d 28 72 65 66 20 49 6e 74  art_strm(ref Int
29130 50 74 72 20 69 74 65 72 61 74 6f 72 2c 20 78 53  Ptr iterator, xS
29140 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49 6e 70  essionInput xInp
29150 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e 29 3b  ut, IntPtr pIn);
29160 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
29170 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29180 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f  RK..    [DllImpo
29190 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 43  rt(SQLITE_DLL, C
291a0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
291b0 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e   = CallingConven
291c0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
291d0 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  lse..    [DllImp
291e0 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
291f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69 6e  ..#endif..    in
29200 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29210 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29220 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68 61 6e  Code sqlite3chan
29230 67 65 73 65 74 5f 73 74 61 72 74 5f 76 32 5f 73  geset_start_v2_s
29240 74 72 6d 28 72 65 66 20 49 6e 74 50 74 72 20 69  trm(ref IntPtr i
29250 74 65 72 61 74 6f 72 2c 20 78 53 65 73 73 69 6f  terator, xSessio
29260 6e 49 6e 70 75 74 20 78 49 6e 70 75 74 2c 20 49  nInput xInput, I
29270 6e 74 50 74 72 20 70 49 6e 2c 20 53 51 4c 69 74  ntPtr pIn, SQLit
29280 65 43 68 61 6e 67 65 53 65 74 53 74 61 72 74 46  eChangeSetStartF
29290 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a  lags flags);....
292a0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
292b0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
292c0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
292d0 51 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69  QLITE_DLL, Calli
292e0 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
292f0 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
29300 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d  .Cdecl)]..#else.
29310 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29320 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65  SQLITE_DLL)]..#e
29330 6e 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ndif..    intern
29340 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
29350 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29360 20 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f   sqlite3session_
29370 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 28 49  changeset_strm(I
29380 6e 74 50 74 72 20 73 65 73 73 69 6f 6e 2c 20 78  ntPtr session, x
29390 53 65 73 73 69 6f 6e 4f 75 74 70 75 74 20 78 4f  SessionOutput xO
293a0 75 74 70 75 74 2c 20 49 6e 74 50 74 72 20 70 4f  utput, IntPtr pO
293b0 75 74 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ut);....#if !PLA
293c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
293d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c  MEWORK..    [Dll
293e0 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c  Import(SQLITE_DL
293f0 4c 2c 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  L, CallingConven
29400 74 69 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f  tion = CallingCo
29410 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d  nvention.Cdecl)]
29420 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c  ..#else..    [Dl
29430 6c 49 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44  lImport(SQLITE_D
29440 4c 4c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  LL)]..#endif..  
29450 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29460 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
29470 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
29480 73 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74  session_patchset
29490 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 73 65 73  _strm(IntPtr ses
294a0 73 69 6f 6e 2c 20 78 53 65 73 73 69 6f 6e 4f 75  sion, xSessionOu
294b0 74 70 75 74 20 78 4f 75 74 70 75 74 2c 20 49 6e  tput xOutput, In
294c0 74 50 74 72 20 70 4f 75 74 29 3b 0d 0a 0d 0a 23  tPtr pOut);....#
294d0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
294e0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
294f0 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29500 4c 49 54 45 5f 44 4c 4c 2c 20 43 61 6c 6c 69 6e  LITE_DLL, Callin
29510 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43 61  gConvention = Ca
29520 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
29530 43 64 65 63 6c 29 5d 0d 0a 23 65 6c 73 65 0d 0a  Cdecl)]..#else..
29540 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
29550 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 23 65 6e  QLITE_DLL)]..#en
29560 64 69 66 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  dif..    interna
29570 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
29580 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29590 73 71 6c 69 74 65 33 63 68 61 6e 67 65 67 72 6f  sqlite3changegro
295a0 75 70 5f 61 64 64 5f 73 74 72 6d 28 49 6e 74 50  up_add_strm(IntP
295b0 74 72 20 63 68 61 6e 67 65 47 72 6f 75 70 2c 20  tr changeGroup, 
295c0 78 53 65 73 73 69 6f 6e 49 6e 70 75 74 20 78 49  xSessionInput xI
295d0 6e 70 75 74 2c 20 49 6e 74 50 74 72 20 70 49 6e  nput, IntPtr pIn
295e0 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
295f0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29600 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d  WORK..    [DllIm
29610 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 2c  port(SQLITE_DLL,
29620 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69   CallingConventi
29630 6f 6e 20 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76  on = CallingConv
29640 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
29650 23 65 6c 73 65 0d 0a 20 20 20 20 5b 44 6c 6c 49  #else..    [DllI
29660 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29670 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
29680 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29690 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72  extern SQLiteErr
296a0 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33 63 68  orCode sqlite3ch
296b0 61 6e 67 65 67 72 6f 75 70 5f 6f 75 74 70 75 74  angegroup_output
296c0 5f 73 74 72 6d 28 49 6e 74 50 74 72 20 63 68 61  _strm(IntPtr cha
296d0 6e 67 65 47 72 6f 75 70 2c 20 78 53 65 73 73 69  ngeGroup, xSessi
296e0 6f 6e 4f 75 74 70 75 74 20 78 4f 75 74 70 75 74  onOutput xOutput
296f0 2c 20 49 6e 74 50 74 72 20 70 4f 75 74 29 3b 0d  , IntPtr pOut);.
29700 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e  .#endif..    #en
29710 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 23 65 6e  dregion..    #en
29720 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
29730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
29780 20 20 23 72 65 67 69 6f 6e 20 73 71 6c 69 74 65    #region sqlite
29790 20 69 6e 74 65 72 6f 70 20 61 70 69 20 63 61 6c   interop api cal
297a0 6c 73 20 28 2e 4e 45 54 20 43 6f 6d 70 61 63 74  ls (.NET Compact
297b0 20 46 72 61 6d 65 77 6f 72 6b 20 6f 6e 6c 79 29   Framework only)
297c0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
297d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 20  OMPACTFRAMEWORK 
297e0 26 26 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  && !SQLITE_STAND
297f0 41 52 44 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70  ARD..    [DllImp
29800 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d  ort(SQLITE_DLL)]
29810 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
29820 74 61 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69  tatic extern voi
29830 64 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  d sqlite3_last_i
29840 6e 73 65 72 74 5f 72 6f 77 69 64 5f 69 6e 74 65  nsert_rowid_inte
29850 72 6f 70 28 49 6e 74 50 74 72 20 64 62 2c 20 72  rop(IntPtr db, r
29860 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 29 3b 0d  ef long rowId);.
29870 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
29880 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
29890 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
298a0 74 69 63 20 65 78 74 65 72 6e 20 76 6f 69 64 20  tic extern void 
298b0 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
298c0 73 65 64 5f 69 6e 74 65 72 6f 70 28 72 65 66 20  sed_interop(ref 
298d0 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d 0a  long bytes);....
298e0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
298f0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
29900 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29910 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
29920 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
29930 77 61 74 65 72 5f 69 6e 74 65 72 6f 70 28 69 6e  water_interop(in
29940 74 20 72 65 73 65 74 46 6c 61 67 2c 20 72 65 66  t resetFlag, ref
29950 20 6c 6f 6e 67 20 62 79 74 65 73 29 3b 0d 0a 0d   long bytes);...
29960 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
29970 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20  SQLITE_DLL)]..  
29980 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
29990 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74 65 45  c extern SQLiteE
299a0 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74 65 33  rrorCode sqlite3
299b0 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 5f 69 6e 74  _bind_double_int
299c0 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d 74  erop(IntPtr stmt
299d0 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65 66  , int index, ref
299e0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d   double value);.
299f0 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72  ...    [DllImpor
29a00 74 28 53 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a  t(SQLITE_DLL)]..
29a10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
29a20 74 69 63 20 65 78 74 65 72 6e 20 53 51 4c 69 74  tic extern SQLit
29a30 65 45 72 72 6f 72 43 6f 64 65 20 73 71 6c 69 74  eErrorCode sqlit
29a40 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
29a50 74 65 72 6f 70 28 49 6e 74 50 74 72 20 73 74 6d  terop(IntPtr stm
29a60 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72 65  t, int index, re
29a70 66 20 6c 6f 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  f long value);..
29a80 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
29a90 28 53 51 4c 49 54 45 5f 44 4c 4c 2c 20 45 6e 74  (SQLITE_DLL, Ent
29aa0 72 79 50 6f 69 6e 74 20 3d 20 22 73 71 6c 69 74  ryPoint = "sqlit
29ab0 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 5f 69 6e  e3_bind_int64_in
29ac0 74 65 72 6f 70 22 29 5d 0d 0a 20 20 20 20 69 6e  terop")]..    in
29ad0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29ae0 74 65 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  tern SQLiteError
29af0 43 6f 64 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  Code sqlite3_bin
29b00 64 5f 75 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  d_uint64_interop
29b10 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
29b20 74 20 69 6e 64 65 78 2c 20 72 65 66 20 75 6c 6f  t index, ref ulo
29b30 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng value);....  
29b40 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c    [DllImport(SQL
29b50 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69  ITE_DLL)]..    i
29b60 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
29b70 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74  xtern void sqlit
29b80 65 33 5f 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65  e3_column_double
29b90 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20  _interop(IntPtr 
29ba0 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
29bb0 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
29bc0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
29bd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29be0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
29bf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
29c00 6f 69 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  oid sqlite3_colu
29c10 6d 6e 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70  mn_int64_interop
29c20 28 49 6e 74 50 74 72 20 73 74 6d 74 2c 20 69 6e  (IntPtr stmt, in
29c30 74 20 69 6e 64 65 78 2c 20 72 65 66 20 6c 6f 6e  t index, ref lon
29c40 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  g value);....   
29c50 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51 4c 49   [DllImport(SQLI
29c60 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20 69 6e  TE_DLL)]..    in
29c70 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78  ternal static ex
29c80 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69 74 65  tern void sqlite
29c90 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69  3_value_double_i
29ca0 6e 74 65 72 6f 70 28 49 6e 74 50 74 72 20 70 2c  nterop(IntPtr p,
29cb0 20 72 65 66 20 64 6f 75 62 6c 65 20 76 61 6c 75   ref double valu
29cc0 65 29 3b 0d 0a 0d 0a 20 20 20 20 5b 44 6c 6c 49  e);....    [DllI
29cd0 6d 70 6f 72 74 28 53 51 4c 49 54 45 5f 44 4c 4c  mport(SQLITE_DLL
29ce0 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  )]..    internal
29cf0 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20 76   static extern v
29d00 6f 69 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  oid sqlite3_valu
29d10 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  e_int64_interop(
29d20 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20 49 6e  IntPtr p, ref In
29d30 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
29d40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29d50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
29d60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29d70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
29d80 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
29d90 65 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  e_interop(IntPtr
29da0 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 64 6f   context, ref do
29db0 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  uble value);....
29dc0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
29dd0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
29de0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29df0 20 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c   extern void sql
29e00 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
29e10 34 5f 69 6e 74 65 72 6f 70 28 49 6e 74 50 74 72  4_interop(IntPtr
29e20 20 63 6f 6e 74 65 78 74 2c 20 72 65 66 20 49 6e   context, ref In
29e30 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  t64 value);.... 
29e40 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53 51     [DllImport(SQ
29e50 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20 20  LITE_DLL)]..    
29e60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
29e70 65 78 74 65 72 6e 20 76 6f 69 64 20 73 71 6c 69  extern void sqli
29e80 74 65 33 5f 6d 73 69 7a 65 5f 69 6e 74 65 72 6f  te3_msize_intero
29e90 70 28 49 6e 74 50 74 72 20 70 2c 20 72 65 66 20  p(IntPtr p, ref 
29ea0 75 6c 6f 6e 67 20 73 69 7a 65 29 3b 0d 0a 0d 0a  ulong size);....
29eb0 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 53      [DllImport(S
29ec0 51 4c 49 54 45 5f 44 4c 4c 29 5d 0d 0a 20 20 20  QLITE_DLL)]..   
29ed0 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
29ee0 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 73   extern IntPtr s
29ef0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
29f00 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f  sposable_module_
29f10 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
29f20 20 20 49 6e 74 50 74 72 20 64 62 2c 20 49 6e 74    IntPtr db, Int
29f30 50 74 72 20 6e 61 6d 65 2c 20 49 6e 74 50 74 72  Ptr name, IntPtr
29f40 20 70 4d 6f 64 75 6c 65 2c 20 69 6e 74 20 69 56   pModule, int iV
29f50 65 72 73 69 6f 6e 2c 20 78 43 72 65 61 74 65 20  ersion, xCreate 
29f60 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20  xCreate,..      
29f70 20 20 78 43 6f 6e 6e 65 63 74 20 78 43 6f 6e 6e    xConnect xConn
29f80 65 63 74 2c 20 78 42 65 73 74 49 6e 64 65 78 20  ect, xBestIndex 
29f90 78 42 65 73 74 49 6e 64 65 78 2c 20 78 44 69 73  xBestIndex, xDis
29fa0 63 6f 6e 6e 65 63 74 20 78 44 69 73 63 6f 6e 6e  connect xDisconn
29fb0 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 78 44  ect,..        xD
29fc0 65 73 74 72 6f 79 20 78 44 65 73 74 72 6f 79 2c  estroy xDestroy,
29fd0 20 78 4f 70 65 6e 20 78 4f 70 65 6e 2c 20 78 43   xOpen xOpen, xC
29fe0 6c 6f 73 65 20 78 43 6c 6f 73 65 2c 20 78 46 69  lose xClose, xFi
29ff0 6c 74 65 72 20 78 46 69 6c 74 65 72 2c 0d 0a 20  lter xFilter,.. 
2a000 20 20 20 20 20 20 20 78 4e 65 78 74 20 78 4e 65         xNext xNe
2a010 78 74 2c 20 78 45 6f 66 20 78 45 6f 66 2c 20 78  xt, xEof xEof, x
2a020 43 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 2c 20  Column xColumn, 
2a030 78 52 6f 77 49 64 20 78 52 6f 77 49 64 2c 20 78  xRowId xRowId, x
2a040 55 70 64 61 74 65 20 78 55 70 64 61 74 65 2c 0d  Update xUpdate,.
2a050 0a 20 20 20 20 20 20 20 20 78 42 65 67 69 6e 20  .        xBegin 
2a060 78 42 65 67 69 6e 2c 20 78 53 79 6e 63 20 78 53  xBegin, xSync xS
2a070 79 6e 63 2c 20 78 43 6f 6d 6d 69 74 20 78 43 6f  ync, xCommit xCo
2a080 6d 6d 69 74 2c 20 78 52 6f 6c 6c 62 61 63 6b 20  mmit, xRollback 
2a090 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
2a0a0 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
2a0b0 6e 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c  n xFindFunction,
2a0c0 20 78 52 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65   xRename xRename
2a0d0 2c 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61  , xSavepoint xSa
2a0e0 76 65 70 6f 69 6e 74 2c 0d 0a 20 20 20 20 20 20  vepoint,..      
2a0f0 20 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65    xRelease xRele
2a100 61 73 65 2c 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  ase, xRollbackTo
2a110 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e   xRollbackTo, In
2a120 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
2a130 2c 0d 0a 20 20 20 20 20 20 20 20 78 44 65 73 74  ,..        xDest
2a140 72 6f 79 4d 6f 64 75 6c 65 20 78 44 65 73 74 72  royModule xDestr
2a150 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 23 65 6e 64  oyModule);..#end
2a160 69 66 0d 0a 20 20 20 20 2f 2f 20 50 4c 41 54 46  if..    // PLATF
2a170 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a180 57 4f 52 4b 20 26 26 20 21 53 51 4c 49 54 45 5f  WORK && !SQLITE_
2a190 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 23 65  STANDARD..    #e
2a1a0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a200 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
2a210 65 20 44 65 6c 65 67 61 74 65 73 0d 0a 23 69 66  e Delegates..#if
2a220 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
2a230 5f 54 41 42 4c 45 0d 0a 23 69 66 20 21 50 4c 41  _TABLE..#if !PLA
2a240 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a250 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2a260 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2a270 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2a280 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2a290 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2a2a0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2a2b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72  iteErrorCode xCr
2a2c0 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 49  eate(..        I
2a2d0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
2a2e0 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
2a2f0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 61 72  ..        int ar
2a300 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  gc,..        Int
2a310 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
2a320 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
2a330 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  tab,..        re
2a340 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
2a350 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 23 69  //////////....#i
2a3b0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2a3c0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2a3d0 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2a3e0 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2a3f0 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2a400 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2a410 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2a420 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2a430 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
2a440 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
2a450 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2a460 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
2a470 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
2a480 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2a490 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 49 6e  ..        ref In
2a4a0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2a4b0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
2a4c0 70 45 72 72 6f 72 0d 0a 20 20 20 20 29 3b 0d 0a  pError..    );..
2a4d0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a520 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2a530 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2a540 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2a550 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2a560 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2a570 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2a580 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2a590 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2a5a0 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
2a5b0 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 49  ndex(..        I
2a5c0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2a5d0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
2a5e0 64 65 78 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  dex..    );.... 
2a5f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a640 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2a650 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2a660 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2a670 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2a680 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2a690 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2a6a0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2a6b0 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2a6c0 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
2a6d0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ct(..        Int
2a6e0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 29  Ptr pVtab..    )
2a6f0 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a740 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2a750 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a760 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2a770 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2a780 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2a790 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2a7a0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2a7b0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2a7c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
2a7d0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2a7e0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
2a7f0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2a850 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2a860 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2a870 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2a880 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2a890 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2a8a0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2a8b0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2a8c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a8d0 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
2a8e0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2a8f0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2a900 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29  r pCursor..    )
2a910 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a960 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2a970 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a980 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2a990 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2a9a0 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2a9b0 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2a9c0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2a9d0 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2a9e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
2a9f0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ose(..        In
2aa00 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2aa10 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f  ////////////////
2aa60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21  ///////....#if !
2aa70 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2aa80 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
2aa90 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f  UnmanagedFunctio
2aaa0 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67  nPointer(Calling
2aab0 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c  Convention.Cdecl
2aac0 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
2aad0 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20  public delegate 
2aae0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2aaf0 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2ab00 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2ab10 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ,..        int i
2ab20 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
2ab30 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
2ab40 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2ab50 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2ab60 72 20 61 72 67 76 0d 0a 20 20 20 20 29 3b 0d 0a  r argv..    );..
2ab70 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abc0 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2abd0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2abe0 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2abf0 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2ac00 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2ac10 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2ac20 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2ac30 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74 65   delegate SQLite
2ac40 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
2ac50 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2ac60 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 29 3b   pCursor..    );
2ac70 0d 0a 0d 0a 20 20 20 20 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 2f 2f  ////////////////
2acc0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ///....#if !PLAT
2acd0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ace0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61  EWORK..    [Unma
2acf0 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69  nagedFunctionPoi
2ad00 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76  nter(CallingConv
2ad10 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a  ention.Cdecl)]..
2ad20 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
2ad30 69 63 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20  ic delegate int 
2ad40 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 49  xEof(..        I
2ad50 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
2ad60 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     );....    ///
2ad70 2f 2f 2f 2f 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 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2adc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2add0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2ade0 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69  [UnmanagedFuncti
2adf0 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e  onPointer(Callin
2ae00 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63  gConvention.Cdec
2ae10 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  l)]..#endif..   
2ae20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
2ae30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2ae40 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
2ae50 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2ae60 72 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50  r,..        IntP
2ae70 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
2ae80 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
2ae90 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 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 2f  ////////////////
2aec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2aef0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2af00 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2af10 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2af20 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2af30 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2af40 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2af50 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2af60 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2af70 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
2af80 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2af90 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  or,..        ref
2afa0 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
2afb0 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f   );....    /////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50  //////....#if !P
2b010 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2b020 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55  RAMEWORK..    [U
2b030 6e 6d 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e  nmanagedFunction
2b040 50 6f 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43  Pointer(CallingC
2b050 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29  onvention.Cdecl)
2b060 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
2b070 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53  ublic delegate S
2b080 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2b090 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
2b0a0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2b0b0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2b0c0 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  ,..        IntPt
2b0d0 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
2b0e0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
2b0f0 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
2b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
2b150 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2b160 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b170 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e 63    [UnmanagedFunc
2b180 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c 6c  tionPointer(Call
2b190 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43 64  ingConvention.Cd
2b1a0 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  ecl)]..#endif.. 
2b1b0 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
2b1c0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
2b1d0 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
2b1e0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2b1f0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2b250 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2b260 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2b270 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2b280 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2b290 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2b2a0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2b2b0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2b2c0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2b2d0 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20  ode xSync(..    
2b2e0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2b2f0 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
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 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2b350 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
2b360 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2b370 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75 6e     [UnmanagedFun
2b380 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61 6c  ctionPointer(Cal
2b390 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e 43  lingConvention.C
2b3a0 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  decl)]..#endif..
2b3b0 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67      public deleg
2b3c0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
2b3d0 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ode xCommit(..  
2b3e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2b3f0 61 62 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  ab..    );....  
2b400 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b450 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2b460 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2b470 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2b480 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2b490 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2b4a0 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2b4b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2b4c0 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  egate SQLiteErro
2b4d0 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28  rCode xRollback(
2b4e0 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
2b4f0 20 70 56 74 61 62 0d 0a 20 20 20 20 29 3b 0d 0a   pVtab..    );..
2b500 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  /....#if !PLATFO
2b560 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2b570 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61  ORK..    [Unmana
2b580 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74  gedFunctionPoint
2b590 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e  er(CallingConven
2b5a0 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65  tion.Cdecl)]..#e
2b5b0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2b5c0 20 64 65 6c 65 67 61 74 65 20 69 6e 74 20 78 46   delegate int xF
2b5d0 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
2b5e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2b5f0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ab,..        int
2b600 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20   nArg,..        
2b610 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
2b620 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
2b630 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
2b640 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66  ck,..        ref
2b650 20 49 6e 74 50 74 72 20 70 55 73 65 72 44 61 74   IntPtr pUserDat
2b660 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20  a..    );....   
2b670 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b6c0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2b6d0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b6e0 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46 75      [UnmanagedFu
2b6f0 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43 61  nctionPointer(Ca
2b700 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 2e  llingConvention.
2b710 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66 0d  Cdecl)]..#endif.
2b720 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65  .    public dele
2b730 67 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  gate SQLiteError
2b740 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20  Code xRename(.. 
2b750 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2b760 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 49 6e  tab,..        In
2b770 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 29  tPtr zNew..    )
2b780 3b 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f  ////////////////
2b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7d0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  ////....#if !PLA
2b7e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b7f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d  MEWORK..    [Unm
2b800 61 6e 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f  anagedFunctionPo
2b810 69 6e 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e  inter(CallingCon
2b820 76 65 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d  vention.Cdecl)].
2b830 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2b840 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
2b850 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61  iteErrorCode xSa
2b860 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
2b870 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2b880 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61  .        int iSa
2b890 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 29 3b 0d  vepoint..    );.
2b8a0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8f0 2f 2f 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  //....#if !PLATF
2b900 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2b910 57 4f 52 4b 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e  WORK..    [Unman
2b920 61 67 65 64 46 75 6e 63 74 69 6f 6e 50 6f 69 6e  agedFunctionPoin
2b930 74 65 72 28 43 61 6c 6c 69 6e 67 43 6f 6e 76 65  ter(CallingConve
2b940 6e 74 69 6f 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23  ntion.Cdecl)]..#
2b950 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2b960 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c 69 74  c delegate SQLit
2b970 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65  eErrorCode xRele
2b980 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 49 6e  ase(..        In
2b990 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2b9a0 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
2b9b0 69 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20  int..    );.... 
2b9c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ba10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
2ba20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2ba30 0d 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64  ..    [Unmanaged
2ba40 46 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28  FunctionPointer(
2ba50 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f  CallingConventio
2ba60 6e 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69  n.Cdecl)]..#endi
2ba70 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65  f..    public de
2ba80 6c 65 67 61 74 65 20 53 51 4c 69 74 65 45 72 72  legate SQLiteErr
2ba90 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
2baa0 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  To(..        Int
2bab0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2bac0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
2bad0 6e 74 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20  nt..    );....  
2bae0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2bb30 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2bb40 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2bb50 0a 20 20 20 20 5b 55 6e 6d 61 6e 61 67 65 64 46  .    [UnmanagedF
2bb60 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 28 43  unctionPointer(C
2bb70 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
2bb80 2e 43 64 65 63 6c 29 5d 0d 0a 23 65 6e 64 69 66  .Cdecl)]..#endif
2bb90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 64 65 6c  ..    public del
2bba0 65 67 61 74 65 20 76 6f 69 64 20 78 44 65 73 74  egate void xDest
2bbb0 72 6f 79 4d 6f 64 75 6c 65 28 49 6e 74 50 74 72  royModule(IntPtr
2bbc0 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a   pClientData);..
2bbd0 23 65 6e 64 69 66 0d 0a 20 20 20 20 23 65 6e 64  #endif..    #end
2bbe0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
2bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2bc40 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20   #region Native 
2bc50 53 74 72 75 63 74 75 72 65 73 0d 0a 23 69 66 20  Structures..#if 
2bc60 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f  INTEROP_VIRTUAL_
2bc70 54 41 42 4c 45 0d 0a 20 20 20 20 5b 53 74 72 75  TABLE..    [Stru
2bc80 63 74 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b  ctLayout(LayoutK
2bc90 69 6e 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d  ind.Sequential)]
2bca0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2bcb0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 6f  truct sqlite3_mo
2bcc0 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  dule..    {..   
2bcd0 20 20 20 20 20 2f 2a 20 20 20 30 20 2a 2f 20 70       /*   0 */ p
2bce0 75 62 6c 69 63 20 69 6e 74 20 69 56 65 72 73 69  ublic int iVersi
2bcf0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  on;..        /* 
2bd00 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43    8 */ public xC
2bd10 72 65 61 74 65 20 78 43 72 65 61 74 65 3b 0d 0a  reate xCreate;..
2bd20 20 20 20 20 20 20 20 20 2f 2a 20 20 31 36 20 2a          /*  16 *
2bd30 2f 20 70 75 62 6c 69 63 20 78 43 6f 6e 6e 65 63  / public xConnec
2bd40 74 20 78 43 6f 6e 6e 65 63 74 3b 0d 0a 20 20 20  t xConnect;..   
2bd50 20 20 20 20 20 2f 2a 20 20 32 34 20 2a 2f 20 70       /*  24 */ p
2bd60 75 62 6c 69 63 20 78 42 65 73 74 49 6e 64 65 78  ublic xBestIndex
2bd70 20 78 42 65 73 74 49 6e 64 65 78 3b 0d 0a 20 20   xBestIndex;..  
2bd80 20 20 20 20 20 20 2f 2a 20 20 33 32 20 2a 2f 20        /*  32 */ 
2bd90 70 75 62 6c 69 63 20 78 44 69 73 63 6f 6e 6e 65  public xDisconne
2bda0 63 74 20 78 44 69 73 63 6f 6e 6e 65 63 74 3b 0d  ct xDisconnect;.
2bdb0 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 34 30 20  .        /*  40 
2bdc0 2a 2f 20 70 75 62 6c 69 63 20 78 44 65 73 74 72  */ public xDestr
2bdd0 6f 79 20 78 44 65 73 74 72 6f 79 3b 0d 0a 20 20  oy xDestroy;..  
2bde0 20 20 20 20 20 20 2f 2a 20 20 34 38 20 2a 2f 20        /*  48 */ 
2bdf0 70 75 62 6c 69 63 20 78 4f 70 65 6e 20 78 4f 70  public xOpen xOp
2be00 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  en;..        /* 
2be10 20 35 36 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   56 */ public xC
2be20 6c 6f 73 65 20 78 43 6c 6f 73 65 3b 0d 0a 20 20  lose xClose;..  
2be30 20 20 20 20 20 20 2f 2a 20 20 36 34 20 2a 2f 20        /*  64 */ 
2be40 70 75 62 6c 69 63 20 78 46 69 6c 74 65 72 20 78  public xFilter x
2be50 46 69 6c 74 65 72 3b 0d 0a 20 20 20 20 20 20 20  Filter;..       
2be60 20 2f 2a 20 20 37 32 20 2a 2f 20 70 75 62 6c 69   /*  72 */ publi
2be70 63 20 78 4e 65 78 74 20 78 4e 65 78 74 3b 0d 0a  c xNext xNext;..
2be80 20 20 20 20 20 20 20 20 2f 2a 20 20 38 30 20 2a          /*  80 *
2be90 2f 20 70 75 62 6c 69 63 20 78 45 6f 66 20 78 45  / public xEof xE
2bea0 6f 66 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  of;..        /* 
2beb0 20 38 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43   88 */ public xC
2bec0 6f 6c 75 6d 6e 20 78 43 6f 6c 75 6d 6e 3b 0d 0a  olumn xColumn;..
2bed0 20 20 20 20 20 20 20 20 2f 2a 20 20 39 36 20 2a          /*  96 *
2bee0 2f 20 70 75 62 6c 69 63 20 78 52 6f 77 49 64 20  / public xRowId 
2bef0 78 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20 20 20  xRowId;..       
2bf00 20 2f 2a 20 31 30 34 20 2a 2f 20 70 75 62 6c 69   /* 104 */ publi
2bf10 63 20 78 55 70 64 61 74 65 20 78 55 70 64 61 74  c xUpdate xUpdat
2bf20 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  e;..        /* 1
2bf30 31 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 42 65  12 */ public xBe
2bf40 67 69 6e 20 78 42 65 67 69 6e 3b 0d 0a 20 20 20  gin xBegin;..   
2bf50 20 20 20 20 20 2f 2a 20 31 32 30 20 2a 2f 20 70       /* 120 */ p
2bf60 75 62 6c 69 63 20 78 53 79 6e 63 20 78 53 79 6e  ublic xSync xSyn
2bf70 63 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31  c;..        /* 1
2bf80 32 38 20 2a 2f 20 70 75 62 6c 69 63 20 78 43 6f  28 */ public xCo
2bf90 6d 6d 69 74 20 78 43 6f 6d 6d 69 74 3b 0d 0a 20  mmit xCommit;.. 
2bfa0 20 20 20 20 20 20 20 2f 2a 20 31 33 36 20 2a 2f         /* 136 */
2bfb0 20 70 75 62 6c 69 63 20 78 52 6f 6c 6c 62 61 63   public xRollbac
2bfc0 6b 20 78 52 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20  k xRollback;..  
2bfd0 20 20 20 20 20 20 2f 2a 20 31 34 34 20 2a 2f 20        /* 144 */ 
2bfe0 70 75 62 6c 69 63 20 78 46 69 6e 64 46 75 6e 63  public xFindFunc
2bff0 74 69 6f 6e 20 78 46 69 6e 64 46 75 6e 63 74 69  tion xFindFuncti
2c000 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  on;..        /* 
2c010 31 35 32 20 2a 2f 20 70 75 62 6c 69 63 20 78 52  152 */ public xR
2c020 65 6e 61 6d 65 20 78 52 65 6e 61 6d 65 3b 0d 0a  ename xRename;..
2c030 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 6d          /* The m
2c040 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
2c050 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
2c060 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64   the sqlite3_mod
2c070 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 2a 20  ule..         * 
2c080 6f 62 6a 65 63 74 2e 20 20 54 68 6f 73 65 20 62  object.  Those b
2c090 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
2c0a0 73 69 6f 6e 20 32 20 61 6e 64 20 67 72 65 61 74  sion 2 and great
2c0b0 65 72 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  er. */..        
2c0c0 2f 2a 20 31 36 30 20 2a 2f 20 70 75 62 6c 69 63  /* 160 */ public
2c0d0 20 78 53 61 76 65 70 6f 69 6e 74 20 78 53 61 76   xSavepoint xSav
2c0e0 65 70 6f 69 6e 74 3b 0d 0a 20 20 20 20 20 20 20  epoint;..       
2c0f0 20 2f 2a 20 31 36 38 20 2a 2f 20 70 75 62 6c 69   /* 168 */ publi
2c100 63 20 78 52 65 6c 65 61 73 65 20 78 52 65 6c 65  c xRelease xRele
2c110 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a  ase;..        /*
2c120 20 31 37 36 20 2a 2f 20 70 75 62 6c 69 63 20 78   176 */ public x
2c130 52 6f 6c 6c 62 61 63 6b 54 6f 20 78 52 6f 6c 6c  RollbackTo xRoll
2c140 62 61 63 6b 54 6f 3b 0d 0a 20 20 20 20 7d 0d 0a  backTo;..    }..
2c150 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1a0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2c1b0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2c1c0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2c1d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2c1e0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 74 61 62  uct sqlite3_vtab
2c1f0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2c200 20 2f 2a 20 20 30 20 2a 2f 20 70 75 62 6c 69 63   /*  0 */ public
2c210 20 49 6e 74 50 74 72 20 70 4d 6f 64 75 6c 65 3b   IntPtr pModule;
2c220 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 20 38 20  ..        /*  8 
2c230 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e 52  */ public int nR
2c240 65 66 3b 20 2f 2a 20 4e 4f 20 4c 4f 4e 47 45 52  ef; /* NO LONGER
2c250 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20   USED */..      
2c260 20 20 2f 2a 20 31 36 20 2a 2f 20 70 75 62 6c 69    /* 16 */ publi
2c270 63 20 49 6e 74 50 74 72 20 7a 45 72 72 4d 73 67  c IntPtr zErrMsg
2c280 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c2e0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
2c2f0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
2c300 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
2c310 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
2c320 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
2c330 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
2c340 20 20 2f 2a 20 30 20 2a 2f 20 70 75 62 6c 69 63    /* 0 */ public
2c350 20 49 6e 74 50 74 72 20 70 56 54 61 62 3b 0d 0a   IntPtr pVTab;..
2c360 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c3b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c3c0 5b 53 74 72 75 63 74 4c 61 79 6f 75 74 28 4c 61  [StructLayout(La
2c3d0 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75 65 6e 74  youtKind.Sequent
2c3e0 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72  ial)]..    inter
2c3f0 6e 61 6c 20 73 74 72 75 63 74 20 73 71 6c 69 74  nal struct sqlit
2c400 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
2c410 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  int..    {..    
2c420 20 20 20 20 70 75 62 6c 69 63 20 73 71 6c 69 74      public sqlit
2c430 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
2c440 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
2c450 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
2c460 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
2c470 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
2c480 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
2c490 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
2c4a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c4b0 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 20 21  if (constraint !
2c4c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2c4d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c4e0 20 20 20 20 20 20 20 20 69 43 6f 6c 75 6d 6e 20          iColumn 
2c4f0 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f  = constraint.iCo
2c500 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
2c510 20 20 20 20 20 20 20 6f 70 20 3d 20 63 6f 6e 73         op = cons
2c520 74 72 61 69 6e 74 2e 6f 70 3b 0d 0a 20 20 20 20  traint.op;..    
2c530 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61 62              usab
2c540 6c 65 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  le = constraint.
2c550 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20  usable;..       
2c560 20 20 20 20 20 20 20 20 20 69 54 65 72 6d 4f 66           iTermOf
2c570 66 73 65 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e  fset = constrain
2c580 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t.iTermOffset;..
2c590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2c5a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2c5b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c600 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20 70         /* 0 */ p
2c610 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
2c620 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  n;..        /* 4
2c630 20 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74   */ public SQLit
2c640 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
2c650 4f 70 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  Op op;..        
2c660 2f 2a 20 35 20 2a 2f 20 70 75 62 6c 69 63 20 62  /* 5 */ public b
2c670 79 74 65 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  yte usable;..   
2c680 20 20 20 20 20 2f 2a 20 38 20 2a 2f 20 70 75 62       /* 8 */ pub
2c690 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66  lic int iTermOff
2c6a0 73 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  set;..    }.... 
2c6b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c700 0d 0a 20 20 20 20 5b 53 74 72 75 63 74 4c 61 79  ..    [StructLay
2c710 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53  out(LayoutKind.S
2c720 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20  equential)]..   
2c730 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74   internal struct
2c740 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
2c750 72 64 65 72 62 79 0d 0a 20 20 20 20 7b 0d 0a 20  rderby..    {.. 
2c760 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 71         public sq
2c770 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
2c780 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rby(..          
2c790 20 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64    SQLiteIndexOrd
2c7a0 65 72 42 79 20 6f 72 64 65 72 42 79 0d 0a 20 20  erBy orderBy..  
2c7b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c7c0 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
2c7d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2c7e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 72            if (or
2c7f0 64 65 72 42 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a  derBy != null)..
2c800 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2c820 43 6f 6c 75 6d 6e 20 3d 20 6f 72 64 65 72 42 79  Column = orderBy
2c830 2e 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20  .iColumn;..     
2c840 20 20 20 20 20 20 20 20 20 20 20 64 65 73 63 20             desc 
2c850 3d 20 6f 72 64 65 72 42 79 2e 64 65 73 63 3b 0d  = orderBy.desc;.
2c860 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c870 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c880 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2c8d0 20 20 20 20 20 20 20 20 2f 2a 20 30 20 2a 2f 20          /* 0 */ 
2c8e0 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
2c8f0 6d 6e 3b 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75  mn; /* Column nu
2c900 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  mber */..       
2c910 20 2f 2a 20 34 20 2a 2f 20 70 75 62 6c 69 63 20   /* 4 */ public 
2c920 62 79 74 65 20 64 65 73 63 3b 20 20 20 2f 2a 20  byte desc;   /* 
2c930 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
2c940 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a  False for ASC. *
2c950 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  /..    }....    
2c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2c9b0 20 20 20 5b 53 74 72 75 63 74 4c 61 79 6f 75 74     [StructLayout
2c9c0 28 4c 61 79 6f 75 74 4b 69 6e 64 2e 53 65 71 75  (LayoutKind.Sequ
2c9d0 65 6e 74 69 61 6c 29 5d 0d 0a 20 20 20 20 69 6e  ential)]..    in
2c9e0 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 73 71  ternal struct sq
2c9f0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
2ca00 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20  traint_usage..  
2ca10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
2ca20 6c 69 63 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  lic sqlite3_inde
2ca30 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
2ca40 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
2ca50 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
2ca60 74 72 61 69 6e 74 55 73 61 67 65 20 63 6f 6e 73  traintUsage cons
2ca70 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20  traintUsage..   
2ca80 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2ca90 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
2caa0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2cab0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
2cac0 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20  straintUsage != 
2cad0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2cae0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2caf0 20 20 20 20 20 20 61 72 67 76 49 6e 64 65 78 20        argvIndex 
2cb00 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  = constraintUsag
2cb10 65 2e 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20  e.argvIndex;..  
2cb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6d                om
2cb30 69 74 20 3d 20 63 6f 6e 73 74 72 61 69 6e 74 55  it = constraintU
2cb40 73 61 67 65 2e 6f 6d 69 74 3b 0d 0a 20 20 20 20  sage.omit;..    
2cb50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2cb60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2cbc0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72     public int ar
2cbd0 67 76 49 6e 64 65 78 3b 20 2f 2a 20 69 66 20 3e  gvIndex; /* if >
2cbe0 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
2cbf0 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
2cc00 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20   xFilter */..   
2cc10 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
2cc20 20 6f 6d 69 74 3b 20 20 20 20 20 2f 2a 20 44 6f   omit;     /* Do
2cc30 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
2cc40 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72   for this constr
2cc50 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  aint */..    }..
2cc60 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccb0 2f 0d 0a 0d 0a 20 20 20 20 5b 53 74 72 75 63 74  /....    [Struct
2ccc0 4c 61 79 6f 75 74 28 4c 61 79 6f 75 74 4b 69 6e  Layout(LayoutKin
2ccd0 64 2e 53 65 71 75 65 6e 74 69 61 6c 29 5d 0d 0a  d.Sequential)]..
2cce0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
2ccf0 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  uct sqlite3_inde
2cd00 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 7b 0d 0a 20  x_info..    {.. 
2cd10 20 20 20 20 20 20 20 2f 2a 20 49 6e 70 75 74 73         /* Inputs
2cd20 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20   */..        /* 
2cd30 20 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74   0 */ public int
2cd40 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 2f 2a   nConstraint; /*
2cd50 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   Number of entri
2cd60 65 73 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e  es in aConstrain
2cd70 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a  t */..        /*
2cd80 20 20 38 20 2a 2f 20 70 75 62 6c 69 63 20 49 6e    8 */ public In
2cd90 74 50 74 72 20 61 43 6f 6e 73 74 72 61 69 6e 74  tPtr aConstraint
2cda0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 31 36  ;..        /* 16
2cdb0 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20 6e   */ public int n
2cdc0 4f 72 64 65 72 42 79 3b 20 20 20 20 2f 2a 20 4e  OrderBy;    /* N
2cdd0 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
2cde0 20 69 6e 20 61 4f 72 64 65 72 42 79 20 2a 2f 0d   in aOrderBy */.
2cdf0 0a 20 20 20 20 20 20 20 20 2f 2a 20 32 34 20 2a  .        /* 24 *
2ce00 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20  / public IntPtr 
2ce10 61 4f 72 64 65 72 42 79 3b 0d 0a 20 20 20 20 20  aOrderBy;..     
2ce20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f     /* Outputs */
2ce30 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 33 32 20  ..        /* 32 
2ce40 2a 2f 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72  */ public IntPtr
2ce50 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
2ce60 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 34  e;..        /* 4
2ce70 30 20 2a 2f 20 70 75 62 6c 69 63 20 69 6e 74 20  0 */ public int 
2ce80 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20  idxNum;         
2ce90 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64    /* Number used
2cea0 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65   to identify the
2ceb0 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
2cec0 20 20 20 2f 2a 20 34 38 20 2a 2f 20 70 75 62 6c     /* 48 */ publ
2ced0 69 63 20 73 74 72 69 6e 67 20 69 64 78 53 74 72  ic string idxStr
2cee0 3b 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69  ;        /* Stri
2cef0 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74  ng, possibly obt
2cf00 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
2cf10 65 33 5f 6d 61 6c 6c 6f 63 20 2a 2f 0d 0a 20 20  e3_malloc */..  
2cf20 20 20 20 20 20 20 2f 2a 20 35 36 20 2a 2f 20 70        /* 56 */ p
2cf30 75 62 6c 69 63 20 69 6e 74 20 6e 65 65 64 54 6f  ublic int needTo
2cf40 46 72 65 65 49 64 78 53 74 72 3b 20 2f 2a 20 46  FreeIdxStr; /* F
2cf50 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
2cf60 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
2cf70 69 66 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20 20  if true */..    
2cf80 20 20 20 20 2f 2a 20 36 30 20 2a 2f 20 70 75 62      /* 60 */ pub
2cf90 6c 69 63 20 69 6e 74 20 6f 72 64 65 72 42 79 43  lic int orderByC
2cfa0 6f 6e 73 75 6d 65 64 3b 20 20 2f 2a 20 54 72 75  onsumed;  /* Tru
2cfb0 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
2cfc0 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a  lready ordered *
2cfd0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 36 34  /..        /* 64
2cfe0 20 2a 2f 20 70 75 62 6c 69 63 20 64 6f 75 62 6c   */ public doubl
2cff0 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
2d000 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
2d010 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
2d020 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
2d030 20 20 20 2f 2a 20 37 32 20 2a 2f 20 70 75 62 6c     /* 72 */ publ
2d040 69 63 20 6c 6f 6e 67 20 65 73 74 69 6d 61 74 65  ic long estimate
2d050 64 52 6f 77 73 3b 20 20 20 2f 2a 20 45 73 74 69  dRows;   /* Esti
2d060 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  mated number of 
2d070 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 2a 2f  rows returned */
2d080 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 38 30 20  ..        /* 80 
2d090 2a 2f 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65  */ public SQLite
2d0a0 49 6e 64 65 78 46 6c 61 67 73 20 69 64 78 46 6c  IndexFlags idxFl
2d0b0 61 67 73 3b 20 2f 2a 20 4d 61 73 6b 20 6f 66 20  ags; /* Mask of 
2d0c0 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 53 43 41  SQLITE_INDEX_SCA
2d0d0 4e 5f 2a 20 66 6c 61 67 73 20 2a 2f 0d 0a 20 20  N_* flags */..  
2d0e0 20 20 20 20 20 20 2f 2a 20 38 38 20 2a 2f 20 70        /* 88 */ p
2d0f0 75 62 6c 69 63 20 6c 6f 6e 67 20 63 6f 6c 55 73  ublic long colUs
2d100 65 64 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 49  ed;         /* I
2d110 6e 70 75 74 3a 20 4d 61 73 6b 20 6f 66 20 63 6f  nput: Mask of co
2d120 6c 75 6d 6e 73 20 75 73 65 64 20 62 79 20 73 74  lumns used by st
2d130 61 74 65 6d 65 6e 74 20 2a 2f 0d 0a 20 20 20 20  atement */..    
2d140 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 23  }..#endif..    #
2d150 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
2d160 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2d170 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d1c0 0a 0d 0a 20 20 23 72 65 67 69 6f 6e 20 2e 4e 45  ...  #region .NE
2d1d0 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
2d1e0 6f 72 6b 20 28 6f 6e 6c 79 29 20 43 72 69 74 69  ork (only) Criti
2d1f0 63 61 6c 48 61 6e 64 6c 65 20 43 6c 61 73 73 0d  calHandle Class.
2d200 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2d210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2d220 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2d230 61 63 74 20 63 6c 61 73 73 20 43 72 69 74 69 63  act class Critic
2d240 61 6c 48 61 6e 64 6c 65 20 3a 20 49 44 69 73 70  alHandle : IDisp
2d250 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20 20  osable..  {..   
2d260 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 5f 69   private bool _i
2d270 73 43 6c 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72  sClosed;..    pr
2d280 6f 74 65 63 74 65 64 20 49 6e 74 50 74 72 20 68  otected IntPtr h
2d290 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72  andle;....    pr
2d2a0 6f 74 65 63 74 65 64 20 43 72 69 74 69 63 61 6c  otected Critical
2d2b0 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 69 6e  Handle(IntPtr in
2d2c0 76 61 6c 69 64 48 61 6e 64 6c 65 56 61 6c 75 65  validHandleValue
2d2d0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2d2e0 68 61 6e 64 6c 65 20 3d 20 69 6e 76 61 6c 69 64  handle = invalid
2d2f0 48 61 6e 64 6c 65 56 61 6c 75 65 3b 0d 0a 20 20  HandleValue;..  
2d300 20 20 20 20 5f 69 73 43 6c 6f 73 65 64 20 3d 20      _isClosed = 
2d310 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  false;..    }...
2d320 0a 20 20 20 20 7e 43 72 69 74 69 63 61 6c 48 61  .    ~CriticalHa
2d330 6e 64 6c 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  ndle()..    {.. 
2d340 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
2d350 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  se);..    }.... 
2d360 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
2d370 43 6c 65 61 6e 75 70 28 29 0d 0a 20 20 20 20 7b  Cleanup()..    {
2d380 0d 0a 20 20 20 20 20 20 69 66 20 28 21 49 73 43  ..      if (!IsC
2d390 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 7b 0d  losed)..      {.
2d3a0 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69  .        this._i
2d3b0 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  sClosed = true;.
2d3c0 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73  .        if (!Is
2d3d0 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20  Invalid)..      
2d3e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 52    {..          R
2d3f0 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 3b 0d  eleaseHandle();.
2d400 0a 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75  .          GC.Su
2d410 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
2d420 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
2d430 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
2d440 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  ....    public v
2d450 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20  oid Close()..   
2d460 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73   {..      Dispos
2d470 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d 0d  e(true);..    }.
2d480 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  ...    public vo
2d490 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
2d4a0 20 20 7b 0d 0a 20 20 20 20 20 20 44 69 73 70 6f    {..      Dispo
2d4b0 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 7d  se(true);..    }
2d4c0 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65  ....    protecte
2d4d0 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
2d4e0 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
2d4f0 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20  osing)..    {.. 
2d500 20 20 20 20 20 43 6c 65 61 6e 75 70 28 29 3b 0d       Cleanup();.
2d510 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
2d520 6f 74 65 63 74 65 64 20 61 62 73 74 72 61 63 74  otected abstract
2d530 20 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e   bool ReleaseHan
2d540 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 70 72  dle();....    pr
2d550 6f 74 65 63 74 65 64 20 76 6f 69 64 20 53 65 74  otected void Set
2d560 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 20 76 61  Handle(IntPtr va
2d570 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lue)..    {..   
2d580 20 20 20 68 61 6e 64 6c 65 20 3d 20 76 61 6c 75     handle = valu
2d590 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
2d5a0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
2d5b0 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28  HandleAsInvalid(
2d5c0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2d5d0 5f 69 73 43 6c 6f 73 65 64 20 3d 20 74 72 75 65  _isClosed = true
2d5e0 3b 0d 0a 20 20 20 20 20 20 47 43 2e 53 75 70 70  ;..      GC.Supp
2d5f0 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
2d600 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  s);..    }....  
2d610 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
2d620 43 6c 6f 73 65 64 0d 0a 20 20 20 20 7b 0d 0a 20  Closed..    {.. 
2d630 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
2d640 6e 20 5f 69 73 43 6c 6f 73 65 64 3b 20 7d 0d 0a  n _isClosed; }..
2d650 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62      }....    pub
2d660 6c 69 63 20 61 62 73 74 72 61 63 74 20 62 6f 6f  lic abstract boo
2d670 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20  l IsInvalid..   
2d680 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
2d690 20 20 20 20 7d 0d 0a 0d 0a 20 20 7d 0d 0a 23 65      }....  }..#e
2d6a0 6e 64 69 66 0d 0a 20 20 23 65 6e 64 72 65 67 69  ndif..  #endregi
2d6b0 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
2d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d700 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
2d710 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gion SQLiteConne
2d720 63 74 69 6f 6e 48 61 6e 64 6c 65 20 43 6c 61 73  ctionHandle Clas
2d730 73 0d 0a 20 20 20 20 2f 2f 20 48 61 6e 64 6c 65  s..    // Handle
2d740 73 20 74 68 65 20 75 6e 6d 61 6e 61 67 65 64 20  s the unmanaged 
2d750 64 61 74 61 62 61 73 65 20 70 6f 69 6e 74 65 72  database pointer
2d760 2c 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 66  , and provides f
2d770 69 6e 61 6c 69 7a 61 74 69 6f 6e 0d 0a 20 20 20  inalization..   
2d780 20 2f 2f 20 73 75 70 70 6f 72 74 20 66 6f 72 20   // support for 
2d790 69 74 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  it...    interna
2d7a0 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
2d7b0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2d7c0 61 6e 64 6c 65 20 3a 20 43 72 69 74 69 63 61 6c  andle : Critical
2d7d0 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23  Handle..    {..#
2d7e0 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  if SQLITE_STANDA
2d7f0 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52 4d 5f  RD && !PLATFORM_
2d800 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2d810 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d820 61 6c 20 64 65 6c 65 67 61 74 65 20 76 6f 69 64  al delegate void
2d830 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   CloseConnection
2d840 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Callback(..     
2d850 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
2d860 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64  nectionHandle hd
2d870 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 3b 0d 0a  l, IntPtr db);..
2d880 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2d890 61 6c 20 73 74 61 74 69 63 20 43 6c 6f 73 65 43  al static CloseC
2d8a0 6f 6e 6e 65 63 74 69 6f 6e 43 61 6c 6c 62 61 63  onnectionCallbac
2d8b0 6b 20 63 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  k closeConnectio
2d8c0 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
2d8d0 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
2d8e0 65 43 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 23 65  eConnection;..#e
2d8f0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50  ///////....#if P
2d950 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2d960 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2d970 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64 6f    internal reado
2d980 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  nly object syncR
2d990 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
2d9a0 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ();..#endif.... 
2d9b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2da00 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2da10 65 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e 64 6c 65  e bool ownHandle
2da20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da70 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2da80 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
2da90 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
2daa0 49 6e 74 50 74 72 28 53 51 4c 69 74 65 43 6f 6e  IntPtr(SQLiteCon
2dab0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 64 62  nectionHandle db
2dac0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2dad0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 62            if (db
2dae0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
2daf0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2db00 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2db10 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2db20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 64           lock (d
2db30 62 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e  b.syncRoot)..#en
2db40 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
2db50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2db60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2db70 72 6e 20 64 62 2e 68 61 6e 64 6c 65 3b 0d 0a 20  rn db.handle;.. 
2db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2db90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2dba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2dbb0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
2dbc0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2dbd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2dbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2dc20 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2dc30 61 6c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  al SQLiteConnect
2dc40 69 6f 6e 48 61 6e 64 6c 65 28 49 6e 74 50 74 72  ionHandle(IntPtr
2dc50 20 64 62 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61 6e   db, bool ownHan
2dc60 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  dle)..          
2dc70 20 20 3a 20 74 68 69 73 28 6f 77 6e 48 61 6e 64    : this(ownHand
2dc80 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  le)..        {..
2dc90 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2dca0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2dcb0 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
2dcc0 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
2dcd0 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2dce0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2dcf0 20 20 20 74 68 69 73 2e 6f 77 6e 48 61 6e 64 6c     this.ownHandl
2dd00 65 20 3d 20 6f 77 6e 48 61 6e 64 6c 65 3b 0d 0a  e = ownHandle;..
2dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd20 53 65 74 48 61 6e 64 6c 65 28 64 62 29 3b 0d 0a  SetHandle(db);..
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2dd40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2dd50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2dd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2dda0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
2ddb0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
2ddc0 61 6e 64 6c 65 28 62 6f 6f 6c 20 6f 77 6e 48 61  andle(bool ownHa
2ddd0 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20  ndle)..         
2dde0 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50 74 72     : base(IntPtr
2ddf0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2de00 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  {..#if COUNT_HAN
2de10 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2de20 20 69 66 20 28 6f 77 6e 48 61 6e 64 6c 65 29 0d   if (ownHandle).
2de30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de40 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e 63   Interlocked.Inc
2de50 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2de60 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  Data.connectionC
2de70 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2de80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2de90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2dea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2deb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ded0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2dee0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
2def0 64 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  d override bool 
2df00 52 65 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d  ReleaseHandle().
2df10 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2df20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2df30 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2df40 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
2df50 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
2df60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2df80 66 20 28 21 6f 77 6e 48 61 6e 64 6c 65 29 20 72  f (!ownHandle) r
2df90 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
2dfa0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2dfb0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2dfc0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
2dfd0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2dfe0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2e000 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  tPtr localHandle
2e010 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 45   = Interlocked.E
2e020 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20 20  xchange(..      
2e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e040 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74 72  f handle, IntPtr
2e050 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 23 69 66 20 53  .Zero);....#if S
2e060 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
2e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e080 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20  if (localHandle 
2e090 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2e0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e0b0 20 20 20 20 20 63 6c 6f 73 65 43 6f 6e 6e 65 63       closeConnec
2e0c0 74 69 6f 6e 28 74 68 69 73 2c 20 6c 6f 63 61 6c  tion(this, local
2e0d0 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6c 73 65 0d  Handle);..#else.
2e0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e0f0 20 69 66 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65   if (localHandle
2e100 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2e110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e120 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73 65        SQLiteBase
2e130 2e 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  .CloseConnection
2e140 28 74 68 69 73 2c 20 6c 6f 63 61 6c 48 61 6e 64  (this, localHand
2e150 6c 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  le);..#endif....
2e160 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2e170 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2e180 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2e190 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2e1a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1c0 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
2e1d0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
2e1e0 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
2e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e200 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
2e210 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
2e220 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e230 20 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73             "Clos
2e240 65 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d  eConnection: {0}
2e250 22 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 29 29  ", localHandle))
2e260 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2e280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e290 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2e2a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2e2c0 65 6e 64 69 66 0d 0a 23 65 6c 73 65 0d 0a 20 20  endif..#else..  
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
2e2e0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  ck (syncRoot).. 
2e2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2e300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e310 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
2e320 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2e330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e340 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e360 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
2e370 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 74 68 69 73  eConnection(this
2e380 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20  , handle);..    
2e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3a0 20 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e      SetHandle(In
2e3b0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2e3e0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2e3f0 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d  if COUNT_HANDLE.
2e400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e410 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63   Interlocked.Dec
2e420 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67  rement(ref Debug
2e430 44 61 74 61 2e 63 6f 6e 6e 65 63 74 69 6f 6e 43  Data.connectionC
2e440 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ount);..#endif..
2e450 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
2e460 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e470 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2e480 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e490 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
2e4a0 5f 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e  _20 && TRACE_HAN
2e4b0 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20  DLE..           
2e4c0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2e4d0 63 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73  ception e)..#els
2e4e0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  e..            c
2e4f0 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65  atch (SQLiteExce
2e500 70 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a  ption)..#endif..
2e510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
2e520 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
2e530 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
2e540 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
2e550 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2e560 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e580 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2e590 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2e5a0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2e5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5c0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2e5d0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2e5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e5f0 20 20 20 20 20 20 20 20 20 20 22 43 6c 6f 73 65            "Close
2e600 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 7b 30 7d 2c  Connection: {0},
2e610 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b 31 7d 22   exception: {1}"
2e620 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e630 20 20 20 20 20 20 20 20 20 20 20 68 61 6e 64 6c             handl
2e640 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  e, e)); /* throw
2e650 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e660 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e670 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
2e680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2e690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e6a0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
2e6b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e6c0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
2e6d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2e6e0 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
2e6f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
2e700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
2e710 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
2e720 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2e730 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2e750 65 74 48 61 6e 64 6c 65 41 73 49 6e 76 61 6c 69  etHandleAsInvali
2e760 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
2e770 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e780 20 20 20 20 20 7d 0d 0a 23 69 66 20 44 45 42 55       }..#if DEBU
2e790 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  G..            r
2e7a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 23 65  eturn false;..#e
2e7b0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2e7c0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 23   return true;..#
2e7d0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
2e7e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f 55 4e 54  ///....#if COUNT
2e840 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20  _HANDLE..       
2e850 20 70 75 62 6c 69 63 20 69 6e 74 20 57 61 73 52   public int WasR
2e860 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a 20 20 20  eleasedOk()..   
2e870 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e880 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 65 72      return Inter
2e890 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74  locked.Decrement
2e8a0 28 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 63  (ref DebugData.c
2e8b0 6f 6e 6e 65 63 74 69 6f 6e 43 6f 75 6e 74 29 3b  onnectionCount);
2e8c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
2e8d0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2e8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e920 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e930 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4f 77    public bool Ow
2e940 6e 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  nHandle..       
2e950 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e960 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
2e970 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
2e980 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2e990 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  K..             
2e9a0 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
2e9b0 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
2e9c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9e0 20 20 20 72 65 74 75 72 6e 20 6f 77 6e 48 61 6e     return ownHan
2e9f0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dle;..          
2ea00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ea10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ea20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2ea30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ea80 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2ea90 62 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a  bool IsInvalid..
2eaa0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2eab0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
2eac0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
2ead0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2eae0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2eaf0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2eb00 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2eb10 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
2eb20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2eb30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2eb40 20 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50   (handle == IntP
2eb50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20  tr.Zero);..     
2eb60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2eb70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2eb80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2eb90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ebd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66  /////////....#if
2ebe0 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
2ebf0 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
2ec00 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
2ec10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
2ec20 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
2ec30 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2ec40 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2ec50 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2ec60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ec70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ec80 20 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54   return handle.T
2ec90 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
2eca0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ecb0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
2ecc0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2ecd0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
2ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
2ed30 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 61 74  egion SQLiteStat
2ed40 65 6d 65 6e 74 48 61 6e 64 6c 65 20 43 6c 61 73  ementHandle Clas
2ed50 73 0d 0a 20 20 20 20 2f 2f 20 50 72 6f 76 69 64  s..    // Provid
2ed60 65 73 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  es finalization 
2ed70 73 75 70 70 6f 72 74 20 66 6f 72 20 75 6e 6d 61  support for unma
2ed80 6e 61 67 65 64 20 53 51 4c 69 74 65 20 73 74 61  naged SQLite sta
2ed90 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20 69 6e  tements...    in
2eda0 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c  ternal sealed cl
2edb0 61 73 73 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ass SQLiteStatem
2edc0 65 6e 74 48 61 6e 64 6c 65 20 3a 20 43 72 69 74  entHandle : Crit
2edd0 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20 20 20  icalHandle..    
2ede0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
2edf0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2ee00 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
2ee10 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62 6a 65  al readonly obje
2ee20 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
2ee30 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23 65 6e  w object();..#en
2ee40 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2eea0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
2eeb0 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65  ConnectionHandle
2eec0 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
2eed0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2eee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2ef20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
2ef30 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72 61  c implicit opera
2ef40 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c 69 74  tor IntPtr(SQLit
2ef50 65 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65  eStatementHandle
2ef60 20 73 74 6d 74 29 0d 0a 20 20 20 20 20 20 20 20   stmt)..        
2ef70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2ef80 66 20 28 73 74 6d 74 20 21 3d 20 6e 75 6c 6c 29  f (stmt != null)
2ef90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2efa0 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
2efb0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efd0 6c 6f 63 6b 20 28 73 74 6d 74 2e 73 79 6e 63 52  lock (stmt.syncR
2efe0 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f010 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 6d 74       return stmt
2f020 2e 68 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20  .handle;..      
2f030 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f040 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2f050 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2f060 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
2f070 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f080 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f0d0 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
2f0e0 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48 61 6e  LiteStatementHan
2f0f0 64 6c 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  dle(SQLiteConnec
2f100 74 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 2c 20  tionHandle cnn, 
2f110 49 6e 74 50 74 72 20 73 74 6d 74 29 0d 0a 20 20  IntPtr stmt)..  
2f120 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
2f130 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ()..        {..#
2f140 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2f150 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2f160 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
2f170 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69  syncRoot)..#endi
2f180 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
2f190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f1a0 20 20 74 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e    this.cnn = cnn
2f1b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2f1c0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 73 74 6d     SetHandle(stm
2f1d0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
2f1e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
2f1f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2f200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f240 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
2f250 61 74 65 20 53 51 4c 69 74 65 53 74 61 74 65 6d  ate SQLiteStatem
2f260 65 6e 74 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20  entHandle()..   
2f270 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28           : base(
2f280 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2f290 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 43 4f 55        {..#if COU
2f2a0 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  NT_HANDLE..     
2f2b0 20 20 20 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b         Interlock
2f2c0 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
2f2d0 20 44 65 62 75 67 44 61 74 61 2e 73 74 61 74 65   DebugData.state
2f2e0 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e  mentCount);..#en
2f2f0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2f300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2f310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f350 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2f360 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20  tected override 
2f370 62 6f 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64  bool ReleaseHand
2f380 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
2f390 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
2f3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2f3b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2f3c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2f3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f3e0 20 49 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e   IntPtr localHan
2f3f0 64 6c 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  dle = Interlocke
2f400 64 2e 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20  d.Exchange(..   
2f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f420 20 72 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74   ref handle, Int
2f430 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
2f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f450 20 28 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d   (localHandle !=
2f460 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f480 20 20 20 53 51 4c 69 74 65 42 61 73 65 2e 46 69     SQLiteBase.Fi
2f490 6e 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28  nalizeStatement(
2f4a0 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61 6e 64 6c 65  cnn, localHandle
2f4b0 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
2f4c0 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
2f4d0 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20  CE_HANDLE..     
2f4e0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f500 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f510 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
2f520 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74  teLine(HelperMet
2f530 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
2f540 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2f550 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
2f560 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
2f570 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f590 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65 6d   "FinalizeStatem
2f5a0 65 6e 74 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c  ent: {0}", local
2f5b0 48 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72  Handle)); /* thr
2f5c0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2f5d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2f5e0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
2f5f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f600 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f610 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23      }..#endif..#
2f620 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2f630 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
2f640 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
2f650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f670 20 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50   (handle != IntP
2f680 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f6a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f6b0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42           SQLiteB
2f6c0 61 73 65 2e 46 69 6e 61 6c 69 7a 65 53 74 61 74  ase.FinalizeStat
2f6d0 65 6d 65 6e 74 28 63 6e 6e 2c 20 68 61 6e 64 6c  ement(cnn, handl
2f6e0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2f700 48 61 6e 64 6c 65 28 49 6e 74 50 74 72 2e 5a 65  Handle(IntPtr.Ze
2f710 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2f720 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2f730 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f740 23 65 6e 64 69 66 0d 0a 23 69 66 20 43 4f 55 4e  #endif..#if COUN
2f750 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20  T_HANDLE..      
2f760 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
2f770 6f 63 6b 65 64 2e 44 65 63 72 65 6d 65 6e 74 28  ocked.Decrement(
2f780 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 73 74  ref DebugData.st
2f790 61 74 65 6d 65 6e 74 43 6f 75 6e 74 29 3b 0d 0a  atementCount);..
2f7a0 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42 55  #endif..#if DEBU
2f7b0 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  G..             
2f7c0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2f7d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
2f7e0 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45 54       }..#if !NET
2f7f0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
2f800 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
2f810 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2f820 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 20  SQLiteException 
2f830 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e)..#else..     
2f840 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53 51         catch (SQ
2f850 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a  LiteException)..
2f860 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2f870 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
2f880 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
2f890 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  ACE_HANDLE..    
2f8a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
2f8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f8c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f8d0 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
2f8e0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
2f8f0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
2f900 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2f910 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
2f920 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
2f930 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
2f940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f950 20 20 22 46 69 6e 61 6c 69 7a 65 53 74 61 74 65    "FinalizeState
2f960 6d 65 6e 74 3a 20 7b 30 7d 2c 20 65 78 63 65 70  ment: {0}, excep
2f970 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  tion: {1}",..   
2f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f990 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65 29 29       handle, e))
2f9a0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2f9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f9d0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
2f9e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f9f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
2fa00 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
2fa10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2fa20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
2fa30 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
2fa40 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
2fa50 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
2fa60 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
2fa70 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
2fa80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fa90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2faa0 20 20 20 20 20 20 20 20 20 53 65 74 48 61 6e 64           SetHand
2fab0 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b 0d 0a  leAsInvalid();..
2fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fad0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2fae0 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20  ..#if DEBUG..   
2faf0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2fb00 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20  false;..#else.. 
2fb10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2fb20 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d  n true;..#endif.
2fb30 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2fb40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2fb90 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c  .#if COUNT_HANDL
2fba0 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  E..        publi
2fbb0 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61 73 65  c int WasRelease
2fbc0 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dOk()..        {
2fbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2fbe0 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
2fbf0 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44  .Decrement(ref D
2fc00 65 62 75 67 44 61 74 61 2e 73 74 61 74 65 6d 65  ebugData.stateme
2fc10 6e 74 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20  ntCount);..     
2fc20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
2fc30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2fc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d  ///////////////.
2fc80 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
2fc90 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
2fca0 49 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  IsInvalid..     
2fcb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2fcc0 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
2fcd0 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
2fce0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2fcf0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
2fd00 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
2fd10 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  oot)..#endif..  
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2fd30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd40 20 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e       return (han
2fd50 64 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dle == IntPtr.Ze
2fd60 72 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ro);..          
2fd70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2fd80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2fd90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fde0 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55  ////....#if DEBU
2fdf0 47 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  G..        publi
2fe00 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
2fe10 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
2fe20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
2fe30 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2fe40 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2fe50 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
2fe60 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
2fe70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2fe80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2fe90 72 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69  rn handle.ToStri
2fea0 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
2feb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2fec0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a  .#endif..    }..
2fed0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2fee0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2fef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff30 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2ff40 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e   SQLiteBackupHan
2ff50 64 6c 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  dle Class..    /
2ff60 2f 20 50 72 6f 76 69 64 65 73 20 66 69 6e 61 6c  / Provides final
2ff70 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ization support 
2ff80 66 6f 72 20 75 6e 6d 61 6e 61 67 65 64 20 53 51  for unmanaged SQ
2ff90 4c 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65  Lite backup obje
2ffa0 63 74 73 2e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  cts...    intern
2ffb0 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
2ffc0 53 51 4c 69 74 65 42 61 63 6b 75 70 48 61 6e 64  SQLiteBackupHand
2ffd0 6c 65 20 3a 20 43 72 69 74 69 63 61 6c 48 61 6e  le : CriticalHan
2ffe0 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20  dle..    {..#if 
2fff0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30000 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30010 20 20 20 69 6e 74 65 72 6e 61 6c 20 72 65 61 64     internal read
30020 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 73 79 6e 63  only object sync
30030 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
30040 74 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  t();..#endif....
30050 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
300a0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
300b0 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  te SQLiteConnect
300c0 69 6f 6e 48 61 6e 64 6c 65 20 63 6e 6e 3b 0d 0a  ionHandle cnn;..
300d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
300e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30120 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
30130 6c 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69  lic static impli
30140 63 69 74 20 6f 70 65 72 61 74 6f 72 20 49 6e 74  cit operator Int
30150 50 74 72 28 53 51 4c 69 74 65 42 61 63 6b 75 70  Ptr(SQLiteBackup
30160 48 61 6e 64 6c 65 20 62 61 63 6b 75 70 29 0d 0a  Handle backup)..
30170 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30180 20 20 20 20 20 20 20 69 66 20 28 62 61 63 6b 75         if (backu
30190 70 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  p != null)..    
301a0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
301b0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
301c0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
301d0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
301e0 62 61 63 6b 75 70 2e 73 79 6e 63 52 6f 6f 74 29  backup.syncRoot)
301f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
30200 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30220 20 72 65 74 75 72 6e 20 62 61 63 6b 75 70 2e 68   return backup.h
30230 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  andle;..        
30240 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30250 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30260 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
30270 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
30280 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
30290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
302e0 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
302f0 74 65 42 61 63 6b 75 70 48 61 6e 64 6c 65 28 53  teBackupHandle(S
30300 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
30310 61 6e 64 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74  andle cnn, IntPt
30320 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 20  r backup)..     
30330 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
30340 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
30350 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30360 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30370 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
30380 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a  cRoot)..#endif..
30390 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
303a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
303b0 68 69 73 2e 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a  his.cnn = cnn;..
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303d0 53 65 74 48 61 6e 64 6c 65 28 62 61 63 6b 75 70  SetHandle(backup
303e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
303f0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
30400 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30450 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
30460 74 65 20 53 51 4c 69 74 65 42 61 63 6b 75 70 48  te SQLiteBackupH
30470 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
30480 20 20 20 20 20 3a 20 62 61 73 65 28 49 6e 74 50       : base(IntP
30490 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
304a0 20 20 7b 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48    {..#if COUNT_H
304b0 41 4e 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 20  ANDLE..         
304c0 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49     Interlocked.I
304d0 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65 62  ncrement(ref Deb
304e0 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f 75  ugData.backupCou
304f0 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  nt);..#endif..  
30500 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30510 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30560 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
30570 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 52 65  override bool Re
30580 6c 65 61 73 65 48 61 6e 64 6c 65 28 29 0d 0a 20  leaseHandle().. 
30590 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
305a0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
305b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
305c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
305d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
305e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
305f0 20 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 3d 20 49   localHandle = I
30600 6e 74 65 72 6c 6f 63 6b 65 64 2e 45 78 63 68 61  nterlocked.Excha
30610 6e 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  nge(..          
30620 20 20 20 20 20 20 20 20 20 20 72 65 66 20 68 61            ref ha
30630 6e 64 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  ndle, IntPtr.Zer
30640 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  o);....         
30650 20 20 20 20 20 20 20 69 66 20 28 6c 6f 63 61 6c         if (local
30660 48 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  Handle != IntPtr
30670 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
30680 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
30690 74 65 42 61 73 65 2e 46 69 6e 69 73 68 42 61 63  teBase.FinishBac
306a0 6b 75 70 28 63 6e 6e 2c 20 6c 6f 63 61 6c 48 61  kup(cnn, localHa
306b0 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ndle);....#if !N
306c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
306d0 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20   TRACE_HANDLE.. 
306e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
306f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
30700 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30710 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
30720 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
30730 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
30740 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
30750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30760 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
30770 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
30780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30790 20 20 20 20 20 22 46 69 6e 69 73 68 42 61 63 6b       "FinishBack
307a0 75 70 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48  up: {0}", localH
307b0 61 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f  andle)); /* thro
307c0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
307d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
307e0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
307f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30800 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30810 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65     }..#endif..#e
30820 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
30830 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
30840 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
30850 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30860 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30870 28 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74  (handle != IntPt
30880 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
308a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308b0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61          SQLiteBa
308c0 73 65 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28  se.FinishBackup(
308d0 63 6e 6e 2c 20 68 61 6e 64 6c 65 29 3b 0d 0a 20  cnn, handle);.. 
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308f0 20 20 20 20 20 20 20 53 65 74 48 61 6e 64 6c 65         SetHandle
30900 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a  (IntPtr.Zero);..
30910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30920 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30930 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
30940 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e 44  ..#if COUNT_HAND
30950 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30960 20 20 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e      Interlocked.
30970 44 65 63 72 65 6d 65 6e 74 28 72 65 66 20 44 65  Decrement(ref De
30980 62 75 67 44 61 74 61 2e 62 61 63 6b 75 70 43 6f  bugData.backupCo
30990 75 6e 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 23  unt);..#endif..#
309a0 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
309b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
309c0 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a   true;..#endif..
309d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
309e0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
309f0 32 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44  20 && TRACE_HAND
30a00 4c 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  LE..            
30a10 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78 63  catch (SQLiteExc
30a20 65 70 74 69 6f 6e 20 65 29 0d 0a 23 65 6c 73 65  eption e)..#else
30a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
30a40 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
30a50 74 69 6f 6e 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  tion)..#endif.. 
30a60 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
30a70 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
30a80 30 20 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c  0 && TRACE_HANDL
30a90 45 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E..             
30aa0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30ab0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
30ad0 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
30ae0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
30af0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
30b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b10 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
30b20 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
30b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30b40 20 20 20 20 20 20 20 20 20 22 46 69 6e 69 73 68           "Finish
30b50 42 61 63 6b 75 70 3a 20 7b 30 7d 2c 20 65 78 63  Backup: {0}, exc
30b60 65 70 74 69 6f 6e 3a 20 7b 31 7d 22 2c 0d 0a 20  eption: {1}",.. 
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b80 20 20 20 20 20 20 20 68 61 6e 64 6c 65 2c 20 65         handle, e
30b90 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  )); /* throw */.
30ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30bb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30bc0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
30bd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
30bf0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
30c00 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30c10 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
30c20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
30c30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30c40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30c50 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
30c60 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64  (syncRoot)..#end
30c70 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
30c80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30c90 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
30ca0 6e 64 6c 65 41 73 49 6e 76 61 6c 69 64 28 29 3b  ndleAsInvalid();
30cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30cc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30cd0 20 7d 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   }..#if DEBUG.. 
30ce0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30cf0 6e 20 66 61 6c 73 65 3b 0d 0a 23 65 6c 73 65 0d  n false;..#else.
30d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
30d10 75 72 6e 20 74 72 75 65 3b 0d 0a 23 65 6e 64 69  urn true;..#endi
30d20 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
30d30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30d80 0a 0d 0a 23 69 66 20 43 4f 55 4e 54 5f 48 41 4e  ...#if COUNT_HAN
30d90 44 4c 45 0d 0a 20 20 20 20 20 20 20 20 70 75 62  DLE..        pub
30da0 6c 69 63 20 69 6e 74 20 57 61 73 52 65 6c 65 61  lic int WasRelea
30db0 73 65 64 4f 6b 28 29 0d 0a 20 20 20 20 20 20 20  sedOk()..       
30dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30dd0 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
30de0 65 64 2e 44 65 63 72 65 6d 65 6e 74 28 72 65 66  ed.Decrement(ref
30df0 20 44 65 62 75 67 44 61 74 61 2e 62 61 63 6b 75   DebugData.backu
30e00 70 43 6f 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20  pCount);..      
30e10 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
30e20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30e30 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
30e70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
30e80 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 49   override bool I
30e90 73 49 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20  sInvalid..      
30ea0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30eb0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
30ec0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
30ed0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
30ee0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
30ef0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
30f00 6f 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ot)..#endif..   
30f10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f30 20 20 20 20 72 65 74 75 72 6e 20 28 68 61 6e 64      return (hand
30f40 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le == IntPtr.Zer
30f50 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
30f60 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30f70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
30f80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
30f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fd0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47  ///....#if DEBUG
30fe0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
30ff0 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
31000 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
31010 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
31020 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
31030 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
31040 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
31050 74 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  t)..#endif..    
31060 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31070 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31080 6e 20 68 61 6e 64 6c 65 2e 54 6f 53 74 72 69 6e  n handle.ToStrin
31090 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
310a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
310b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 20  #endif..    }.. 
310c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
310d0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31120 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
31130 53 51 4c 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65  SQLiteBlobHandle
31140 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 20 50   Class..    // P
31150 72 6f 76 69 64 65 73 20 66 69 6e 61 6c 69 7a 61  rovides finaliza
31160 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 66 6f 72  tion support for
31170 20 75 6e 6d 61 6e 61 67 65 64 20 53 51 4c 69 74   unmanaged SQLit
31180 65 20 62 6c 6f 62 20 6f 62 6a 65 63 74 73 2e 0d  e blob objects..
31190 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  .    internal se
311a0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
311b0 65 42 6c 6f 62 48 61 6e 64 6c 65 20 3a 20 43 72  eBlobHandle : Cr
311c0 69 74 69 63 61 6c 48 61 6e 64 6c 65 0d 0a 20 20  iticalHandle..  
311d0 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
311e0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
311f0 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  RK..        inte
31200 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f 62  rnal readonly ob
31210 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20  ject syncRoot = 
31220 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 23  new object();..#
31230 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
31240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31280 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31290 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
312a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
312b0 6c 65 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20  le cnn;....     
312c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
312d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31310 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
31320 74 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65  tic implicit ope
31330 72 61 74 6f 72 20 49 6e 74 50 74 72 28 53 51 4c  rator IntPtr(SQL
31340 69 74 65 42 6c 6f 62 48 61 6e 64 6c 65 20 62 6c  iteBlobHandle bl
31350 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ob)..        {..
31360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31370 62 6c 6f 62 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  blob != null).. 
31380 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31390 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
313a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
313b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
313c0 6b 20 28 62 6c 6f 62 2e 73 79 6e 63 52 6f 6f 74  k (blob.syncRoot
313d0 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
313e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
313f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31400 20 20 72 65 74 75 72 6e 20 62 6c 6f 62 2e 68 61    return blob.ha
31410 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
31420 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
31430 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
31440 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
31450 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
31460 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
31470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
314a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
314b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
314c0 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
314d0 65 42 6c 6f 62 48 61 6e 64 6c 65 28 53 51 4c 69  eBlobHandle(SQLi
314e0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
314f0 6c 65 20 63 6e 6e 2c 20 49 6e 74 50 74 72 20 62  le cnn, IntPtr b
31500 6c 6f 62 29 0d 0a 20 20 20 20 20 20 20 20 20 20  lob)..          
31510 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
31520 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
31530 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
31540 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
31550 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
31560 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
31570 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31580 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
31590 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 20 20 20 20 20  nn = cnn;..     
315a0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 48 61             SetHa
315b0 6e 64 6c 65 28 62 6c 6f 62 29 3b 0d 0a 20 20 20  ndle(blob);..   
315c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
315d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
315e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
315f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31620 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31630 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
31640 74 65 42 6c 6f 62 48 61 6e 64 6c 65 28 29 0d 0a  teBlobHandle()..
31650 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
31660 73 65 28 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  se(IntPtr.Zero).
31670 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
31680 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20  COUNT_HANDLE..  
31690 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
316a0 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
316b0 72 65 66 20 44 65 62 75 67 44 61 74 61 2e 62 6c  ref DebugData.bl
316c0 6f 62 43 6f 75 6e 74 29 3b 0d 0a 23 65 6e 64 69  obCount);..#endi
316d0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
316e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
316f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
31730 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
31740 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 62 6f  cted override bo
31750 6f 6c 20 52 65 6c 65 61 73 65 48 61 6e 64 6c 65  ol ReleaseHandle
31760 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
31770 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
31780 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
31790 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
317a0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
317b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
317c0 6e 74 50 74 72 20 6c 6f 63 61 6c 48 61 6e 64 6c  ntPtr localHandl
317d0 65 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  e = Interlocked.
317e0 45 78 63 68 61 6e 67 65 28 0d 0a 20 20 20 20 20  Exchange(..     
317f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
31800 65 66 20 68 61 6e 64 6c 65 2c 20 49 6e 74 50 74  ef handle, IntPt
31810 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20  r.Zero);....    
31820 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31830 6c 6f 63 61 6c 48 61 6e 64 6c 65 20 21 3d 20 49  localHandle != I
31840 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31860 20 53 51 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73   SQLiteBase.Clos
31870 65 42 6c 6f 62 28 63 6e 6e 2c 20 6c 6f 63 61 6c  eBlob(cnn, local
31880 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20  Handle);....#if 
31890 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
318a0 26 26 20 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d  && TRACE_HANDLE.
318b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
318c0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
318d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
318e0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
318f0 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
31900 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
31910 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31930 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
31940 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
31950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31960 20 20 20 20 20 20 20 22 43 6c 6f 73 65 42 6c 6f         "CloseBlo
31970 62 3a 20 7b 30 7d 22 2c 20 6c 6f 63 61 6c 48 61  b: {0}", localHa
31980 6e 64 6c 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ndle)); /* throw
31990 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
319a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
319b0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
319d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
319e0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 65 6c    }..#endif..#el
319f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
31a00 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
31a10 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
31a20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31a30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31a40 68 61 6e 64 6c 65 20 21 3d 20 49 6e 74 50 74 72  handle != IntPtr
31a50 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
31a60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a80 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
31a90 65 2e 43 6c 6f 73 65 42 6c 6f 62 28 63 6e 6e 2c  e.CloseBlob(cnn,
31aa0 20 68 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20   handle);..     
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ac0 20 20 20 53 65 74 48 61 6e 64 6c 65 28 49 6e 74     SetHandle(Int
31ad0 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20  Ptr.Zero);..    
31ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31af0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
31b00 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 23 69     }..#endif..#i
31b10 66 20 43 4f 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a  f COUNT_HANDLE..
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b30 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72  Interlocked.Decr
31b40 65 6d 65 6e 74 28 72 65 66 20 44 65 62 75 67 44  ement(ref DebugD
31b50 61 74 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d  ata.blobCount);.
31b60 0a 23 65 6e 64 69 66 0d 0a 23 69 66 20 44 45 42  .#endif..#if DEB
31b70 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
31b80 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
31b90 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
31ba0 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 21 4e 45        }..#if !NE
31bb0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
31bc0 54 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20  TRACE_HANDLE..  
31bd0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
31be0 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
31bf0 20 65 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20   e)..#else..    
31c00 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 53          catch (S
31c10 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 29 0d  QLiteException).
31c20 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
31c30 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54       {..#if !NET
31c40 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
31c50 52 41 43 45 5f 48 41 4e 44 4c 45 0d 0a 20 20 20  RACE_HANDLE..   
31c60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
31c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31c80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31c90 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
31ca0 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d  riteLine(HelperM
31cb0 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
31cc0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
31cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
31ce0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
31cf0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
31d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d10 20 20 20 22 43 6c 6f 73 65 42 6c 6f 62 3a 20 7b     "CloseBlob: {
31d20 30 7d 2c 20 65 78 63 65 70 74 69 6f 6e 3a 20 7b  0}, exception: {
31d30 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
31d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                ha
31d50 6e 64 6c 65 2c 20 65 29 29 3b 20 2f 2a 20 74 68  ndle, e)); /* th
31d60 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
31d70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31d80 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
31d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31da0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31db0 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
31dc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31dd0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
31de0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
31df0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
31e00 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
31e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31e20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
31e30 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
31e40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e60 20 20 53 65 74 48 61 6e 64 6c 65 41 73 49 6e 76    SetHandleAsInv
31e70 61 6c 69 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  alid();..       
31e80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31e90 20 20 20 20 20 20 20 20 7d 0d 0a 23 69 66 20 44          }..#if D
31ea0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
31eb0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
31ec0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
31ed0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
31ee0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
31ef0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
31f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 43 4f  //////....#if CO
31f50 55 4e 54 5f 48 41 4e 44 4c 45 0d 0a 20 20 20 20  UNT_HANDLE..    
31f60 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 57      public int W
31f70 61 73 52 65 6c 65 61 73 65 64 4f 6b 28 29 0d 0a  asReleasedOk()..
31f80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31f90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
31fa0 74 65 72 6c 6f 63 6b 65 64 2e 44 65 63 72 65 6d  terlocked.Decrem
31fb0 65 6e 74 28 72 65 66 20 44 65 62 75 67 44 61 74  ent(ref DebugDat
31fc0 61 2e 62 6c 6f 62 43 6f 75 6e 74 29 3b 0d 0a 20  a.blobCount);.. 
31fd0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
31fe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
31ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32030 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
32040 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
32050 6f 6f 6c 20 49 73 49 6e 76 61 6c 69 64 0d 0a 20  ool IsInvalid.. 
32060 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32070 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
32080 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
32090 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
320a0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
320b0 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
320c0 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66  yncRoot)..#endif
320d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
320e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
320f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32100 28 68 61 6e 64 6c 65 20 3d 3d 20 49 6e 74 50 74  (handle == IntPt
32110 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20 20 20 20  r.Zero);..      
32120 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
32130 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32140 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32190 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
321a0 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 70  DEBUG..        p
321b0 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
321c0 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
321d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
321e0 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
321f0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
32200 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
32210 6e 63 52 6f 6f 74 29 0d 0a 23 65 6e 64 69 66 0d  ncRoot)..#endif.
32220 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32240 72 65 74 75 72 6e 20 68 61 6e 64 6c 65 2e 54 6f  return handle.To
32250 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
32260 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
32270 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
32280 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
32290 6f 6e 0d 0a 7d 0d 0a                             on..}..